diff options
author | Peng Huang <shawn.p.huang@gmail.com> | 2009-03-29 08:27:11 +0800 |
---|---|---|
committer | Peng Huang <shawn.p.huang@gmail.com> | 2009-03-29 08:27:11 +0800 |
commit | 0236cd777e6088296a2ac51caf8d859eeac5d557 (patch) | |
tree | 42c0d3f328da6753be5986bd3965473aaa5a2fdc /client | |
parent | 56760794ebe6bb23e2fe2fdc5e3dca825be54df7 (diff) | |
download | ibus-0236cd777e6088296a2ac51caf8d859eeac5d557.tar.gz ibus-0236cd777e6088296a2ac51caf8d859eeac5d557.tar.xz ibus-0236cd777e6088296a2ac51caf8d859eeac5d557.zip |
Emit preedit-start & preedit-end signals.
Diffstat (limited to 'client')
-rw-r--r-- | client/gtk2/ibusimcontext.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c index 4483696..0063de3 100644 --- a/client/gtk2/ibusimcontext.c +++ b/client/gtk2/ibusimcontext.c @@ -55,15 +55,15 @@ static guint _signal_delete_surrounding_id = 0; static guint _signal_retrieve_surrounding_id = 0; /* functions prototype */ -static void ibus_im_context_class_init (IBusIMContextClass *klass); -static void ibus_im_context_init (GObject *obj); -static void ibus_im_context_finalize (GObject *obj); -static void ibus_im_context_reset (GtkIMContext *context); +static void ibus_im_context_class_init (IBusIMContextClass *klass); +static void ibus_im_context_init (GObject *obj); +static void ibus_im_context_finalize (GObject *obj); +static void ibus_im_context_reset (GtkIMContext *context); static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, GdkEventKey *key); -static void ibus_im_context_focus_in (GtkIMContext *context); -static void ibus_im_context_focus_out (GtkIMContext *context); +static void ibus_im_context_focus_in (GtkIMContext *context); +static void ibus_im_context_focus_out (GtkIMContext *context); static void ibus_im_context_get_preedit_string (GtkIMContext *context, gchar **str, @@ -656,7 +656,14 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibus_context, } priv->preedit_cursor_pos = cursor_pos; priv->preedit_visible = visible; - g_signal_emit (context, _signal_preedit_changed_id, 0); + if (priv->preedit_visible) { + g_signal_emit (context, _signal_preedit_start_id, 0); + g_signal_emit (context, _signal_preedit_changed_id, 0); + } + else { + g_signal_emit (context, _signal_preedit_changed_id, 0); + g_signal_emit (context, _signal_preedit_end_id, 0); + } } static void @@ -878,6 +885,7 @@ ibus_im_context_show_preedit (IBusIMContext *context) priv->preedit_visible = TRUE; + g_signal_emit (context, _signal_preedit_start_id, 0); g_signal_emit (context, _signal_preedit_changed_id, 0); } @@ -896,4 +904,5 @@ ibus_im_context_hide_preedit (IBusIMContext *context) priv->preedit_visible = FALSE; g_signal_emit (context, _signal_preedit_changed_id, 0); + g_signal_emit (context, _signal_preedit_end_id, 0); } |