summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2021-05-17 15:15:26 +0800
committerPeng Wu <alexepico@gmail.com>2021-05-17 15:22:59 +0800
commitbe28b3a410251d9d78265da7723c8372dc5c8594 (patch)
tree85973380abd8287b9d9c71eb697783f8d41baebd
parentbe97321b6dd700796f97697428a14a26b234eadd (diff)
downloadibus-libpinyin-be28b3a410251d9d78265da7723c8372dc5c8594.tar.gz
Remember cloud input
-rw-r--r--src/PYLibPinyin.cc10
-rw-r--r--src/PYLibPinyin.h1
-rw-r--r--src/PYPCloudCandidates.cc6
-rw-r--r--src/PYPLibPinyinCandidates.cc2
4 files changed, 18 insertions, 1 deletions
diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc
index 9011594..ff43f1a 100644
--- a/src/PYLibPinyin.cc
+++ b/src/PYLibPinyin.cc
@@ -354,6 +354,16 @@ LibPinyinBackEnd::rememberUserInput (pinyin_instance_t *instance,
}
gboolean
+LibPinyinBackEnd::rememberCloudInput (pinyin_instance_t *instance,
+ const gchar *pinyin,
+ const gchar *phrase)
+{
+ pinyin_parse_more_full_pinyins (instance, pinyin);
+ pinyin_remember_user_input (instance, phrase, -1);
+ return TRUE;
+}
+
+gboolean
LibPinyinBackEnd::timeoutCallback (gpointer data)
{
LibPinyinBackEnd *self = static_cast<LibPinyinBackEnd *> (data);
diff --git a/src/PYLibPinyin.h b/src/PYLibPinyin.h
index aa6dfcc..e623f27 100644
--- a/src/PYLibPinyin.h
+++ b/src/PYLibPinyin.h
@@ -55,6 +55,7 @@ public:
gboolean clearPinyinUserData (const char *target);
gboolean rememberUserInput (pinyin_instance_t *instance, const gchar *phrase);
+ gboolean rememberCloudInput (pinyin_instance_t *instance, const gchar *pinyin, const gchar *phrase);
/* use static initializer in C++. */
static LibPinyinBackEnd & instance (void) { return *m_instance; }
diff --git a/src/PYPCloudCandidates.cc b/src/PYPCloudCandidates.cc
index 430db4f..901e431 100644
--- a/src/PYPCloudCandidates.cc
+++ b/src/PYPCloudCandidates.cc
@@ -25,6 +25,7 @@
#include "PYConfig.h"
#include "PYPPhoneticEditor.h"
#include "PYPPinyinEditor.h"
+#include "PYLibPinyin.h"
#include <assert.h>
#include <pinyin.h>
@@ -477,6 +478,11 @@ CloudCandidates::selectCandidate (EnhancedCandidate & enhanced)
enhanced.m_display_string =
m_candidates[enhanced.m_candidate_id].m_display_string;
+ /* remember the cloud input */
+ if (m_editor->m_config.rememberEveryInput ())
+ LibPinyinBackEnd::instance ().rememberCloudInput (m_editor->m_instance, m_last_requested_pinyin.c_str (), enhanced.m_display_string.c_str ());
+ LibPinyinBackEnd::instance ().modified ();
+
/* modify in-place and commit */
return SELECT_CANDIDATE_COMMIT | SELECT_CANDIDATE_MODIFY_IN_PLACE;
}
diff --git a/src/PYPLibPinyinCandidates.cc b/src/PYPLibPinyinCandidates.cc
index bb6af8a..e64c3df 100644
--- a/src/PYPLibPinyinCandidates.cc
+++ b/src/PYPLibPinyinCandidates.cc
@@ -109,7 +109,7 @@ LibPinyinCandidates::selectCandidate (EnhancedCandidate & enhanced)
pinyin_get_sentence (instance, index, &str);
if (m_editor->m_config.rememberEveryInput ())
LibPinyinBackEnd::instance ().rememberUserInput (instance, str);
- LibPinyinBackEnd::instance ().modified();
+ LibPinyinBackEnd::instance ().modified ();
g_free (str);
return SELECT_CANDIDATE_COMMIT;