diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ZYZPhoneticEditor.cc | 15 | ||||
-rw-r--r-- | src/ZYZPhoneticEditor.h | 1 | ||||
-rw-r--r-- | src/ZYZPinyinEditor.cc | 3 | ||||
-rw-r--r-- | src/ZYZZhuyinEditor.cc | 3 |
4 files changed, 22 insertions, 0 deletions
diff --git a/src/ZYZPhoneticEditor.cc b/src/ZYZPhoneticEditor.cc index 60eab16..69c43fe 100644 --- a/src/ZYZPhoneticEditor.cc +++ b/src/ZYZPhoneticEditor.cc @@ -75,6 +75,21 @@ PhoneticEditor::~PhoneticEditor (void) } gboolean +PhoneticEditor::processEscape (guint keyval, guint keycode, + guint modifiers) +{ + if (IBUS_Escape != keyval) + return FALSE; + + if (cmshm_filter (modifiers) != 0) + return TRUE; + + reset (); + return TRUE; +} + + +gboolean PhoneticEditor::processEnter (guint keyval, guint keycode, guint modifiers) { diff --git a/src/ZYZPhoneticEditor.h b/src/ZYZPhoneticEditor.h index d99c9da..30d34ec 100644 --- a/src/ZYZPhoneticEditor.h +++ b/src/ZYZPhoneticEditor.h @@ -56,6 +56,7 @@ public: virtual void reset (void); virtual void candidateClicked (guint index, guint button, guint state); virtual gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers); + virtual gboolean processEscape (guint keyval, guint keycode, guint modifiers); virtual gboolean processEnter (guint keyval, guint keycode, guint modifiers); virtual gboolean processSpace (guint keyval, guint keycode, guint modifiers); virtual gboolean processFunctionKey (guint keyval, guint keycode, guint modifiers); diff --git a/src/ZYZPinyinEditor.cc b/src/ZYZPinyinEditor.cc index 13a279a..6a6ba89 100644 --- a/src/ZYZPinyinEditor.cc +++ b/src/ZYZPinyinEditor.cc @@ -201,6 +201,9 @@ PinyinEditor::processKeyEvent (guint keyval, guint keycode, guint modifiers) IBUS_META_MASK | IBUS_LOCK_MASK); + if (processEscape (keyval, keycode, modifiers)) + return TRUE; + if (STATE_INPUT == m_input_state) { if (insert (keyval)) return TRUE; diff --git a/src/ZYZZhuyinEditor.cc b/src/ZYZZhuyinEditor.cc index bd84e37..df02ce2 100644 --- a/src/ZYZZhuyinEditor.cc +++ b/src/ZYZZhuyinEditor.cc @@ -213,6 +213,9 @@ ZhuyinEditor::processKeyEvent (guint keyval, guint keycode, guint modifiers) IBUS_META_MASK | IBUS_LOCK_MASK); + if (processEscape (keyval, keycode, modifiers)) + return TRUE; + if (STATE_INPUT == m_input_state) { if (insert (keyval)) |