[ibus/f14/master] Fixed Bug 673047 - ibus-xkb does not work in non-XKB system

Takao Fujiwara fujiwara at fedoraproject.org
Fri Mar 11 10:35:40 UTC 2011


commit 232175ccde8c76aeaffffa5a00a8caaf2c23b538
Author: Takao Fujiwara <tfujiwar at redhat.com>
Date:   Fri Mar 11 19:34:45 2011 +0900

    Fixed Bug 673047 - ibus-xkb does not work in non-XKB system
    
    Updated ibus-541492-xkb.patch
    Updated ibus-HEAD.patch
    Updated xinput-ibus

 .gitignore            |    3 ++
 ibus-541492-xkb.patch |   24 +++++++++-----
 ibus-HEAD.patch       |   82 +++++++++++++++++++++++++++++++++++++++++++++++++
 ibus.spec             |   14 ++++++--
 xinput-ibus           |    4 ++-
 5 files changed, 114 insertions(+), 13 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index b43202a..0badec1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
 ibus-1.3.6.tar.gz
 /ibus-1.3.9.tar.gz
 /ibus-1.3.99.20101202.tar.gz
+/ibus-1.3.99.20110206.tar.gz
+/ibus-1.3.99.20110228.tar.gz
+/gnome-shell-ibus-plugins-20110304.tar.bz2
diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch
index d012ed1..2061650 100644
--- a/ibus-541492-xkb.patch
+++ b/ibus-541492-xkb.patch
@@ -2975,7 +2975,7 @@ new file mode 100644
 index 0000000..1f6f8d7
 --- /dev/null
 +++ b/xkb/xkblib.c
