From f1accaa9a18bd4a1c7234b40e16ad9889c25a461 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Wed, 6 Nov 2013 13:16:14 +0800 Subject: [PATCH] support setContentType method --- src/PYBopomofoEngine.cc | 22 ++++++++++++++++++++++ src/PYBopomofoEngine.h | 7 +++++++ src/PYEngine.cc | 21 +++++++++++++++++++++ src/PYEngine.h | 3 +++ src/PYPinyinEngine.cc | 22 ++++++++++++++++++++++ src/PYPinyinEngine.h | 7 +++++++ 6 files changed, 82 insertions(+) diff --git a/src/PYBopomofoEngine.cc b/src/PYBopomofoEngine.cc index 581c4cf..4dfbc2c 100644 --- a/src/PYBopomofoEngine.cc +++ b/src/PYBopomofoEngine.cc @@ -42,6 +42,10 @@ BopomofoEngine::BopomofoEngine (IBusEngine *engine) { gint i; +#if IBUS_CHECK_VERSION (1, 5, 4) + m_input_purpose = IBUS_INPUT_PURPOSE_FREE_FORM; +#endif + /* create editors */ m_editors[MODE_INIT].reset (new BopomofoEditor (m_props, BopomofoConfig::instance ())); m_editors[MODE_PUNCT].reset (new PunctEditor (m_props, BopomofoConfig::instance ())); @@ -72,6 +76,11 @@ BopomofoEngine::processKeyEvent (guint keyval, guint keycode, guint modifiers) { gboolean retval = FALSE; +#if IBUS_CHECK_VERSION (1, 5, 4) + if (IBUS_INPUT_PURPOSE_PASSWORD == m_input_purpose) + return retval; +#endif + /* check Shift + Release hotkey, * and then ignore other Release key event */ if (modifiers & IBUS_RELEASE_MASK) { @@ -139,9 +148,22 @@ BopomofoEngine::focusIn (void) void BopomofoEngine::focusOut (void) { + +#if IBUS_CHECK_VERSION (1, 5, 4) + m_input_purpose = IBUS_INPUT_PURPOSE_FREE_FORM; +#endif + reset (); } +#if IBUS_CHECK_VERSION(1, 5, 4) +void +BopomofoEngine::setContentType (guint purpose, guint hints) +{ + m_input_purpose = (IBusInputPurpose) purpose; +} +#endif + void BopomofoEngine::reset (void) { diff --git a/src/PYBopomofoEngine.h b/src/PYBopomofoEngine.h index ce41ce8..14b6780 100644 --- a/src/PYBopomofoEngine.h +++ b/src/PYBopomofoEngine.h @@ -36,6 +36,9 @@ public: gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers); void focusIn (void); void focusOut (void); +#if IBUS_CHECK_VERSION (1, 5, 4) + void setContentType (guint purpose, guint hints); +#endif void reset (void); void enable (void); void disable (void); @@ -59,6 +62,10 @@ private: private: PinyinProperties m_props; +#if IBUS_CHECK_VERSION (1, 5, 4) + IBusInputPurpose m_input_purpose; +#endif + guint m_prev_pressed_key; enum { diff --git a/src/PYEngine.cc b/src/PYEngine.cc index d9fa04a..da047b2 100644 --- a/src/PYEngine.cc +++ b/src/PYEngine.cc @@ -67,6 +67,12 @@ static gboolean ibus_pinyin_engine_process_key_event guint modifiers); static void ibus_pinyin_engine_focus_in (IBusEngine *engine); static void ibus_pinyin_engine_focus_out (IBusEngine *engine); +#if IBUS_CHECK_VERSION (1, 5, 4) +static void ibus_pinyin_engine_set_content_type + (IBusEngine *engine, + guint purpose, + guint hints); +#endif static void ibus_pinyin_engine_reset (IBusEngine *engine); static void ibus_pinyin_engine_enable (IBusEngine *engine); static void ibus_pinyin_engine_disable (IBusEngine *engine); @@ -123,6 +129,10 @@ ibus_pinyin_engine_class_init (IBusPinyinEngineClass *klass) engine_class->focus_in = ibus_pinyin_engine_focus_in; engine_class->focus_out = ibus_pinyin_engine_focus_out; +#if IBUS_CHECK_VERSION (1, 5, 4) + engine_class->set_content_type = ibus_pinyin_engine_set_content_type; +#endif + engine_class->page_up = ibus_pinyin_engine_page_up; engine_class->page_down = ibus_pinyin_engine_page_down; @@ -182,6 +192,17 @@ ibus_pinyin_engine_process_key_event (IBusEngine *engine, return pinyin->engine->processKeyEvent (keyval, keycode, modifiers); } +#if IBUS_CHECK_VERSION (1, 5, 4) +static void +ibus_pinyin_engine_set_content_type (IBusEngine *engine, + guint purpose, + guint hints) +{ + IBusPinyinEngine *pinyin = (IBusPinyinEngine *) engine; + return pinyin->engine->setContentType (purpose, hints); +} +#endif + static void ibus_pinyin_engine_property_activate (IBusEngine *engine, const gchar *prop_name, diff --git a/src/PYEngine.h b/src/PYEngine.h index b74e6e8..22e1b79 100644 --- a/src/PYEngine.h +++ b/src/PYEngine.h @@ -44,6 +44,9 @@ public: virtual gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers) = 0; virtual void focusIn (void) = 0; virtual void focusOut (void) = 0; +#if IBUS_CHECK_VERSION (1, 5, 4) + virtual void setContentType (guint purpose, guint hints) = 0; +#endif virtual void reset (void) = 0; virtual void enable (void) = 0; virtual void disable (void) = 0; diff --git a/src/PYPinyinEngine.cc b/src/PYPinyinEngine.cc index 7aea261..570187b 100644 --- a/src/PYPinyinEngine.cc +++ b/src/PYPinyinEngine.cc @@ -45,6 +45,10 @@ PinyinEngine::PinyinEngine (IBusEngine *engine) { gint i; +#if IBUS_CHECK_VERSION (1, 5, 4) + m_input_purpose = IBUS_INPUT_PURPOSE_FREE_FORM; +#endif + if (PinyinConfig::instance ().doublePinyin ()) m_editors[MODE_INIT].reset (new DoublePinyinEditor (m_props, PinyinConfig::instance ())); else @@ -82,6 +86,11 @@ PinyinEngine::processKeyEvent (guint keyval, guint keycode, guint modifiers) { gboolean retval = FALSE; +#if IBUS_CHECK_VERSION (1, 5, 4) + if (IBUS_INPUT_PURPOSE_PASSWORD == m_input_purpose) + return retval; +#endif + /* check Shift + Release hotkey, * and then ignore other Release key event */ if (modifiers & IBUS_RELEASE_MASK) { @@ -195,9 +204,22 @@ PinyinEngine::focusIn (void) void PinyinEngine::focusOut (void) { + +#if IBUS_CHECK_VERSION (1, 5, 4) + m_input_purpose = IBUS_INPUT_PURPOSE_FREE_FORM; +#endif + reset (); } +#if IBUS_CHECK_VERSION(1, 5, 4) +void +PinyinEngine::setContentType (guint purpose, guint hints) +{ + m_input_purpose = (IBusInputPurpose) purpose; +} +#endif + void PinyinEngine::reset (void) { diff --git a/src/PYPinyinEngine.h b/src/PYPinyinEngine.h index fcce73e..de50269 100644 --- a/src/PYPinyinEngine.h +++ b/src/PYPinyinEngine.h @@ -35,6 +35,9 @@ public: gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers); void focusIn (void); void focusOut (void); +#if IBUS_CHECK_VERSION (1, 5, 4) + void setContentType (guint purpose, guint hints); +#endif void reset (void); void enable (void); void disable (void); @@ -58,6 +61,10 @@ private: private: PinyinProperties m_props; +#if IBUS_CHECK_VERSION (1, 5, 4) + IBusInputPurpose m_input_purpose; +#endif + guint m_prev_pressed_key; enum { -- 1.8.3.1