summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2013-10-10 15:48:29 +0800
committerPeng Wu <alexepico@gmail.com>2013-10-10 15:48:33 +0800
commit69f50424ba5be49c4b31543df7bd7970361d4753 (patch)
tree2e525ed4aca9a882b3039b4d343438bb073a9b5f /src
parentcf8ab7d8e76ed70c182c7588cfe1ebbce8e5174b (diff)
downloadibus-libpinyin-69f50424ba5be49c4b31543df7bd7970361d4753.tar.gz
ibus-libpinyin-69f50424ba5be49c4b31543df7bd7970361d4753.tar.bz2
ibus-libpinyin-69f50424ba5be49c4b31543df7bd7970361d4753.zip
support setContentType method
Diffstat (limited to 'src')
-rw-r--r--src/PYEngine.cc21
-rw-r--r--src/PYEngine.h3
-rw-r--r--src/PYPBopomofoEngine.cc22
-rw-r--r--src/PYPBopomofoEngine.h7
-rw-r--r--src/PYPPinyinEngine.cc22
-rw-r--r--src/PYPPinyinEngine.h7
6 files changed, 82 insertions, 0 deletions
diff --git a/src/PYEngine.cc b/src/PYEngine.cc
index 870c3ab..487ad6e 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;
@@ -189,6 +199,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 c5b0d9d..0866146 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/PYPBopomofoEngine.cc b/src/PYPBopomofoEngine.cc
index 9be5ad2..9d2666f 100644
--- a/src/PYPBopomofoEngine.cc
+++ b/src/PYPBopomofoEngine.cc
@@ -40,6 +40,10 @@ LibPinyinBopomofoEngine::LibPinyinBopomofoEngine (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 LibPinyinBopomofoEditor (m_props, LibPinyinBopomofoConfig::instance ()));
m_editors[MODE_PUNCT].reset (new PunctEditor (m_props, LibPinyinBopomofoConfig::instance ()));
@@ -64,6 +68,11 @@ LibPinyinBopomofoEngine::processKeyEvent (guint keyval, guint keycode, guint mod
{
gboolean retval = FALSE;
+#if IBUS_CHECK_VERSION (1, 5, 4)
+ if (IBUS_INPUT_PURPOSE_PASSWORD == m_input_purpose)
+ return retval;
+#endif
+
/* check Shift or Ctrl + Release hotkey,
* and then ignore other Release key event */
if (modifiers & IBUS_RELEASE_MASK) {
@@ -140,9 +149,22 @@ LibPinyinBopomofoEngine::focusIn (void)
void
LibPinyinBopomofoEngine::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
+LibPinyinBopomofoEngine::setContentType (guint purpose, guint hints)
+{
+ m_input_purpose = (IBusInputPurpose) purpose;
+}
+#endif
+
void
LibPinyinBopomofoEngine::reset (void)
{
diff --git a/src/PYPBopomofoEngine.h b/src/PYPBopomofoEngine.h
index fc64842..85d1ff6 100644
--- a/src/PYPBopomofoEngine.h
+++ b/src/PYPBopomofoEngine.h
@@ -37,6 +37,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);
@@ -60,6 +63,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/PYPPinyinEngine.cc b/src/PYPPinyinEngine.cc
index ce74be1..d28dc6f 100644
--- a/src/PYPPinyinEngine.cc
+++ b/src/PYPPinyinEngine.cc
@@ -50,6 +50,10 @@ LibPinyinPinyinEngine::LibPinyinPinyinEngine (IBusEngine *engine)
{
gint i;
+#if IBUS_CHECK_VERSION (1, 5, 4)
+ m_input_purpose = IBUS_INPUT_PURPOSE_FREE_FORM;
+#endif
+
m_double_pinyin = LibPinyinPinyinConfig::instance ().doublePinyin ();
if (m_double_pinyin)
@@ -100,6 +104,11 @@ LibPinyinPinyinEngine::processKeyEvent (guint keyval, guint keycode, guint modif
{
gboolean retval = FALSE;
+#if IBUS_CHECK_VERSION (1, 5, 4)
+ if (IBUS_INPUT_PURPOSE_PASSWORD == m_input_purpose)
+ return retval;
+#endif
+
/* check Shift or Ctrl + Release hotkey,
* and then ignore other Release key event */
if (modifiers & IBUS_RELEASE_MASK) {
@@ -222,9 +231,22 @@ LibPinyinPinyinEngine::focusIn (void)
void
LibPinyinPinyinEngine::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
+LibPinyinPinyinEngine::setContentType (guint purpose, guint hints)
+{
+ m_input_purpose = (IBusInputPurpose) purpose;
+}
+#endif
+
void
LibPinyinPinyinEngine::reset (void)
{
diff --git a/src/PYPPinyinEngine.h b/src/PYPPinyinEngine.h
index a7e0e12..9954569 100644
--- a/src/PYPPinyinEngine.h
+++ b/src/PYPPinyinEngine.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);
@@ -56,6 +59,10 @@ private:
private:
PinyinProperties m_props;
+#if IBUS_CHECK_VERSION (1, 5, 4)
+ IBusInputPurpose m_input_purpose;
+#endif
+
guint m_prev_pressed_key;
enum {