summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2016-09-19 14:19:50 +0800
committerPeng Wu <alexepico@gmail.com>2016-09-19 14:19:50 +0800
commit86159783e0ab330bdeff3d1dc21d2479485c7ae6 (patch)
treed98ecc90d7f45c16d965290aea1f9662a96d5f02
parentd8022f8fed9a81475f8aceca2fbb90292ace8284 (diff)
downloadibus-libzhuyin-86159783e0ab330bdeff3d1dc21d2479485c7ae6.tar.gz
ibus-libzhuyin-86159783e0ab330bdeff3d1dc21d2479485c7ae6.tar.xz
ibus-libzhuyin-86159783e0ab330bdeff3d1dc21d2479485c7ae6.zip
use shift key to input full width character
-rw-r--r--src/ZYZPhoneticEditor.cc24
-rw-r--r--src/ZYZPhoneticEditor.h6
-rw-r--r--src/ZYZPinyinEditor.cc10
-rw-r--r--src/ZYZZhuyinEditor.cc10
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;