Store capabilities when ibuscontext is not ready yet.
authorKazuhiro Inaba <kinaba@chromium.org>
Sat, 18 Jun 2011 04:10:36 +0000 (00:10 -0400)
committerPeng Huang <shawn.p.huang@gmail.com>
Sat, 18 Jun 2011 04:10:36 +0000 (00:10 -0400)
Due to the asynchronous creation of contexts, gtk_im_set_use_preedit may
be called before the context is ready. This patch is to
record the change of capability flag and enables to set it
later in _create_input_context_done.

BUG=http://crosbug.com/16500
TEST=ChromeOS Cr-48

Review URL: http://codereview.appspot.com/4635049
Patch from Kazuhiro Inaba <kinaba@chromium.org>.

client/gtk2/ibusimcontext.c

index a4e7a16..96369a7 100644 (file)
@@ -934,13 +934,13 @@ ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit)
 
     IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
 
+    if (use_preedit) {
+        ibusimcontext->caps |= IBUS_CAP_PREEDIT_TEXT;
+    }
+    else {
+        ibusimcontext->caps &= ~IBUS_CAP_PREEDIT_TEXT;
+    }
     if(ibusimcontext->ibuscontext) {
-        if (use_preedit) {
-            ibusimcontext->caps |= IBUS_CAP_PREEDIT_TEXT;
-        }
-        else {
-            ibusimcontext->caps &= ~IBUS_CAP_PREEDIT_TEXT;
-        }
         ibus_input_context_set_capabilities (ibusimcontext->ibuscontext,
                                              ibusimcontext->caps);
     }