summaryrefslogtreecommitdiffstats
path: root/src/PYPSuggestionEditor.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2018-06-22 10:17:04 +0800
committerPeng Wu <alexepico@gmail.com>2018-06-22 10:17:04 +0800
commitba9f507566d0b7acd48a9e0b3a1c4ffda383b922 (patch)
tree01a300751b55e857ce82cf603d353b49133a5261 /src/PYPSuggestionEditor.cc
parent1337055235e122bde9cb56b2fecf022329b6d587 (diff)
downloadibus-libpinyin-ba9f507566d0b7acd48a9e0b3a1c4ffda383b922.tar.gz
ibus-libpinyin-ba9f507566d0b7acd48a9e0b3a1c4ffda383b922.tar.xz
ibus-libpinyin-ba9f507566d0b7acd48a9e0b3a1c4ffda383b922.zip
re-factor code
Diffstat (limited to 'src/PYPSuggestionEditor.cc')
-rw-r--r--src/PYPSuggestionEditor.cc36
1 files changed, 20 insertions, 16 deletions
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 */