summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/PYEditor.cc6
-rw-r--r--src/PYEditor.h2
-rw-r--r--src/PYPBopomofoEngine.cc3
-rw-r--r--src/PYPEnhancedCandidates.h20
-rw-r--r--src/PYPLibPinyinCandidates.cc4
-rw-r--r--src/PYPLibPinyinCandidates.h2
-rw-r--r--src/PYPLuaConverterCandidates.cc5
-rw-r--r--src/PYPLuaConverterCandidates.h2
-rw-r--r--src/PYPLuaTriggerCandidates.cc2
-rw-r--r--src/PYPLuaTriggerCandidates.h2
-rw-r--r--src/PYPPhoneticEditor.cc22
-rw-r--r--src/PYPPhoneticEditor.h2
-rw-r--r--src/PYPPinyinEngine.cc3
-rw-r--r--src/PYPSuggestionCandidates.cc2
-rw-r--r--src/PYPSuggestionCandidates.h2
-rw-r--r--src/PYPSuggestionEditor.cc24
-rw-r--r--src/PYPSuggestionEditor.h2
-rw-r--r--src/PYPTradCandidates.cc5
-rw-r--r--src/PYPTradCandidates.h2
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;