diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/PYPBopomofoEngine.cc | 15 | ||||
-rw-r--r-- | src/PYPPhoneticEditor.cc | 6 | ||||
-rw-r--r-- | src/PYPPinyinEngine.cc | 15 | ||||
-rw-r--r-- | src/PYPSuggestionEditor.cc | 36 |
4 files changed, 35 insertions, 37 deletions
diff --git a/src/PYPBopomofoEngine.cc b/src/PYPBopomofoEngine.cc index 24de9eb..e4e9bc7 100644 --- a/src/PYPBopomofoEngine.cc +++ b/src/PYPBopomofoEngine.cc @@ -290,15 +290,12 @@ BopomofoEngine::commitText (Text & text) if (m_input_mode != MODE_INIT && m_input_mode != MODE_SUGGESTION) { m_input_mode = MODE_INIT; } else if (BopomofoConfig::instance ().showSuggestion ()) { - if (m_input_mode == MODE_INIT) { - m_input_mode = MODE_SUGGESTION; - m_editors[m_input_mode]->setText (text.text (), 0); - m_editors[m_input_mode]->update (); - } else if (m_input_mode == MODE_SUGGESTION) { - m_editors[m_input_mode]->setText (text.text (), 0); - m_editors[m_input_mode]->update (); - } else - assert (FALSE); + assert (m_input_mode == MODE_INIT || + m_input_mode == MODE_SUGGESTION); + + m_input_mode = MODE_SUGGESTION; + m_editors[m_input_mode]->setText (text.text (), 0); + m_editors[m_input_mode]->update (); } else { m_input_mode = MODE_INIT; } diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc index 4655533..eb1f341 100644 --- a/src/PYPPhoneticEditor.cc +++ b/src/PYPPhoneticEditor.cc @@ -427,12 +427,12 @@ PhoneticEditor::selectCandidate (guint i) #endif gboolean -PhoneticEditor::selectCandidate (guint i) +PhoneticEditor::selectCandidate (guint index) { - if (G_UNLIKELY (i >= m_candidates.size ())) + if (G_UNLIKELY (index >= m_candidates.size ())) return FALSE; - EnhancedCandidate & candidate = m_candidates[i]; + EnhancedCandidate & candidate = m_candidates[index]; SelectCandidateAction action = selectCandidateInternal (candidate); switch (action) { diff --git a/src/PYPPinyinEngine.cc b/src/PYPPinyinEngine.cc index 488256a..236de18 100644 --- a/src/PYPPinyinEngine.cc +++ b/src/PYPPinyinEngine.cc @@ -432,15 +432,12 @@ PinyinEngine::commitText (Text & text) if (m_input_mode != MODE_INIT && m_input_mode != MODE_SUGGESTION) { m_input_mode = MODE_INIT; } else if (PinyinConfig::instance ().showSuggestion ()) { - if (m_input_mode == MODE_INIT) { - m_input_mode = MODE_SUGGESTION; - m_editors[m_input_mode]->setText (text.text (), 0); - m_editors[m_input_mode]->update (); - } else if (m_input_mode == MODE_SUGGESTION) { - m_editors[m_input_mode]->setText (text.text (), 0); - m_editors[m_input_mode]->update (); - } else - assert (FALSE); + assert (m_input_mode == MODE_INIT || + m_input_mode == MODE_SUGGESTION); + + m_input_mode = MODE_SUGGESTION; + m_editors[m_input_mode]->setText (text.text (), 0); + m_editors[m_input_mode]->update (); } else { m_input_mode = MODE_INIT; } diff --git a/src/PYPSuggestionEditor.cc b/src/PYPSuggestionEditor.cc index 0dfc85a..502921a 100644 --- a/src/PYPSuggestionEditor.cc +++ b/src/PYPSuggestionEditor.cc @@ -194,28 +194,32 @@ SuggestionEditor::selectCandidateInPage (guint index) gboolean SuggestionEditor::selectCandidate (guint index) { - guint len = 0; - pinyin_get_n_candidate (m_instance, &len); - - if (index >= len) + if (G_UNLIKELY (index >= m_candidates.size ())) return FALSE; - lookup_candidate_t *candidate = NULL; - pinyin_get_candidate (m_instance, index, &candidate); + EnhancedCandidate & candidate = m_candidates[index]; + SelectCandidateAction action = selectCandidateInternal (candidate); - lookup_candidate_type_t type; - pinyin_get_candidate_type (m_instance, candidate, &type); - assert (PREDICTED_CANDIDATE == type); + switch (action) { + case SELECT_CANDIDATE_ALREADY_HANDLED: + return TRUE; - const gchar *phrase_string = NULL; - pinyin_get_candidate_string (m_instance, candidate, &phrase_string); + case SELECT_CANDIDATE_COMMIT: + case SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT: { + Text text (candidate.m_display_string.c_str ()); + commitText (text); + return TRUE; + } - Text text (phrase_string); - commitText (text); + case SELECT_CANDIDATE_UPDATE_ALL: + update (); + return TRUE; - m_text = phrase_string; - update (); - return TRUE; + default: + assert (FALSE); + } + + return FALSE; } /* Auxiliary Functions */ |