From 86159783e0ab330bdeff3d1dc21d2479485c7ae6 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Mon, 19 Sep 2016 14:19:50 +0800 Subject: use shift key to input full width character --- src/ZYZPhoneticEditor.cc | 24 ++++++++++++------------ src/ZYZPhoneticEditor.h | 6 +++--- src/ZYZPinyinEditor.cc | 10 +++++----- src/ZYZZhuyinEditor.cc | 10 +++++----- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/ZYZPhoneticEditor.cc b/src/ZYZPhoneticEditor.cc index b05815a..184ab90 100644 --- a/src/ZYZPhoneticEditor.cc +++ b/src/ZYZPhoneticEditor.cc @@ -956,13 +956,13 @@ PhoneticEditor::getZhuyinCursor (void) } gboolean -PhoneticEditor::insertPunct (guint ch) +PhoneticEditor::insertPunct (guint keyval, guint keycode, guint modifiers) { /* for punctuations. */ - if (is_half_punct (ch)) { - if (m_props.modeFullWidth ()) { + if (is_half_punct (keyval)) { + if (m_props.modeFullWidth () || modifiers & IBUS_SHIFT_MASK) { String choice; - assert (half_punct_to_full_punct (ch, choice)); + assert (half_punct_to_full_punct (keyval, choice)); String lookup; int ch = find_lookup_key (choice); @@ -972,7 +972,7 @@ PhoneticEditor::insertPunct (guint ch) insert_symbol (m_text, m_cursor++, BUILTIN_SYMBOL_TYPE, lookup, choice); } else { - String choice = (gchar)ch; + String choice = (gchar) keyval; insert_symbol (m_text, m_cursor++, BUILTIN_SYMBOL_TYPE, "", choice); } @@ -984,13 +984,13 @@ PhoneticEditor::insertPunct (guint ch) } gboolean -PhoneticEditor::insertEnglish (guint ch) +PhoneticEditor::insertEnglish (guint keyval, guint keycode, guint modifiers) { /* for English. */ - if (is_half_english (ch)) { - if (m_props.modeFullWidth ()) { + if (is_half_english (keyval)) { + if (m_props.modeFullWidth () || modifiers & IBUS_SHIFT_MASK) { String choice; - assert (half_english_to_full_english (ch, choice)); + assert (half_english_to_full_english (keyval, choice)); String lookup; int ch = find_lookup_key (choice); @@ -1000,7 +1000,7 @@ PhoneticEditor::insertEnglish (guint ch) insert_symbol (m_text, m_cursor++, BUILTIN_SYMBOL_TYPE, lookup, choice); } else { - String choice = (gchar) ch; + String choice = (gchar) keyval; insert_symbol (m_text, m_cursor++, BUILTIN_SYMBOL_TYPE, "", choice); } @@ -1012,7 +1012,7 @@ PhoneticEditor::insertEnglish (guint ch) } gboolean -PhoneticEditor::insertNumbers (guint ch) +PhoneticEditor::insertNumbers (guint keyval, guint keycode, guint modifiers) { /* for input pad numbers. */ static const guint keyvals[] = {IBUS_KP_Delete, IBUS_KP_Insert, @@ -1035,7 +1035,7 @@ PhoneticEditor::insertNumbers (guint ch) return FALSE; for (size_t i = 0; i < G_N_ELEMENTS (keyvals); ++i) { - if (keyvals[i] == ch) { + if (keyvals[i] == keyval) { String choice; choice += numbers[i]; diff --git a/src/ZYZPhoneticEditor.h b/src/ZYZPhoneticEditor.h index bedb66c..90f00e7 100644 --- a/src/ZYZPhoneticEditor.h +++ b/src/ZYZPhoneticEditor.h @@ -74,9 +74,9 @@ public: virtual void updateLookupTableLabel (); virtual gboolean fillLookupTableByPage (); - virtual gboolean insertPunct (guint ch); - virtual gboolean insertEnglish (guint ch); - virtual gboolean insertNumbers (guint ch); + virtual gboolean insertPunct (guint keyval, guint keycode, guint modifiers); + virtual gboolean insertEnglish (guint keyval, guint keycode, guint modifiers); + virtual gboolean insertNumbers (guint keyval, guint keycode, guint modifiers); protected: gboolean prepareCandidates (void); diff --git a/src/ZYZPinyinEditor.cc b/src/ZYZPinyinEditor.cc index 33173ae..67889a8 100644 --- a/src/ZYZPinyinEditor.cc +++ b/src/ZYZPinyinEditor.cc @@ -199,9 +199,9 @@ gboolean PinyinEditor::insert (guint keyval, guint keycode, guint modifiers) { /* let client applications to handle shortcut key event */ - modifiers = cmshm_filter (modifiers); + modifiers = scmshm_filter (modifiers); - if (modifiers != 0 && m_text.empty ()) + if (cmshm_filter (modifiers) != 0 && m_text.empty ()) return FALSE; if (IS_PINYIN (keyval)) { @@ -212,19 +212,19 @@ PinyinEditor::insert (guint keyval, guint keycode, guint modifiers) return TRUE; } - if (insertPunct (keyval)) { + if (insertPunct (keyval, keycode, modifiers)) { updateZhuyin (); update (); return TRUE; } - if (insertEnglish (keyval)) { + if (insertEnglish (keyval, keycode, modifiers)) { updateZhuyin (); update (); return TRUE; } - if (insertNumbers (keyval)) { + if (insertNumbers (keyval, keycode, modifiers)) { updateZhuyin (); update (); return TRUE; diff --git a/src/ZYZZhuyinEditor.cc b/src/ZYZZhuyinEditor.cc index 7593f62..60ba093 100644 --- a/src/ZYZZhuyinEditor.cc +++ b/src/ZYZZhuyinEditor.cc @@ -243,9 +243,9 @@ gboolean ZhuyinEditor::insert (guint keyval, guint keycode, guint modifiers) { /* let client applications to handle shortcut key event */ - modifiers = cmshm_filter (modifiers); + modifiers = scmshm_filter (modifiers); - if (modifiers != 0 && m_text.empty ()) + if (cmshm_filter (modifiers) != 0 && m_text.empty ()) return FALSE; gchar ** symbols = NULL; @@ -259,19 +259,19 @@ ZhuyinEditor::insert (guint keyval, guint keycode, guint modifiers) return TRUE; } - if (insertPunct (keyval)) { + if (insertPunct (keyval, keycode, modifiers)) { updateZhuyin (); update (); return TRUE; } - if (insertEnglish (keyval)) { + if (insertEnglish (keyval, keycode, modifiers)) { updateZhuyin (); update (); return TRUE; } - if (insertNumbers (keyval)) { + if (insertNumbers (keyval, keycode, modifiers)) { updateZhuyin (); update (); return TRUE; -- cgit