summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-07-16 17:01:05 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-07-16 17:01:05 +0800
commit3ab14d2ab01cecb552a87d8f700eada58feb61ac (patch)
treea646b2d5eac36ef58a52c832067512afb8e8aa93
parenta1f880ae4c346d154a7777462db8208556c60309 (diff)
downloadibus-3ab14d2ab01cecb552a87d8f700eada58feb61ac.tar.gz
ibus-3ab14d2ab01cecb552a87d8f700eada58feb61ac.tar.xz
ibus-3ab14d2ab01cecb552a87d8f700eada58feb61ac.zip
Fix error when restart ibus.
-rw-r--r--gtk2/ibusimclient.c5
-rw-r--r--gtk2/ibusimcontext.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gtk2/ibusimclient.c b/gtk2/ibusimclient.c
index 7d5e542..30896d3 100644
--- a/gtk2/ibusimclient.c
+++ b/gtk2/ibusimclient.c
@@ -275,9 +275,10 @@ _ibus_im_client_ibus_open (IBusIMClient *client)
GList *p;
for (p = priv->contexts; p != NULL; p = g_list_next (p)) {
- IBusIMContext *ctx = IBUS_IM_CONTEXT (p->data);
+ IBusIMContext *context = IBUS_IM_CONTEXT (p->data);
const gchar *ic = _ibus_im_client_create_input_context (client);
- ibus_im_context_set_ic (ctx, ic);
+ g_hash_table_insert (priv->ic_table, g_strdup (ic), context);
+ ibus_im_context_set_ic (context, ic);
}
}
diff --git a/gtk2/ibusimcontext.c b/gtk2/ibusimcontext.c
index abf236b..2695a99 100644
--- a/gtk2/ibusimcontext.c
+++ b/gtk2/ibusimcontext.c
@@ -407,7 +407,12 @@ ibus_im_context_set_ic (IBusIMContext *context, const gchar *ic)
{
IBusIMContextPrivate *priv = context->priv;
if (priv->ic) g_free (priv->ic);
+
priv->ic = g_strdup (ic);
+
+ if (priv->ic == NULL) {
+ priv->enable = FALSE;
+ }
}
void