summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2018-10-26 10:39:11 +0800
committerPeng Wu <alexepico@gmail.com>2018-10-26 10:39:11 +0800
commit17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3 (patch)
tree8fd0c880e9522fe1aba8bf8e3c41f87f4f9e8c2f
parent09ea48d54d1dca187ec6ab558ec8a2ce60b3ac1a (diff)
downloadibus-libpinyin-17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3.tar.gz
ibus-libpinyin-17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3.tar.xz
ibus-libpinyin-17ec73fad0f05cb23c2213ddc0ec2b798bbe6ab3.zip
fixes updatePreeditText method
-rw-r--r--src/PYPBopomofoEditor.cc25
-rw-r--r--src/PYPPinyinEditor.cc25
2 files changed, 30 insertions, 20 deletions
diff --git a/src/PYPBopomofoEditor.cc b/src/PYPBopomofoEditor.cc
index 8bf96e9..55eb130 100644
--- a/src/PYPBopomofoEditor.cc
+++ b/src/PYPBopomofoEditor.cc
@@ -342,22 +342,27 @@ BopomofoEditor::commit (const gchar *str)
void
BopomofoEditor::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;
}
/* text after pinyin */
@@ -384,7 +389,7 @@ BopomofoEditor::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);
}
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);
}