-@@ -0,0 +1,297 @@
+@@ -0,0 +1,303 @@
 +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 +/* vim:set et sts=4: */
 +/* bus - The Input Bus
@@ -3041,12 +3041,6 @@ index 0000000..1f6f8d7
 +    unsigned long l, nitems, bytes_after;
 +    unsigned char *prop = NULL;
 +
-+    if (XkbGetState (xdisplay, XkbUseCoreKbd, &state) != Success) {
-+        g_warning ("Could not get state");
-+        return;
-+    }
-+    default_layout_group = state.group;
-+
 +    xkb_rules_name = XInternAtom (xdisplay, "_XKB_RULES_NAMES", TRUE);
 +    if (xkb_rules_name == None) {
 +        g_warning ("Could not get XKB rules atom");
@@ -3076,6 +3070,12 @@ index 0000000..1f6f8d7
 +    default_models = g_strsplit ((gchar *) prop, ",", -1);
 +    prop += strlen ((const char *) prop) + 1;
 +    default_options = g_strsplit ((gchar *) prop, ",", -1);
++
++    if (XkbGetState (xdisplay, XkbUseCoreKbd, &state) != Success) {
++        g_warning ("Could not get state");
++        return;
++    }
++    default_layout_group = state.group;
 +}
 +
 +static Bool
@@ -3220,7 +3220,10 @@ index 0000000..1f6f8d7
 +gchar *
 +ibus_xkb_get_current_layout (void)
 +{
-+    g_assert (default_layouts != NULL);
++    if (default_layouts == NULL) {
++        g_warning ("Your system seems not to support XKB.");
++        return NULL; 
++    }
 +
 +    return g_strjoinv (",", (gchar **) default_layouts);
 +}
@@ -3254,7 +3257,10 @@ index 0000000..1f6f8d7
 +    gboolean retval;
 +    gchar *layouts_line;
 +
-+    g_assert (default_layouts != NULL);
++    if (default_layouts == NULL) {
++        g_warning ("Your system seems not to support XKB.");
++        return NULL;
++    }
 +
 +    if (layouts == NULL || g_strcmp0 (layouts, "default") == 0) {
 +        layouts_line = g_strjoinv (",", (gchar **) default_layouts);
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 8b13789..9f2ac84 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1 +1,83 @@
+From fbdd157b2ab1e6e873818132530dd9e55e4f94dd Mon Sep 17 00:00:00 2001
+From: Peng Huang <shawn.p.huang at gmail.com>
+Date: Mon, 7 Mar 2011 10:26:04 -0500
+Subject: [PATCH] Move gtk_key_snooper_remove from function object_fini to class_fini.
+
+BUG=http://crosbug.com/12803
+TEST=Linux desktop
+
+Review URL: http://codereview.appspot.com/4267044
+---
+ client/gtk2/ibusimcontext.c |   24 +++++++++++++++---------
+ 1 files changed, 15 insertions(+), 9 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index a634d0e..31a415d 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -91,6 +91,7 @@ static GdkWindow *_input_window = NULL;
+ 
+ /* functions prototype */
+ static void     ibus_im_context_class_init  (IBusIMContextClass    *klass);
++static void     ibus_im_context_class_fini  (IBusIMContextClass    *class);
+ static void     ibus_im_context_init        (GObject               *obj);
+ static void     ibus_im_context_finalize    (GObject               *obj);
+ static void     ibus_im_context_reset       (GtkIMContext          *context);
+@@ -155,10 +156,10 @@ ibus_im_context_register_type (GTypeModu
+ 
+     static const GTypeInfo ibus_im_context_info = {
+         sizeof (IBusIMContextClass),
+-        (GBaseInitFunc)        NULL,
+-        (GBaseFinalizeFunc)     NULL,
++        (GBaseInitFunc)      NULL,
++        (GBaseFinalizeFunc)  NULL,
+         (GClassInitFunc)     ibus_im_context_class_init,
+-        NULL,            /* class finialize */
++        (GClassFinalizeFunc) ibus_im_context_class_fini,
+         NULL,            /* class data */
+         sizeof (IBusIMContext),
+         0,
+@@ -371,6 +372,16 @@ ibus_im_context_class_init     (IBusIMCo
+ }
+ 
+ static void
++ibus_im_context_class_fini (IBusIMContextClass *class)
++{
++    if (_key_snooper_id != 0) {
++        IDEBUG ("snooper is terminated.");
++        gtk_key_snooper_remove (_key_snooper_id);
++        _key_snooper_id = 0;
++    }
++}
++
++static void
+ ibus_im_context_init (GObject *obj)
+ {
+     IDEBUG ("%s", __FUNCTION__);
+-- 
+1.7.4.1
+
+From c0489ba017f298e51efe86bc7f5def1928389197 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Fri, 11 Mar 2011 15:53:53 +0900
+Subject: [PATCH] Fix preedit_string = NULL in ibus-x11 _free_ic()
+
+---
+ client/x11/main.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/client/x11/main.c b/client/x11/main.c
+index a2967cc..16104de 100644
+--- a/client/x11/main.c
++++ b/client/x11/main.c
+@@ -526,6 +526,7 @@ _free_ic (gpointer data, gpointer user_data)
+     g_return_if_fail (x11ic != NULL);
+ 
+     g_free (x11ic->preedit_string);
++    x11ic->preedit_string = NULL;
+ 
+     if (x11ic->preedit_attrs) {
+         g_object_unref (x11ic->preedit_attrs);
+-- 
+1.7.4.1
 
diff --git a/ibus.spec b/ibus.spec
index 35eb3b5..5374a0d 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -11,14 +11,14 @@
 
 Name:       ibus
 Version:    1.3.9
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
 URL:        http://code.google.com/p/ibus/
 Source0:    http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
 Source1:    xinput-ibus
-# Patch0:     ibus-HEAD.patch
+Patch0:     ibus-HEAD.patch
 Patch1:     ibus-541492-xkb.patch
 Patch2:     ibus-435880-surrounding-text.patch
 # Workaround for gtk3 2.90.5
@@ -134,7 +134,7 @@ The ibus-devel-docs package contains developer documentation for ibus
 
 %prep
 %setup -q
-# %patch0 -p1
+%patch0 -p1
 %if %have_libxkbfile
 %patch1 -p1 -b .xkb
 %endif
@@ -301,6 +301,14 @@ fi
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Fri Mar 11 2011 Takao Fujiwara <tfujiwar at redhat.com> - 1.3.9-3
+- Updated ibus-541492-xkb.patch
+  Fixed Bug 673047 - ibus-xkb does not work in non-XKB system
+- Updated ibus-HEAD.patch
+  Removed snooper in class_fini
+- Updated xinput-ibus
+  Set QT_IM_MODULE=xim if ibus-qt is not installed
+
 * Tue Jan 04 2011 Takao Fujiwara <tfujiwar at redhat.com> - 1.3.9-2
 - Update to 1.3.9
   Fixed Bug 621795 - crash in ibus_object_destroy
diff --git a/xinput-ibus b/xinput-ibus
index 3eec7fd..6a5ac4e 100644
--- a/xinput-ibus
+++ b/xinput-ibus
@@ -1,7 +1,7 @@
 XIM=ibus
 XIM_PROGRAM="/usr/bin/ibus-daemon"
 ICON="ibus"
-XIM_ARGS="--xim"
+XIM_ARGS="-r --xim"
 PREFERENCE_PROGRAM=/usr/bin/ibus-setup
 SHORT_DESC="IBus"
 GTK_IM_MODULE=ibus
@@ -10,4 +10,6 @@ if test -f /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so || \
    test -f /usr/lib64/qt4/plugins/inputmethods/libqtim-ibus.so;
 then
     QT_IM_MODULE=ibus
+else
+    QT_IM_MODULE=xim
 fi


More information about the scm-commits mailing list