diff options
author | Peng Wu <alexepico@gmail.com> | 2014-07-01 10:36:00 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2014-07-01 10:38:03 +0800 |
commit | 81f6d00c8a43ae0229af0f9dfdcaa654b111ece6 (patch) | |
tree | 73cc90ac0be4b71565d34d01b5e423d060d303e1 | |
parent | 333f5553b0fdd34d7347cd7baaf3d00393138e40 (diff) | |
download | ibus-libzhuyin-81f6d00c8a43ae0229af0f9dfdcaa654b111ece6.tar.gz ibus-libzhuyin-81f6d00c8a43ae0229af0f9dfdcaa654b111ece6.tar.xz ibus-libzhuyin-81f6d00c8a43ae0229af0f9dfdcaa654b111ece6.zip |
begin to write method processShowCandidateKey
-rw-r--r-- | src/ZYZPhoneticEditor.cc | 41 | ||||
-rw-r--r-- | src/ZYZPhoneticEditor.h | 1 | ||||
-rw-r--r-- | src/ZYZPinyinEditor.cc | 3 | ||||
-rw-r--r-- | src/ZYZZhuyinEditor.cc | 3 |
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 || |