summaryrefslogtreecommitdiffstats
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
parent1337055235e122bde9cb56b2fecf022329b6d587 (diff)
downloadibus-libpinyin-ba9f507566d0b7acd48a9e0b3a1c4ffda383b922.tar.gz
ibus-libpinyin-ba9f507566d0b7acd48a9e0b3a1c4ffda383b922.tar.xz
ibus-libpinyin-ba9f507566d0b7acd48a9e0b3a1c4ffda383b922.zip
re-factor code
-rw-r--r--src/PYPBopomofoEngine.cc15
-rw-r--r--src/PYPPhoneticEditor.cc6
-rw-r--r--src/PYPPinyinEngine.cc15
-rw-r--r--src/PYPSuggestionEditor.cc36
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 */