summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Huang <shawn.p.huang@gmail.com>2009-03-29 08:27:11 +0800
committerPeng Huang <shawn.p.huang@gmail.com>2009-03-29 08:27:11 +0800
commit0236cd777e6088296a2ac51caf8d859eeac5d557 (patch)
tree42c0d3f328da6753be5986bd3965473aaa5a2fdc
parent56760794ebe6bb23e2fe2fdc5e3dca825be54df7 (diff)
downloadibus-0236cd777e6088296a2ac51caf8d859eeac5d557.tar.gz
ibus-0236cd777e6088296a2ac51caf8d859eeac5d557.tar.xz
ibus-0236cd777e6088296a2ac51caf8d859eeac5d557.zip
Emit preedit-start & preedit-end signals.
-rw-r--r--client/gtk2/ibusimcontext.c23
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);
}