summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2014-07-01 10:36:00 +0800
committerPeng Wu <alexepico@gmail.com>2014-07-01 10:38:03 +0800
commit81f6d00c8a43ae0229af0f9dfdcaa654b111ece6 (patch)
tree73cc90ac0be4b71565d34d01b5e423d060d303e1
parent333f5553b0fdd34d7347cd7baaf3d00393138e40 (diff)
downloadibus-libzhuyin-81f6d00c8a43ae0229af0f9dfdcaa654b111ece6.tar.gz
ibus-libzhuyin-81f6d00c8a43ae0229af0f9dfdcaa654b111ece6.tar.xz
ibus-libzhuyin-81f6d00c8a43ae0229af0f9dfdcaa654b111ece6.zip
begin to write method processShowCandidateKey
-rw-r--r--src/ZYZPhoneticEditor.cc41
-rw-r--r--src/ZYZPhoneticEditor.h1
-rw-r--r--src/ZYZPinyinEditor.cc3
-rw-r--r--src/ZYZZhuyinEditor.cc3
4 files changed, 47 insertions, 1 deletions
diff --git a/src/ZYZPhoneticEditor.cc b/src/ZYZPhoneticEditor.cc
index a37f337..092af4f 100644
--- a/src/ZYZPhoneticEditor.cc
+++ b/src/ZYZPhoneticEditor.cc
@@ -78,7 +78,7 @@ PhoneticEditor::processEnter (guint keyval, guint keycode,
return FALSE;
if (cmshm_filter (modifiers) != 0)
- return FALSE;
+ return TRUE;
if (!m_text) {
Text text ("\n");
@@ -148,6 +148,44 @@ PhoneticEditor::processFunctionKey (guint keyval, guint keycode,
}
gboolean
+PhoneticEditor::processShowCandidateKey (guint keyval, guint keycode,
+ guint modifiers)
+{
+ if (m_text.empty ())
+ return FALSE;
+
+ /* ignore numlock */
+ modifiers = cmshm_filter (modifiers);
+
+ if (modifiers != 0)
+ return TRUE;
+
+ /* process some show candidate keys */
+ if (modifiers == 0) { /* no modifiers. */
+ switch (keyval) {
+ case IBUS_Down:
+ case IBUS_KP_Down:
+ assert (FALSE);
+ /* check phonetic or symbol section here */
+ m_input_state = STATE_CANDIDATE_SHOWN;
+ break;
+
+ case IBUS_Up:
+ case IBUS_KP_Up:
+ m_input_state = STATE_INPUT;
+ break;
+
+ default:
+ return TRUE;
+ }
+ }
+
+ update ();
+ return TRUE;
+}
+
+
+gboolean
PhoneticEditor::processCandidateKey (guint keyval, guint keycode,
guint modifiers)
{
@@ -192,6 +230,7 @@ PhoneticEditor::processCandidateKey (guint keyval, guint keycode,
std::size_t found = keys.find (keyval);
if (found != std::string::npos) { /* found. */
selectCandidateInPage (found);
+ m_input_state = STATE_INPUT;
}
return TRUE;
}
diff --git a/src/ZYZPhoneticEditor.h b/src/ZYZPhoneticEditor.h
index 4a94a18..ca9631f 100644
--- a/src/ZYZPhoneticEditor.h
+++ b/src/ZYZPhoneticEditor.h
@@ -58,6 +58,7 @@ public:
virtual gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers);
virtual gboolean processEnter (guint keyval, guint keycode, guint modifiers);
virtual gboolean processFunctionKey (guint keyval, guint keycode, guint modifiers);
+ virtual gboolean processShowCandidateKey (guint keyval, guint keycode, guint modifiers);
virtual gboolean processCandidateKey (guint keyval, guint keycode, guint modifiers);
virtual void updateLookupTable ();
virtual void updateLookupTableFast ();
diff --git a/src/ZYZPinyinEditor.cc b/src/ZYZPinyinEditor.cc
index 0416b85..3ffffff 100644
--- a/src/ZYZPinyinEditor.cc
+++ b/src/ZYZPinyinEditor.cc
@@ -210,6 +210,9 @@ PinyinEditor::processKeyEvent (guint keyval, guint keycode, guint modifiers)
if (processFunctionKey (keyval, keycode, modifiers))
return TRUE;
+
+ if (processShowCandidateKey (keyval, keycode, modifiers))
+ return TRUE;
}
if (STATE_CANDIDATE_SHOWN == m_input_state ||
diff --git a/src/ZYZZhuyinEditor.cc b/src/ZYZZhuyinEditor.cc
index 712b59f..d31a258 100644
--- a/src/ZYZZhuyinEditor.cc
+++ b/src/ZYZZhuyinEditor.cc
@@ -218,6 +218,9 @@ ZhuyinEditor::processKeyEvent (guint keyval, guint keycode, guint modifiers)
if (processFunctionKey (keyval, keycode, modifiers))
return TRUE;
+
+ if (processShowCandidateKey (keyval, keycode, modifiers))
+ return TRUE;
}
if (STATE_CANDIDATE_SHOWN == m_input_state ||