diff options
author | Peng Wu <alexepico@gmail.com> | 2018-10-26 10:39:11 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2018-10-26 10:39:11 +0800 |
commit | 17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3 (patch) | |
tree | 8fd0c880e9522fe1aba8bf8e3c41f87f4f9e8c2f /src/PYPPinyinEditor.cc | |
parent | 09ea48d54d1dca187ec6ab558ec8a2ce60b3ac1a (diff) | |
download | ibus-libpinyin-17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3.tar.gz ibus-libpinyin-17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3.tar.xz ibus-libpinyin-17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3.zip |
fixes updatePreeditText method
Diffstat (limited to 'src/PYPPinyinEditor.cc')
-rw-r--r-- | src/PYPPinyinEditor.cc | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/PYPPinyinEditor.cc b/src/PYPPinyinEditor.cc index e0518d1..d2741b0 100644 --- a/src/PYPPinyinEditor.cc +++ b/src/PYPPinyinEditor.cc @@ -228,22 +228,27 @@ PinyinEditor::commit (const gchar *str) void PinyinEditor::updatePreeditText () { + guint num = 0; + pinyin_get_n_candidate (m_instance, &num); + /* preedit text = guessed sentence + un-parsed pinyin text */ - if (G_UNLIKELY (m_text.empty () || m_candidates.empty () )) { + if (G_UNLIKELY (m_text.empty () || 0 == num)) { hidePreeditText (); return; } m_buffer.clear (); - EnhancedCandidate & candidate = m_candidates[0]; - String sentence = candidate.m_display_string; - if (CANDIDATE_NBEST_MATCH == candidate.m_candidate_type) { - if (m_props.modeSimp ()) { - m_buffer<<sentence; - } else { - SimpTradConverter::simpToTrad (sentence, m_buffer); - } + /* probe nbest match candidate */ + lookup_candidate_type_t type; + lookup_candidate_t * candidate = NULL; + pinyin_get_candidate (m_instance, 0, &candidate); + pinyin_get_candidate_type (m_instance, candidate, &type); + + gchar * sentence = NULL; + if (NBEST_MATCH_CANDIDATE == type) { + pinyin_get_sentence (m_instance, 0, &sentence); + m_buffer<<m_candidates[0].m_display_string; } /* append rest text */ @@ -256,7 +261,7 @@ PinyinEditor::updatePreeditText () size_t offset = 0; guint cursor = getPinyinCursor (); - pinyin_get_character_offset(m_instance, sentence.c_str (), cursor, &offset); + pinyin_get_character_offset(m_instance, sentence, cursor, &offset); Editor::updatePreeditText (preedit_text, offset, TRUE); } |