diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-14 23:14:34 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-14 23:14:34 +0800 |
commit | 0cdd8d3d49c0806b2fd8e625475f9f2c416d3ee4 (patch) | |
tree | 3e661f692c2bfaef2636871f3ed9d3a36c500c35 /client/gtk2/ibusimcontext.c | |
parent | 10a973c3450a736ed739d71e70bc4d4a93c475c2 (diff) | |
download | ibus-0cdd8d3d49c0806b2fd8e625475f9f2c416d3ee4.tar.gz ibus-0cdd8d3d49c0806b2fd8e625475f9f2c416d3ee4.tar.xz ibus-0cdd8d3d49c0806b2fd8e625475f9f2c416d3ee4.zip |
Use g_signal_emit to replace g_signal_emit_by_name for better performance.
Diffstat (limited to 'client/gtk2/ibusimcontext.c')
-rw-r--r-- | client/gtk2/ibusimcontext.c | 55 |
1 files changed, 43 insertions, 12 deletions
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c index 4498745..1f663aa 100644 --- a/client/gtk2/ibusimcontext.c +++ b/client/gtk2/ibusimcontext.c @@ -45,6 +45,13 @@ struct _IBusIMContextPrivate { gboolean has_focus; }; +static guint _signal_commit_id = 0; +static guint _signal_preedit_changed_id = 0; +static guint _signal_preedit_start_id = 0; +static guint _signal_preedit_end_id = 0; +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); @@ -186,6 +193,30 @@ ibus_im_context_class_init (IBusIMContextClass *klass) im_context_class->set_cursor_location = ibus_im_context_set_cursor_location; im_context_class->set_use_preedit = ibus_im_context_set_use_preedit; gobject_class->finalize = ibus_im_context_finalize; + + _signal_commit_id = + g_signal_lookup ("commit", G_TYPE_FROM_CLASS (klass)); + g_assert (_signal_commit_id != 0); + + _signal_preedit_changed_id = + g_signal_lookup ("preedit-changed", G_TYPE_FROM_CLASS (klass)); + g_assert (_signal_preedit_changed_id != 0); + + _signal_preedit_start_id = + g_signal_lookup ("preedit-start", G_TYPE_FROM_CLASS (klass)); + g_assert (_signal_preedit_start_id != 0); + + _signal_preedit_end_id = + g_signal_lookup ("preedit-end", G_TYPE_FROM_CLASS (klass)); + g_assert (_signal_preedit_end_id != 0); + + _signal_delete_surrounding_id = + g_signal_lookup ("delete-surrounding", G_TYPE_FROM_CLASS (klass)); + g_assert (_signal_delete_surrounding_id != 0); + + _signal_retrieve_surrounding_id = + g_signal_lookup ("retrieve-surrounding", G_TYPE_FROM_CLASS (klass)); + g_assert (_signal_retrieve_surrounding_id != 0); } static void @@ -472,7 +503,7 @@ _client_commit_string_cb (IBusIMClient *client, const gchar *ic, const gchar *st IBusIMContext *context = g_hash_table_lookup (_ic_table, ic); g_return_if_fail (context != NULL); - g_signal_emit_by_name (context, "commit", string); + g_signal_emit (context, _signal_commit_id, 0, string); } @@ -523,7 +554,7 @@ _client_update_preedit_cb (IBusIMClient *client, const gchar *ic, const gchar *s priv->preedit_cursor_pos = cursor_pos; priv->preedit_visible = visible; - g_signal_emit_by_name (context, "preedit-changed"); + g_signal_emit (context, _signal_preedit_changed_id, 0); } static void @@ -536,7 +567,7 @@ _client_show_preedit_cb (IBusIMClient *client, const gchar *ic, gpointer user_da if (priv->preedit_visible == FALSE) { priv->preedit_visible = TRUE; - g_signal_emit_by_name (context, "preedit-changed"); + g_signal_emit (context, _signal_preedit_changed_id, 0); } } @@ -550,7 +581,7 @@ _client_hide_preedit_cb (IBusIMClient *client, const gchar *ic, gpointer user_da if (priv->preedit_visible == TRUE) { priv->preedit_visible = FALSE; - g_signal_emit_by_name (context, "preedit-changed"); + g_signal_emit (context, _signal_preedit_changed_id, 0); } } @@ -624,7 +655,7 @@ _slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *context) if ((GtkIMContext *)context == CURRENT_CONTEXT && ibus_im_client_is_enabled (_client)) return; #endif - g_signal_emit_by_name (context, "commit", string); + g_signal_emit (context, _signal_commit_id, 0, string); } static void @@ -638,7 +669,7 @@ _slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *context) if (priv->enable && priv->ic) return; - g_signal_emit_by_name (context, "preedit-changed"); + g_signal_emit (context, _signal_preedit_changed_id, 0); } static void @@ -651,7 +682,7 @@ _slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *context) if (priv->enable && priv->ic) return; - g_signal_emit_by_name (context, "preedit-start"); + g_signal_emit (context, _signal_preedit_start_id, 0); } static void @@ -664,7 +695,7 @@ _slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *context) if (priv->enable && priv->ic) return; - g_signal_emit_by_name (context, "preedit-end"); + g_signal_emit (context, _signal_preedit_end_id, 0); } static void @@ -677,7 +708,7 @@ _slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *context) if (priv->enable && priv->ic) return; - g_signal_emit_by_name (context, "retrieve-surrounding"); + g_signal_emit (context, _signal_retrieve_surrounding_id, 0); } static void @@ -690,7 +721,7 @@ _slave_delete_surrounding_cb (GtkIMContext *slave, gint a1, gint a2, IBusIMConte if (priv->enable && priv->ic) return; - g_signal_emit_by_name (context, "delete-surrounding", a1, a2); + g_signal_emit (context, _signal_delete_surrounding_id, 0, a1, a2); } const gchar * @@ -734,7 +765,7 @@ ibus_im_context_show_preedit (IBusIMContext *context) priv->preedit_visible = TRUE; - g_signal_emit_by_name (context, "preedit-changed"); + g_signal_emit (context, _signal_preedit_changed_id, 0); } void @@ -750,5 +781,5 @@ ibus_im_context_hide_preedit (IBusIMContext *context) priv->preedit_visible = FALSE; - g_signal_emit_by_name (context, "preedit-changed"); + g_signal_emit (context, _signal_preedit_changed_id, 0); } |