diff options
author | Peng Wu <alexepico@gmail.com> | 2021-05-17 15:15:26 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2021-05-17 15:22:59 +0800 |
commit | be28b3a410251d9d78265da7723c8372dc5c8594 (patch) | |
tree | 85973380abd8287b9d9c71eb697783f8d41baebd | |
parent | be97321b6dd700796f97697428a14a26b234eadd (diff) | |
download | ibus-libpinyin-be28b3a410251d9d78265da7723c8372dc5c8594.tar.gz |
Remember cloud input
-rw-r--r-- | src/PYLibPinyin.cc | 10 | ||||
-rw-r--r-- | src/PYLibPinyin.h | 1 | ||||
-rw-r--r-- | src/PYPCloudCandidates.cc | 6 | ||||
-rw-r--r-- | src/PYPLibPinyinCandidates.cc | 2 |
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; |