diff options
-rw-r--r-- | src/PYEditor.cc | 6 | ||||
-rw-r--r-- | src/PYEditor.h | 2 | ||||
-rw-r--r-- | src/PYPBopomofoEngine.cc | 3 | ||||
-rw-r--r-- | src/PYPEnhancedCandidates.h | 20 | ||||
-rw-r--r-- | src/PYPLibPinyinCandidates.cc | 4 | ||||
-rw-r--r-- | src/PYPLibPinyinCandidates.h | 2 | ||||
-rw-r--r-- | src/PYPLuaConverterCandidates.cc | 5 | ||||
-rw-r--r-- | src/PYPLuaConverterCandidates.h | 2 | ||||
-rw-r--r-- | src/PYPLuaTriggerCandidates.cc | 2 | ||||
-rw-r--r-- | src/PYPLuaTriggerCandidates.h | 2 | ||||
-rw-r--r-- | src/PYPPhoneticEditor.cc | 22 | ||||
-rw-r--r-- | src/PYPPhoneticEditor.h | 2 | ||||
-rw-r--r-- | src/PYPPinyinEngine.cc | 3 | ||||
-rw-r--r-- | src/PYPSuggestionCandidates.cc | 2 | ||||
-rw-r--r-- | src/PYPSuggestionCandidates.h | 2 | ||||
-rw-r--r-- | src/PYPSuggestionEditor.cc | 24 | ||||
-rw-r--r-- | src/PYPSuggestionEditor.h | 2 | ||||
-rw-r--r-- | src/PYPTradCandidates.cc | 5 | ||||
-rw-r--r-- | src/PYPTradCandidates.h | 2 |
19 files changed, 46 insertions, 66 deletions
diff --git a/src/PYEditor.cc b/src/PYEditor.cc index 8186408..e619dda 100644 --- a/src/PYEditor.cc +++ b/src/PYEditor.cc @@ -153,5 +153,11 @@ Editor::update (void) } } +int +Editor::selectCandidateInternal (EnhancedCandidate & candidate) +{ + return SELECT_CANDIDATE_ALREADY_HANDLED; +} + }; diff --git a/src/PYEditor.h b/src/PYEditor.h index 6e32275..e5b2319 100644 --- a/src/PYEditor.h +++ b/src/PYEditor.h @@ -151,7 +151,7 @@ protected: } protected: - virtual SelectCandidateAction selectCandidateInternal (EnhancedCandidate & candidate) { return SELECT_CANDIDATE_ALREADY_HANDLED; } + virtual int selectCandidateInternal (EnhancedCandidate & candidate); /* signals */ signal <void (Text &)> m_signal_commit_text; diff --git a/src/PYPBopomofoEngine.cc b/src/PYPBopomofoEngine.cc index e4e9bc7..eb689cc 100644 --- a/src/PYPBopomofoEngine.cc +++ b/src/PYPBopomofoEngine.cc @@ -290,9 +290,6 @@ 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 ()) { - 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 (); diff --git a/src/PYPEnhancedCandidates.h b/src/PYPEnhancedCandidates.h index 9a7781e..02090cf 100644 --- a/src/PYPEnhancedCandidates.h +++ b/src/PYPEnhancedCandidates.h @@ -43,16 +43,20 @@ enum CandidateType { }; enum SelectCandidateAction { - SELECT_CANDIDATE_ALREADY_HANDLED = 1, + SELECT_CANDIDATE_ALREADY_HANDLED = 0x0, /* commit the text without change. */ - SELECT_CANDIDATE_COMMIT, - /* modify the candidate recursively for candidates process chain, - then commit the changed text. */ - SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT, - /* need to call updateCandidates method in class PhoneticEditor. */ - SELECT_CANDIDATE_UPDATE_ALL + SELECT_CANDIDATE_COMMIT = 0x1, + /* modify the current candidate in place */ + SELECT_CANDIDATE_MODIFY_IN_PLACE = 0x2, + /* need to call update method in class Editor. */ + SELECT_CANDIDATE_UPDATE = 0x4 }; +/* modify the candidate recursively for candidates process chain, + then commit the changed text. */ +#define SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT \ + (SELECT_CANDIDATE_MODIFY_IN_PLACE|SELECT_CANDIDATE_COMMIT) + struct EnhancedCandidate { CandidateType m_candidate_type; guint m_candidate_id; @@ -65,7 +69,7 @@ class EnhancedCandidates { public: gboolean processCandidates (std::vector<EnhancedCandidate> & candidates); - SelectCandidateAction selectCandidate (EnhancedCandidate & enhanced); + int selectCandidate (EnhancedCandidate & enhanced); protected: diff --git a/src/PYPLibPinyinCandidates.cc b/src/PYPLibPinyinCandidates.cc index 91865be..39bd9ad 100644 --- a/src/PYPLibPinyinCandidates.cc +++ b/src/PYPLibPinyinCandidates.cc @@ -73,7 +73,7 @@ LibPinyinCandidates::processCandidates (std::vector<EnhancedCandidate> & candida return TRUE; } -SelectCandidateAction +int LibPinyinCandidates::selectCandidate (EnhancedCandidate & enhanced) { pinyin_instance_t * instance = m_editor->m_instance; @@ -126,5 +126,5 @@ LibPinyinCandidates::selectCandidate (EnhancedCandidate & enhanced) pinyin_get_pinyin_key_rest_positions (instance, pos, &begin, NULL); m_editor->m_cursor = begin; - return SELECT_CANDIDATE_UPDATE_ALL; + return SELECT_CANDIDATE_UPDATE; } diff --git a/src/PYPLibPinyinCandidates.h b/src/PYPLibPinyinCandidates.h index 3b20a7e..e9c50b4 100644 --- a/src/PYPLibPinyinCandidates.h +++ b/src/PYPLibPinyinCandidates.h @@ -37,7 +37,7 @@ public: public: gboolean processCandidates (std::vector<EnhancedCandidate> & candidates); - SelectCandidateAction selectCandidate (EnhancedCandidate & enhanced); + int selectCandidate (EnhancedCandidate & enhanced); }; }; diff --git a/src/PYPLuaConverterCandidates.cc b/src/PYPLuaConverterCandidates.cc index dcd7390..e47ee71 100644 --- a/src/PYPLuaConverterCandidates.cc +++ b/src/PYPLuaConverterCandidates.cc @@ -76,7 +76,7 @@ LuaConverterCandidates::processCandidates (std::vector<EnhancedCandidate> & cand return TRUE; } -SelectCandidateAction +int LuaConverterCandidates::selectCandidate (EnhancedCandidate & enhanced) { guint id = enhanced.m_candidate_id; @@ -88,8 +88,7 @@ LuaConverterCandidates::selectCandidate (EnhancedCandidate & enhanced) if (G_UNLIKELY (id >= m_candidates.size ())) return SELECT_CANDIDATE_ALREADY_HANDLED; - SelectCandidateAction action = SELECT_CANDIDATE_ALREADY_HANDLED; - action = m_editor->selectCandidateInternal (m_candidates[id]); + int action = m_editor->selectCandidateInternal (m_candidates[id]); if (SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT == action) { ibus_engine_plugin_call (m_lua_plugin, converter, diff --git a/src/PYPLuaConverterCandidates.h b/src/PYPLuaConverterCandidates.h index 5290c15..be0204b 100644 --- a/src/PYPLuaConverterCandidates.h +++ b/src/PYPLuaConverterCandidates.h @@ -43,7 +43,7 @@ public: gboolean processCandidates (std::vector<EnhancedCandidate> & candidates); - SelectCandidateAction selectCandidate (EnhancedCandidate & enhanced); + int selectCandidate (EnhancedCandidate & enhanced); protected: std::vector<EnhancedCandidate> m_candidates; diff --git a/src/PYPLuaTriggerCandidates.cc b/src/PYPLuaTriggerCandidates.cc index 9109b74..9201f11 100644 --- a/src/PYPLuaTriggerCandidates.cc +++ b/src/PYPLuaTriggerCandidates.cc @@ -91,7 +91,7 @@ LuaTriggerCandidates::processCandidates (std::vector<EnhancedCandidate> & candid return FALSE; } -SelectCandidateAction +int LuaTriggerCandidates::selectCandidate (EnhancedCandidate & enhanced) { assert (CANDIDATE_LUA_TRIGGER == enhanced.m_candidate_type); diff --git a/src/PYPLuaTriggerCandidates.h b/src/PYPLuaTriggerCandidates.h index 8ca5b46..bf926e8 100644 --- a/src/PYPLuaTriggerCandidates.h +++ b/src/PYPLuaTriggerCandidates.h @@ -40,7 +40,7 @@ public: gboolean processCandidates (std::vector<EnhancedCandidate> & candidates); - SelectCandidateAction selectCandidate (EnhancedCandidate & enhanced); + int selectCandidate (EnhancedCandidate & enhanced); protected: Pointer<IBusEnginePlugin> m_lua_plugin; diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc index eb1f341..b66cd63 100644 --- a/src/PYPPhoneticEditor.cc +++ b/src/PYPPhoneticEditor.cc @@ -352,7 +352,7 @@ PhoneticEditor::getLookupCursor (void) return lookup_cursor; } -SelectCandidateAction +int PhoneticEditor::selectCandidateInternal (EnhancedCandidate & candidate) { switch (candidate.m_candidate_type) { @@ -433,27 +433,15 @@ PhoneticEditor::selectCandidate (guint index) return FALSE; EnhancedCandidate & candidate = m_candidates[index]; - SelectCandidateAction action = selectCandidateInternal (candidate); + int action = selectCandidateInternal (candidate); - switch (action) { - case SELECT_CANDIDATE_ALREADY_HANDLED: - return TRUE; - - case SELECT_CANDIDATE_COMMIT: - case SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT: { + if (action & SELECT_CANDIDATE_COMMIT) commit (candidate.m_display_string.c_str ()); - return TRUE; - } - case SELECT_CANDIDATE_UPDATE_ALL: + if (action & SELECT_CANDIDATE_UPDATE) update (); - return TRUE; - default: - assert (FALSE); - } - - return FALSE; + return TRUE; } gboolean diff --git a/src/PYPPhoneticEditor.h b/src/PYPPhoneticEditor.h index ce9f973..3a695b9 100644 --- a/src/PYPPhoneticEditor.h +++ b/src/PYPPhoneticEditor.h @@ -66,7 +66,7 @@ public: gboolean setLuaPlugin (IBusEnginePlugin *plugin); protected: - virtual SelectCandidateAction selectCandidateInternal (EnhancedCandidate & candidate); + virtual int selectCandidateInternal (EnhancedCandidate & candidate); gboolean selectCandidate (guint i); gboolean selectCandidateInPage (guint i); diff --git a/src/PYPPinyinEngine.cc b/src/PYPPinyinEngine.cc index 236de18..d41a818 100644 --- a/src/PYPPinyinEngine.cc +++ b/src/PYPPinyinEngine.cc @@ -432,9 +432,6 @@ 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 ()) { - 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 (); diff --git a/src/PYPSuggestionCandidates.cc b/src/PYPSuggestionCandidates.cc index 0dfd3ec..d68c23a 100644 --- a/src/PYPSuggestionCandidates.cc +++ b/src/PYPSuggestionCandidates.cc @@ -56,7 +56,7 @@ SuggestionCandidates::processCandidates (std::vector<EnhancedCandidate> & candid return TRUE; } -SelectCandidateAction +int SuggestionCandidates::selectCandidate (EnhancedCandidate & enhanced) { pinyin_instance_t * instance = m_editor->m_instance; diff --git a/src/PYPSuggestionCandidates.h b/src/PYPSuggestionCandidates.h index f4a12d5..e0424d1 100644 --- a/src/PYPSuggestionCandidates.h +++ b/src/PYPSuggestionCandidates.h @@ -37,7 +37,7 @@ public: public: gboolean processCandidates (std::vector<EnhancedCandidate> & candidates); - SelectCandidateAction selectCandidate (EnhancedCandidate & enhanced); + int selectCandidate (EnhancedCandidate & enhanced); }; }; diff --git a/src/PYPSuggestionEditor.cc b/src/PYPSuggestionEditor.cc index 502921a..e5bacec 100644 --- a/src/PYPSuggestionEditor.cc +++ b/src/PYPSuggestionEditor.cc @@ -198,28 +198,18 @@ SuggestionEditor::selectCandidate (guint index) return FALSE; EnhancedCandidate & candidate = m_candidates[index]; - SelectCandidateAction action = selectCandidateInternal (candidate); + int action = selectCandidateInternal (candidate); - switch (action) { - case SELECT_CANDIDATE_ALREADY_HANDLED: - return TRUE; - - case SELECT_CANDIDATE_COMMIT: - case SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT: { - Text text (candidate.m_display_string.c_str ()); + if (action & SELECT_CANDIDATE_COMMIT) { + m_text = candidate.m_display_string.c_str (); + Text text (m_text); commitText (text); - return TRUE; } - case SELECT_CANDIDATE_UPDATE_ALL: + if (action & SELECT_CANDIDATE_UPDATE) update (); - return TRUE; - - default: - assert (FALSE); - } - return FALSE; + return TRUE; } /* Auxiliary Functions */ @@ -330,7 +320,7 @@ SuggestionEditor::fillLookupTable () return TRUE; } -SelectCandidateAction +int SuggestionEditor::selectCandidateInternal (EnhancedCandidate & candidate) { switch (candidate.m_candidate_type) { diff --git a/src/PYPSuggestionEditor.h b/src/PYPSuggestionEditor.h index fabb703..8ad0a60 100644 --- a/src/PYPSuggestionEditor.h +++ b/src/PYPSuggestionEditor.h @@ -54,7 +54,7 @@ public: gboolean setLuaPlugin (IBusEnginePlugin *plugin); protected: - virtual SelectCandidateAction selectCandidateInternal (EnhancedCandidate & candidate); + virtual int selectCandidateInternal (EnhancedCandidate & candidate); private: void updateLookupTable (void); diff --git a/src/PYPTradCandidates.cc b/src/PYPTradCandidates.cc index d651168..acfc271 100644 --- a/src/PYPTradCandidates.cc +++ b/src/PYPTradCandidates.cc @@ -49,7 +49,7 @@ TraditionalCandidates::processCandidates (std::vector<EnhancedCandidate> & candi return TRUE; } -SelectCandidateAction +int TraditionalCandidates::selectCandidate (EnhancedCandidate & enhanced) { guint id = enhanced.m_candidate_id; @@ -58,8 +58,7 @@ TraditionalCandidates::selectCandidate (EnhancedCandidate & enhanced) if (G_UNLIKELY (id >= m_candidates.size ())) return SELECT_CANDIDATE_ALREADY_HANDLED; - SelectCandidateAction action = SELECT_CANDIDATE_ALREADY_HANDLED; - action = m_editor->selectCandidateInternal (m_candidates[id]); + int action = m_editor->selectCandidateInternal (m_candidates[id]); if (SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT == action) { String trad; diff --git a/src/PYPTradCandidates.h b/src/PYPTradCandidates.h index 7114bdc..f3e1a56 100644 --- a/src/PYPTradCandidates.h +++ b/src/PYPTradCandidates.h @@ -38,7 +38,7 @@ public: public: gboolean processCandidates (std::vector<EnhancedCandidate> & candidates); - SelectCandidateAction selectCandidate (EnhancedCandidate & enhanced); + int selectCandidate (EnhancedCandidate & enhanced); protected: std::vector<EnhancedCandidate> m_candidates; |