public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Fixed Bug 747902 - mouse and ctrl+space not working
@ 2026-05-31  2:05 Takao Fujiwara
  0 siblings, 0 replies; 2+ messages in thread
From: Takao Fujiwara @ 2026-05-31  2:05 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/ibus
            Branch : autotool
            Commit : 5f53fe6fa62dc6644a2ec0c3cf70a9157b64bea8
            Author : Takao Fujiwara <tfujiwar@redhat.com>
            Date   : 2011-10-28T18:30:01+09:00
            Stats  : +595/-70 in 6 file(s)
            URL    : https://src.fedoraproject.org/rpms/ibus/c/5f53fe6fa62dc6644a2ec0c3cf70a9157b64bea8?branch=autotool

            Log:
            Fixed Bug 747902 - mouse and ctrl+space not working

Fixed rerotate next/previous key.
Updated ibus-HEAD.patch from upstream.

---
diff --git a/.gitignore b/.gitignore
index 8ae827f..aa119b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,5 @@ ibus-1.3.6.tar.gz
 /ibus-gjs-3.0.2.20111018.tar.gz
 /ibus-gjs-3.2.0.20111018.tar.gz
 /ibus-gjs-3.2.1.20111021.tar.gz
+/ibus-gjs-3.0.2.20111028.tar.gz
+/ibus-gjs-3.2.1.20111028.tar.gz

diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch
index 04809a4..50df294 100644
--- a/ibus-541492-xkb.patch
+++ b/ibus-541492-xkb.patch
@@ -1,6 +1,6 @@
-From 72785243dfb47e9028de47910bed603776e4ec6e Mon Sep 17 00:00:00 2001
+From 471e7583078c1e4b65219c9d37e16bf0d3d808bf Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Wed, 7 Sep 2011 15:27:26 +0900
+Date: Fri, 28 Oct 2011 15:25:19 +0900
 Subject: [PATCH] Add XKB layouts
 
 ---
@@ -85,10 +85,10 @@ index ff0fabc..056ddfc 100644
  	$(DCONF_DIRS)   \
  	$(NULL)
 diff --git a/configure.ac b/configure.ac
-index 367b069..e90f20e 100644
+index f452666..227e28e 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -191,6 +191,60 @@ else
+@@ -221,6 +221,60 @@ else
      enable_xim="no (disabled, use --enable-xim to enable)"
  fi
  
@@ -149,7 +149,7 @@ index 367b069..e90f20e 100644
  # GObject introspection
  GOBJECT_INTROSPECTION_CHECK([0.6.8])
  
-@@ -457,6 +511,7 @@ bindings/Makefile
+@@ -478,6 +532,7 @@ bindings/Makefile
  bindings/vala/Makefile
  dconf/Makefile
  dconf/dconf.xml.in
@@ -157,7 +157,7 @@ index 367b069..e90f20e 100644
  ])
  
  AC_OUTPUT
-@@ -472,6 +527,7 @@ Build options:
+@@ -493,6 +548,7 @@ Build options:
    Build gtk2 immodule       $enable_gtk2
    Build gtk3 immodule       $enable_gtk3
    Build XIM agent server    $enable_xim
@@ -280,10 +280,10 @@ index 7c8f8be..3c25605 100644
 +from xkbxml import *
  from _config import *
 diff --git a/ibus/bus.py b/ibus/bus.py
-index 5738fad..05ec49e 100644
+index a8a458d..84b4140 100644
 --- a/ibus/bus.py
 +++ b/ibus/bus.py
-@@ -160,6 +160,9 @@ class Bus(object.Object):
+@@ -163,6 +163,9 @@ class Bus(object.Object):
              data = serializable.deserialize_object(data)
          return data
  
@@ -2149,7 +2149,7 @@ index 0000000..af9ec53
 +        expander.set_data("checked", checked)
 +
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 90e412f..fc7008e 100644
+index 6f0321c..c62f3ed 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -186,6 +186,11 @@ typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
@@ -2165,7 +2165,7 @@ index 90e412f..fc7008e 100644
  ibusenumtypes.h: $(ibus_headers) ibusenumtypes.h.template
  	$(AM_V_GEN) ( top_builddir=`cd $(top_builddir) && pwd`; \
 diff --git a/src/ibus.h b/src/ibus.h
-index 0765799..5843b7f 100644
+index addc531..467c775 100644
 --- a/src/ibus.h
 +++ b/src/ibus.h
 @@ -45,6 +45,7 @@
@@ -9985,5 +9985,5 @@ index 0000000..6c00f1d
 +G_END_DECLS
 +#endif
 -- 
-1.7.5.4
+1.7.6.4
 

diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index d15f9b4..6035ce1 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,8 +1,132 @@
-From 5d519fb7a798e252dc28665694d53b0773542584 Mon Sep 17 00:00:00 2001
+From cb519c852dfc7a652df1768c81974d750ef48f58 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <ueno@unixuser.org>
+Date: Thu, 29 Sep 2011 12:24:53 +0900
+Subject: [PATCH] Fix hiding button items in GTK panel.
+
+BUG=none
+TEST=manual
+
+Review URL: http://codereview.appspot.com/5148041
+---
+ ui/gtk/toolitem.py |   12 ++++--------
+ 1 files changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/ui/gtk/toolitem.py b/ui/gtk/toolitem.py
+index 4bdffba..4f4f97d 100644
+--- a/ui/gtk/toolitem.py
++++ b/ui/gtk/toolitem.py
+@@ -73,11 +73,9 @@ class ToolButton(gtk.ToolButton, PropItem):
+         self.set_icon_name(self._prop.icon)
+ 
+         if self._prop.visible:
+-            self.set_no_show_all(False)
+-            self.show_all()
++            self.show()
+         else:
+-            self.set_no_show_all(True)
+-            self.hide_all()
++            self.hide()
+ 
+     def do_clicked(self):
+         self.emit("property-activate", self._prop.key, self._prop.state)
+@@ -128,11 +126,9 @@ class ToggleToolButton(gtk.ToggleToolButton, PropItem):
+         self.set_active(self._prop.state == ibus.PROP_STATE_CHECKED)
+         self.set_sensitive(self._prop.sensitive)
+         if self._prop.visible:
+-            self.set_no_show_all(False)
+-            self.show_all()
++            self.show()
+         else:
+-            self.set_no_show_all(True)
+-            self.hide_all()
++            self.hide()
+ 
+     def do_toggled(self):
+         # Do not send property-activate to engine in case the event is
+-- 
+1.7.6.4
+
+From d19018b8709847009d2e0836c942dd9f1385e7cb Mon Sep 17 00:00:00 2001
+From: Yusuke Sato <yusukes@chromium.org>
+Date: Sun, 9 Oct 2011 13:52:42 +0900
+Subject: [PATCH] Always consume a hotkey press
+
+BUG=1324
+
+Review URL: http://codereview.appspot.com/5242044
+---
+ bus/ibusimpl.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
+index 1942504..1494f5f 100644
+--- a/bus/ibusimpl.c
++++ b/bus/ibusimpl.c
+@@ -2066,21 +2066,21 @@ bus_ibus_impl_filter_keyboard_shortcuts (BusIBusImpl     *ibus,
+         else {
+             bus_input_context_enable (context);
+         }
+-        return (enabled != bus_input_context_is_enabled (context));
++        return TRUE;
+     }
+     if (event == enable_unconditional) {
+         gboolean enabled = bus_input_context_is_enabled (context);
+         if (!enabled) {
+             bus_input_context_enable (context);
+         }
+-        return bus_input_context_is_enabled (context);
++        return TRUE;
+     }
+     if (event == disable_unconditional) {
+         gboolean enabled = bus_input_context_is_enabled (context);
+         if (enabled) {
+             bus_input_context_disable (context);
+         }
+-        return !bus_input_context_is_enabled (context);
++        return TRUE;
+     }
+     if (event == next) {
+         if (bus_input_context_is_enabled (context)) {
+-- 
+1.7.6.4
+
+From ee966e327cc3b1b4bba40379bc0fbb3d46c38239 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 20 Oct 2011 11:00:23 +0900
+Date: Tue, 25 Oct 2011 10:37:22 +0900
+Subject: [PATCH] Add ibusutil.h in ibus.h
+
+BUG=http://code.google.com/p/ibus/issues/detail?id=1338
+TEST=Linux desktop
+
+Review URL: http://codereview.appspot.com/5294054
+---
+ src/ibus.h |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/src/ibus.h b/src/ibus.h
+index 0765799..addc531 100644
+--- a/src/ibus.h
++++ b/src/ibus.h
+@@ -52,6 +52,7 @@
+ #include <ibusconfig.h>
+ #include <ibusconfigservice.h>
+ #include <ibuspanelservice.h>
++#include <ibusutil.h>
+ 
+ #undef __IBUS_H_INSIDE__
+ 
+-- 
+1.7.6.4
+
+From 910f8a64098d89b04c50056f621ec1a49dd3e7ea Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Tue, 25 Oct 2011 10:50:34 +0900
 Subject: [PATCH] Fix previous_engine without global engine.
 
+BUG=http://code.google.com/p/ibus/issues/detail?id=1331
+TEST=Linux desktop
+
+Review URL: http://codereview.appspot.com/5297047
 ---
  bus/ibusimpl.c |   31 +++++++++++++++++++------------
  1 files changed, 19 insertions(+), 12 deletions(-)
@@ -81,3 +205,123 @@ index 1494f5f..0a4f3fb 100644
 -- 
 1.7.6.4
 
+From cca4fd8993613a6993965c3120323e43c4647ef5 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <ueno@unixuser.org>
+Date: Fri, 28 Oct 2011 15:42:08 +0900
+Subject: [PATCH] Don't set focus on GTK password entry.
+
+For an old bug:
+https://bugzilla.redhat.com/show_bug.cgi?id=484643
+Input method should be disabled on password entry for security reason.
+
+BUG=none
+TEST=manually with gtk-demo "Entry Buffer" example
+
+Review URL: http://codereview.appspot.com/5319053
+---
+ client/gtk2/ibusimcontext.c |   13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index 327a5d9..b6ca12e 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -734,6 +734,19 @@ ibus_im_context_focus_in (GtkIMContext *context)
+     if (ibusimcontext->has_focus)
+         return;
+ 
++    /* don't set focus on password entry */
++    if (ibusimcontext->client_window != NULL) {
++        GtkWidget *widget;
++
++        gdk_window_get_user_data (ibusimcontext->client_window,
++                                  (gpointer *)&widget);
++
++        if (GTK_IS_ENTRY (widget) &&
++            !gtk_entry_get_visibility (GTK_ENTRY (widget))) {
++            return;
++        }
++    }
++
+     if (_focus_im_context != NULL) {
+         g_assert (_focus_im_context != context);
+         gtk_im_context_focus_out (_focus_im_context);
+-- 
+1.7.6.4
+
+From d57b575f2a1b33b60ad84310a4e685e706f8a574 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 28 Oct 2011 13:09:07 +0900
+Subject: [PATCH] Rerotate next/previous engines without global engine.
+
+---
+ bus/ibusimpl.c |   33 ++++++++++++++++++++++++++++++---
+ 1 files changed, 30 insertions(+), 3 deletions(-)
+
+diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
+index 0a4f3fb..687f910 100644
+--- a/bus/ibusimpl.c
++++ b/bus/ibusimpl.c
+@@ -1056,7 +1056,7 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl     *ibus,
+     BusEngineProxy *engine;
+     IBusEngineDesc *desc;
+     IBusEngineDesc *next_desc = NULL;
+-    GList *p;
++    GList *p = NULL;
+ 
+     engine = bus_input_context_get_engine (context);
+     if (engine == NULL) {
+@@ -1074,21 +1074,48 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl     *ibus,
+     if (p != NULL) {
+         if (is_next) {
+             p = p->next;
+-        } else if (p->prev) {
++        } else {
+             p = p->prev;
+         }
+     }
++
++    /* Rotate register_engine_list and engine_list. */
++    if (p == NULL && is_next &&
++        g_list_find (ibus->register_engine_list, desc) != NULL) {
++        p = ibus->engine_list;
++    }
++    else if (p == NULL && !is_next &&
++             g_list_find (ibus->register_engine_list, desc) != NULL &&
++             ibus->engine_list != NULL) {
++        p = g_list_last (ibus->engine_list);
++    }
++
+     if (p == NULL) {
+         p = g_list_find (ibus->engine_list, desc);
+         if (p != NULL) {
+             if (is_next) {
+                 p = p->next;
+-            } else if (p->prev) {
++            } else {
+                 p = p->prev;
+             }
+         }
+     }
+ 
++    if (p == NULL && !is_next &&
++        g_list_find (ibus->engine_list, desc) != NULL) {
++        p = g_list_last (ibus->register_engine_list);
++        if (p == NULL) {
++            p = g_list_last (ibus->engine_list);
++        }
++    }
++    else if (p == NULL && is_next &&
++             g_list_find (ibus->engine_list, desc) != NULL) {
++        p = ibus->register_engine_list;
++        if (p == NULL) {
++            p = ibus->engine_list;
++        }
++    }
++
+     if (p != NULL) {
+         next_desc = (IBusEngineDesc*) p->data;
+     }
+-- 
+1.7.6.4
+

diff --git a/ibus-xx-bridge-hotkey.patch b/ibus-xx-bridge-hotkey.patch
index 3d58a19..c04c1e4 100644
--- a/ibus-xx-bridge-hotkey.patch
+++ b/ibus-xx-bridge-hotkey.patch
@@ -1,38 +1,40 @@
-From 5136e4136e38271da195da76e1377308dbc2ed64 Mon Sep 17 00:00:00 2001
+From 0c7589f84d4a0e8723f7fce37981d177a11da4f6 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 12 Aug 2011 16:42:52 +0900
+Date: Fri, 28 Oct 2011 15:30:12 +0900
 Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
  of on-off.
 
 ---
  bus/Makefile.am                 |   20 +-
- bus/ibusimpl.c                  |  501 ++++++++++++++++++++++++++++++++++-----
- bus/inputcontext.c              |   39 +++
+ bus/ibusimpl.c                  |  571 +++++++++++++++++++++++++++++++++++----
+ bus/inputcontext.c              |   81 ++++++
  bus/inputcontext.h              |   22 ++
  bus/registry.c                  |   61 +++++
  bus/registry.h                  |   10 +
  configure.ac                    |   31 +++
  data/Makefile.am                |    6 +-
- data/ibus.schemas.in            |  287 ----------------------
- data/ibus.schemas.in.in         |  300 +++++++++++++++++++++++
+ data/ibus.schemas.in            |  287 --------------------
+ data/ibus.schemas.in.in         |  300 ++++++++++++++++++++
  ibus/_config.py.in              |    6 +
- ibus/inputcontext.py            |   14 +-
- ibus/interface/iinputcontext.py |    4 +-
+ ibus/inputcontext.py            |   17 ++-
+ ibus/interface/iinputcontext.py |    7 +-
  ibus/xkbxml.py.in               |    4 +
  setup/enginecombobox.py         |    3 +
  setup/enginetreeview.py         |    8 +-
  setup/main.py                   |   24 ++
- setup/setup.ui                  |   55 +++++-
+ setup/setup.ui                  |   55 ++++-
  src/Makefile.am                 |   18 +-
  src/ibushotkey.c                |   11 +
  src/ibushotkey.h                |   11 +
+ src/ibusinputcontext.c          |   28 ++
+ src/ibusinputcontext.h          |   12 +
  src/ibusutil.c                  |   12 +
  src/ibusutil.h                  |   14 +
- ui/gtk/panel.py                 |  271 ++++++++++++++++++++--
+ ui/gtk/panel.py                 |  305 +++++++++++++++++++--
  xkb/Makefile.am                 |    2 +
- xkb/ibus-engine-xkb-main.c      |   19 ++
+ xkb/ibus-engine-xkb-main.c      |   16 ++
  xkb/xkbxml.c                    |   10 +-
- 28 files changed, 1374 insertions(+), 391 deletions(-)
+ 29 files changed, 1561 insertions(+), 391 deletions(-)
  delete mode 100644 data/ibus.schemas.in
  create mode 100644 data/ibus.schemas.in.in
 
@@ -89,18 +91,19 @@ index 853465c..00864ac 100644
  #include "types.h"
  #include "ibusimpl.h"
  #include "dbusimpl.h"
-@@ -79,6 +84,10 @@ struct _BusIBusImpl {
+@@ -79,6 +84,11 @@ struct _BusIBusImpl {
      /* engine-specific hotkeys */
      IBusHotkeyProfile *engines_hotkey_profile;
      GHashTable      *hotkey_to_engines_map;
 +
 +#if USE_BRIDGE_HOTKEY
 +    IBusEngineDesc *prev_hotkey_engine;
++    guint           xkb_group_length;
 +#endif
  };
  
  struct _BusIBusImplClass {
-@@ -99,6 +108,8 @@ enum {
+@@ -99,6 +109,8 @@ enum {
  static guint            _signals[LAST_SIGNAL] = { 0 };
  */
  
@@ -109,7 +112,7 @@ index 853465c..00864ac 100644
  /* functions prototype */
  static void      bus_ibus_impl_destroy           (BusIBusImpl        *ibus);
  static void      bus_ibus_impl_service_method_call
-@@ -285,6 +296,112 @@ _panel_destroy_cb (BusPanelProxy *panel,
+@@ -285,6 +297,112 @@ _panel_destroy_cb (BusPanelProxy *panel,
      g_object_unref (panel);
  }
  
@@ -222,7 +225,7 @@ index 853465c..00864ac 100644
  static void
  _config_set_value_done (GObject      *object,
                          GAsyncResult *res,
-@@ -562,6 +679,67 @@ bus_ibus_impl_set_hotkey (BusIBusImpl *i
+@@ -572,6 +690,67 @@ bus_ibus_impl_set_hotkey (BusIBusImpl *i
  
  }
  
@@ -290,7 +293,7 @@ index 853465c..00864ac 100644
  /**
   * bus_ibus_impl_set_trigger:
   *
-@@ -573,7 +751,15 @@ bus_ibus_impl_set_trigger (BusIBusImpl *
+@@ -583,7 +762,15 @@ bus_ibus_impl_set_trigger (BusIBusImpl *
  {
      GQuark hotkey = g_quark_from_static_string ("trigger");
      if (value != NULL) {
@@ -306,7 +309,7 @@ index 853465c..00864ac 100644
      }
  #ifndef OS_CHROMEOS
      else {
-@@ -639,6 +825,72 @@ bus_ibus_impl_set_previous_engine (BusIB
+@@ -649,6 +836,72 @@ bus_ibus_impl_set_previous_engine (BusIB
      bus_ibus_impl_set_hotkey (ibus, hotkey, value);
  }
  
@@ -379,7 +382,7 @@ index 853465c..00864ac 100644
  /**
   * bus_ibus_impl_set_preload_engines:
   *
-@@ -658,6 +910,9 @@ bus_ibus_impl_set_preload_engines (BusIB
+@@ -668,6 +921,9 @@ bus_ibus_impl_set_preload_engines (BusIB
              _set_preload_engines (ibus, value);
          }
      }
@@ -389,7 +392,7 @@ index 853465c..00864ac 100644
  #else
      _set_preload_engines (ibus, value);
  #endif
-@@ -1216,7 +1471,71 @@ _context_request_engine_cb (BusInputCont
+@@ -1226,7 +1482,73 @@ _context_request_engine_cb (BusInputCont
                              const gchar     *engine_name,
                              BusIBusImpl     *ibus)
  {
@@ -414,7 +417,9 @@ index 853465c..00864ac 100644
 +        }
 +    }
 +
-+    if (current_desc) {
++    if (current_desc && desc &&
++        g_strcmp0 (ibus_engine_desc_get_name (current_desc),
++                   ibus_engine_desc_get_name (desc)) != 0) {
 +        if (context) {
 +            bus_input_context_set_prev_hotkey_engine (context, current_desc);
 +        } else {
@@ -462,7 +467,7 @@ index 853465c..00864ac 100644
  }
  
  /**
-@@ -1255,8 +1574,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
+@@ -1265,8 +1587,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
          if (!desc) {
              if (ibus->register_engine_list) {
                  desc = (IBusEngineDesc *) ibus->register_engine_list->data;
@@ -477,7 +482,92 @@ index 853465c..00864ac 100644
                  desc = (IBusEngineDesc *) ibus->engine_list->data;
              }
          }
-@@ -1407,6 +1731,9 @@ bus_ibus_impl_set_focused_context (BusIBusImpl     *ibus,
+@@ -1311,9 +1638,20 @@ bus_ibus_impl_context_request_rotate_eng
+     desc = bus_engine_proxy_get_desc (engine);
+ 
+     p = g_list_find (ibus->register_engine_list, desc);
++#if USE_BRIDGE_HOTKEY
++    if (!use_bridge_hotkey (ibus)) {
++        p = NULL;
++    }
++#endif
+     if (p != NULL) {
+         if (is_next) {
+             p = p->next;
++#if USE_BRIDGE_HOTKEY
++            if (p && g_list_length (ibus->register_engine_list) -
++                    g_list_length (p) >= ibus->xkb_group_length) {
++                p = NULL;
++            }
++#endif
+         } else {
+             p = p->prev;
+         }
+@@ -1344,6 +1682,15 @@ bus_ibus_impl_context_request_rotate_eng
+     if (p == NULL && !is_next &&
+         g_list_find (ibus->engine_list, desc) != NULL) {
+         p = g_list_last (ibus->register_engine_list);
++#if USE_BRIDGE_HOTKEY
++        if (!use_bridge_hotkey (ibus)) {
++            p = NULL;
++        }
++        else if (ibus->xkb_group_length > 0) {
++            p = g_list_nth (ibus->register_engine_list,
++                            ibus->xkb_group_length - 1);
++        }
++#endif
+         if (p == NULL) {
+             p = g_list_last (ibus->engine_list);
+         }
+@@ -1351,6 +1698,11 @@ bus_ibus_impl_context_request_rotate_eng
+     else if (p == NULL && is_next &&
+              g_list_find (ibus->engine_list, desc) != NULL) {
+         p = ibus->register_engine_list;
++#if USE_BRIDGE_HOTKEY
++        if (!use_bridge_hotkey (ibus)) {
++            p = NULL;
++        }
++#endif
+         if (p == NULL) {
+             p = ibus->engine_list;
+         }
+@@ -1360,14 +1712,25 @@ bus_ibus_impl_context_request_rotate_eng
+         next_desc = (IBusEngineDesc*) p->data;
+     }
+     else {
++#if USE_BRIDGE_HOTKEY
++        if (use_bridge_hotkey (ibus) && ibus->register_engine_list) {
++            next_desc = (IBusEngineDesc *) ibus->register_engine_list->data;
++        }
++#else
+         if (ibus->register_engine_list) {
+             next_desc = (IBusEngineDesc *) ibus->register_engine_list->data;
+         }
++#endif
+         else if (ibus->engine_list) {
+             next_desc = (IBusEngineDesc *) ibus->engine_list->data;
+         }
+     }
+ 
++#if USE_BRIDGE_HOTKEY
++    if (use_bridge_hotkey (ibus)) {
++        bus_input_context_set_prev_hotkey_engine (context, desc);
++    }
++#endif
+     bus_ibus_impl_set_context_engine_from_desc (ibus, context, next_desc);
+ }
+ 
+@@ -1389,7 +1752,9 @@ bus_ibus_impl_context_request_previous_e
+         if (!ibus->global_previous_engine_name) {
+             ibus->global_previous_engine_name = bus_ibus_impl_load_global_previous_engine_name_from_config (ibus);
+         }
++#if 0
+         engine_name = ibus->global_previous_engine_name;
++#endif
+         if (engine_name != NULL) {
+             /* If the previous engine is removed from the engine list or the
+                current engine and the previous engine are the same one, force
+@@ -1450,6 +1815,9 @@ bus_ibus_impl_set_focused_context (BusIB
  
      BusEngineProxy *engine = NULL;
      gboolean is_enabled = FALSE;
@@ -487,7 +577,7 @@ index 853465c..00864ac 100644
  
      if (ibus->focused_context) {
          if (ibus->use_global_engine) {
-@@ -1336,6 +1741,9 @@ bus_ibus_impl_set_focused_context (BusIBusImpl     *ibus,
+@@ -1457,6 +1825,9 @@ bus_ibus_impl_set_focused_context (BusIB
              engine = bus_input_context_get_engine (ibus->focused_context);
              if (engine) {
                  is_enabled = bus_input_context_is_enabled (ibus->focused_context);
@@ -497,7 +587,7 @@ index 853465c..00864ac 100644
                  g_object_ref (engine);
                  bus_input_context_set_engine (ibus->focused_context, NULL);
              }
-@@ -1360,6 +1768,9 @@ bus_ibus_impl_set_focused_context (BusIBusImpl     *ibus,
+@@ -1481,6 +1852,9 @@ bus_ibus_impl_set_focused_context (BusIB
              if (is_enabled) {
                  bus_input_context_enable (context);
              }
@@ -507,7 +597,41 @@ index 853465c..00864ac 100644
              g_object_unref (engine);
          }
  
-@@ -2267,6 +2591,9 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -1710,6 +2084,25 @@ _context_disabled_cb (BusInputContext   
+ }
+ 
+ /**
++ * _context_set_xkb_engines_cb:
++ *
++ * A callback function to be called when the "set-xkb-engines" signal is sent to the context.
++ */
++static void
++_context_set_xkb_engines_cb (BusInputContext    *context,
++                             GList              *list,
++                             BusIBusImpl        *ibus)
++{
++    if (list == NULL) {
++        return;
++    }
++
++#if USE_BRIDGE_HOTKEY
++    ibus->xkb_group_length = g_list_length (list);
++#endif
++}
++
++/**
+  * bus_ibus_impl_create_input_context:
+  * @client: A name of a client. e.g. "gtk-im"
+  * @returns: A BusInputContext object.
+@@ -1737,6 +2130,7 @@ bus_ibus_impl_create_input_context (BusI
+         { "destroy",        G_CALLBACK (_context_destroy_cb) },
+         { "enabled",        G_CALLBACK (_context_enabled_cb) },
+         { "disabled",       G_CALLBACK (_context_disabled_cb) },
++        { "set-xkb-engines", G_CALLBACK (_context_set_xkb_engines_cb) },
+     };
+ 
+     gint i;
+@@ -2314,6 +2708,9 @@ bus_ibus_impl_filter_keyboard_shortcuts 
  
      GQuark event;
      GList *engine_list;
@@ -517,7 +641,7 @@ index 853465c..00864ac 100644
  
      if (trigger == 0) {
          trigger = g_quark_from_static_string ("trigger");
-@@ -2331,6 +2658,12 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2379,6 +2776,12 @@ bus_ibus_impl_filter_keyboard_shortcuts 
          return FALSE;
      }
  
@@ -530,7 +654,7 @@ index 853465c..00864ac 100644
      /* Then try engines hotkeys. */
      event = ibus_hotkey_profile_filter_key_event (ibus->engines_hotkey_profile,
                                                    keyval,
-@@ -2352,6 +2685,24 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2400,6 +2803,24 @@ bus_ibus_impl_filter_keyboard_shortcuts 
  
          g_assert (new_engine_desc);
  
@@ -555,7 +679,7 @@ index 853465c..00864ac 100644
          /* Find out what engine we should switch to. If the current engine has
           * the same hotkey, then we should switch to the next engine with the
           * same hotkey in the list. Otherwise, we just switch to the first
-@@ -2363,8 +2714,47 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2411,8 +2832,47 @@ bus_ibus_impl_filter_keyboard_shortcuts 
                  break;
              }
          }
@@ -565,7 +689,7 @@ index 853465c..00864ac 100644
 +        if (context == NULL) {
 +            return FALSE;
 +        }
- 
++
 +        /* This means RequestEngine signal might be done but SetEngine signal
 +         * has not been done yet by ibus status icon. */
 +        if (current_engine_desc == NULL &&
@@ -580,7 +704,7 @@ index 853465c..00864ac 100644
 +                                                              current_engine_desc);
 +                }
 +            }
-+
+ 
 +            /* If the previous engine is not included in engine_list and
 +             * the current engine is the defualt bridge engine,
 +             * the current engine is also not included in engine_list.
@@ -603,7 +727,7 @@ index 853465c..00864ac 100644
              bus_ibus_impl_set_context_engine_from_desc (ibus, context, new_engine_desc);
          }
  
-@@ -2468,59 +2858,54 @@ static void
+@@ -2516,59 +2976,54 @@ static void
  _add_engine_hotkey (IBusEngineDesc *engine, BusIBusImpl *ibus)
  {
      const gchar *hotkeys;
@@ -698,7 +822,7 @@ index 853465c..00864ac 100644
  
  /**
 diff --git a/bus/inputcontext.c b/bus/inputcontext.c
-index 4e8cdc5..43dedc0 100644
+index 3c81688..58ab8f4 100644
 --- a/bus/inputcontext.c
 +++ b/bus/inputcontext.c
 @@ -90,6 +90,12 @@ struct _BusInputContext {
@@ -714,7 +838,43 @@ index 4e8cdc5..43dedc0 100644
  };
  
  struct _BusInputContextClass {
-@@ -647,6 +653,11 @@ bus_input_context_destroy (BusInputContext *context)
+@@ -122,6 +128,7 @@ enum {
+     DISABLED,
+     ENGINE_CHANGED,
+     REQUEST_ENGINE,
++    SET_XKB_ENGINES,
+     LAST_SIGNAL,
+ };
+ 
+@@ -265,6 +272,9 @@ static const gchar introspection_xml[] =
+     "    <method name='GetEngine'>"
+     "      <arg direction='out' type='v' name='desc' />"
+     "    </method>"
++    "    <method name='SetXKBEngines'>"
++    "      <arg direction='in' type='av' name='engines' />"
++    "    </method>"
+     "    <method name='SetSurroundingText'>"
+     "      <arg direction='in' type='v' name='text' />"
+     "      <arg direction='in' type='u' name='cursor_pos' />"
+@@ -586,6 +596,17 @@ bus_input_context_class_init (BusInputContextClass *class)
+             1,
+             G_TYPE_STRING);
+ 
++    context_signals[SET_XKB_ENGINES] =
++        g_signal_new (I_("set-xkb-engines"),
++            G_TYPE_FROM_CLASS (class),
++            G_SIGNAL_RUN_LAST,
++            0,
++            NULL, NULL,
++            bus_marshal_VOID__OBJECT,
++            G_TYPE_NONE,
++            1,
++            G_TYPE_POINTER);
++
+     text_empty = ibus_text_new_from_string ("");
+     g_object_ref_sink (text_empty);
+     lookup_table_empty = ibus_lookup_table_new (9 /* page size */, 0, FALSE, FALSE);
+@@ -648,6 +669,11 @@ bus_input_context_destroy (BusInputContext *context)
          context->client = NULL;
      }
  
@@ -726,7 +886,48 @@ index 4e8cdc5..43dedc0 100644
      IBUS_OBJECT_CLASS (bus_input_context_parent_class)->destroy (IBUS_OBJECT (context));
  }
  
-@@ -2211,6 +2222,7 @@ bus_input_context_set_engine (BusInputContext *context,
+@@ -1048,6 +1074,32 @@ _ic_get_engine (BusInputContext       *context,
+ }
+ 
+ /**
++ * _ic_set_xkb_engines:
++ *
++ * Implement the "SetXKBEngines" method call of the org.freedesktop.IBus.InputContext interface.
++ */
++static void
++_ic_set_xkb_engines (BusInputContext       *context,
++                     GVariant              *parameters,
++                     GDBusMethodInvocation *invocation)
++{
++    GVariantIter *iter = NULL;
++    GVariant *var;
++    GList *list = NULL;
++
++    g_variant_get_child (parameters, 0, "av", &iter);
++    while (g_variant_iter_loop (iter, "v", &var)) {
++        list = g_list_append (list, ibus_serializable_deserialize (var));
++    }
++    g_variant_iter_free (iter);
++
++    g_signal_emit (context,
++                   context_signals[SET_XKB_ENGINES], 0,
++                   list);
++    return;
++}
++
++/**
+  * bus_input_context_service_method_call:
+  *
+  * Handle a D-Bus method call whose destination and interface name are both "org.freedesktop.IBus.InputContext"
+@@ -1126,6 +1178,7 @@ bus_input_context_service_method_call (IBusService            *service,
+         { "IsEnabled",         _ic_is_enabled },
+         { "SetEngine",         _ic_set_engine },
+         { "GetEngine",         _ic_get_engine },
++        { "SetXKBEngines",     _ic_set_xkb_engines },
+         { "SetSurroundingText", _ic_set_surrounding_text},
+     };
+ 
+@@ -2218,6 +2271,7 @@ bus_input_context_set_engine (BusInputContext *context,
      }
      else {
          gint i;
@@ -734,7 +935,7 @@ index 4e8cdc5..43dedc0 100644
          context->engine = engine;
          g_object_ref (context->engine);
  
-@@ -2538,3 +2550,30 @@ bus_input_context_get_client (BusInputContext *context)
+@@ -2542,3 +2596,30 @@ bus_input_context_get_client (BusInputContext *context)
      g_assert (BUS_IS_INPUT_CONTEXT (context));
      return context->client;
  }
@@ -1056,7 +1257,7 @@ index a830136..4c3c980 100644
 +DEFAULT_BRIDGE_ENGINE_NAME='@DEFAULT_BRIDGE_ENGINE_NAME@'
  ISOCODES_PREFIX='@ISOCODES_PREFIX@'
 diff --git a/ibus/inputcontext.py b/ibus/inputcontext.py
-index ceeb56d..b3c2f65 100644
+index 64a6ba2..b471e20 100644
 --- a/ibus/inputcontext.py
 +++ b/ibus/inputcontext.py
 @@ -28,6 +28,7 @@ import sys
@@ -1067,7 +1268,7 @@ index ceeb56d..b3c2f65 100644
  import object
  import common
  import serializable
-@@ -279,8 +280,19 @@ class InputContext(object.Object):
+@@ -283,8 +284,22 @@ class InputContext(object.Object):
          except:
              return None
  
@@ -1083,16 +1284,19 @@ index ceeb56d..b3c2f65 100644
 +                                        reply_handler=self.__handle_ic_reply,
 +                                        error_handler=self.__handle_ic_error)
 +
-+    def set_bridge_engine(self):
-+        return self.__context.SetEngine(_config.DEFAULT_BRIDGE_ENGINE_NAME)
++    def set_xkb_engines(self, engines):
++        engines = map(lambda e: serializable.serialize_object(e), engines)
++        return self.__context.SetXKBEngines(engines,
++                                            reply_handler=self.__handle_ic_reply,
++                                            error_handler=self.__handle_ic_error)
  
      def introspect(self):
          return self.__context.Introspect()
 diff --git a/ibus/interface/iinputcontext.py b/ibus/interface/iinputcontext.py
-index 1d3cd2a..58d75e5 100644
+index 06ce519..3b655dc 100644
 --- a/ibus/interface/iinputcontext.py
 +++ b/ibus/interface/iinputcontext.py
-@@ -76,8 +76,8 @@ class IInputContext(dbus.service.Object):
+@@ -76,8 +76,11 @@ class IInputContext(dbus.service.Object):
      @method(out_signature="v")
      def GetEngine(self): pass
  
@@ -1100,6 +1304,9 @@ index 1d3cd2a..58d75e5 100644
 -    def SetEngine(self, engine_name): pass
 +    @async_method(in_signature="s")
 +    def SetEngine(self, engine_name, reply_cb, error_cb): pass
++
++    @async_method(in_signature="av")
++    def SetXKBEngines(self, engines, reply_cb, error_cb): pass
  
      @method()
      def Destroy(self): pass
@@ -1342,6 +1549,67 @@ index 9a341f6..92ec6af 100644
 +
  G_END_DECLS
  #endif
+diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
+index 54e30ae..c37a71d 100644
+--- a/src/ibusinputcontext.c
++++ b/src/ibusinputcontext.c
+@@ -1219,6 +1219,33 @@ ibus_input_context_set_engine (IBusInputContext *context,
+                        );
+ }
+ 
++void
++ibus_input_context_set_xkb_engines (IBusInputContext *context,
++                                    GList            *list)
++{
++    GVariantBuilder builder;
++    GList *p;
++
++    g_assert (IBUS_IS_INPUT_CONTEXT (context));
++    g_assert (list);
++
++    g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
++    for (p = list; p; p = p->next) {
++        g_variant_builder_add (&builder, "v",
++                               ibus_serializable_serialize ((IBusSerializable *) p->data));
++    }
++
++    g_dbus_proxy_call ((GDBusProxy *) context,
++                       "SetXKBEngines",                     /* method_name */
++                       g_variant_new ("(av)", &builder),    /* parameters */
++                       G_DBUS_CALL_FLAGS_NONE,              /* flags */
++                       -1,                                  /* timeout */
++                       NULL,                                /* cancellable */
++                       NULL,                                /* callback */
++                       NULL                                 /* user_data */
++                       );
++}
++
+ #define DEFINE_FUNC(name, Name)                                         \
+     void                                                                \
+     ibus_input_context_##name (IBusInputContext *context)               \
+diff --git a/src/ibusinputcontext.h b/src/ibusinputcontext.h
+index be3c502..40b902e 100644
+--- a/src/ibusinputcontext.h
++++ b/src/ibusinputcontext.h
+@@ -495,6 +495,18 @@ void         ibus_input_context_set_engine  (IBusInputContext   *context,
+                                              const gchar        *name);
+ 
+ /**
++ * ibus_input_context_set_xkb_engines:
++ * @context: An IBusInputContext.
++ * @list: (transfer container) (element-type IBusEngineDesc):
++ *     A list of the engines.
++ *
++ * Set XKB group layouts from the desktop session.
++ */
++void         ibus_input_context_set_xkb_engines
++                                            (IBusInputContext *context,
++                                             GList            *list);
++
++/**
+  * ibus_input_context_set_surrounding_text:
+  * @context: An #IBusInputContext.
+  * @text: An #IBusText surrounding the current cursor on the application.
 diff --git a/src/ibusutil.c b/src/ibusutil.c
 index ddb6b9e..46dab1a 100644
 --- a/src/ibusutil.c
@@ -1431,7 +1699,7 @@ index 8804634..bef6fbf 100644
  
      def set_cursor_location(self, x, y, w, h):
          self.__candidate_panel.set_cursor_location(x, y, w, h)
-@@ -233,12 +249,97 @@ class Panel(ibus.PanelBase):
+@@ -233,12 +249,99 @@ class Panel(ibus.PanelBase):
      def __set_im_name(self, name):
          self.__language_bar.set_im_name(name)
  
@@ -1489,6 +1757,8 @@ index 8804634..bef6fbf 100644
 +                                                  name)
 +                self.__disabled_engines.append(engine)
 +            self.__disabled_engines_id = self.__xkblayout.get_group()
++            if use_bridge_hotkey and len(self.__disabled_engines) > 0:
++                self.__focus_ic.set_xkb_engines(self.__disabled_engines)
 +        if not use_bridge_hotkey:
 +            return
 +        if len(self.__disabled_engines) > 0:
@@ -1530,7 +1800,7 @@ index 8804634..bef6fbf 100644
          if not enabled:
              self.__set_im_icon(ICON_KEYBOARD)
              self.__set_im_name(None)
-@@ -250,7 +351,7 @@ class Panel(ibus.PanelBase):
+@@ -250,7 +353,7 @@ class Panel(ibus.PanelBase):
                  self.__set_im_icon(engine.icon)
                  self.__set_im_name(engine.longname)
                  if self.__bus.get_use_sys_layout():
@@ -1539,7 +1809,7 @@ index 8804634..bef6fbf 100644
              else:
                  self.__set_im_icon(ICON_KEYBOARD)
                  self.__set_im_name(None)
-@@ -273,7 +374,21 @@ class Panel(ibus.PanelBase):
+@@ -273,7 +376,21 @@ class Panel(ibus.PanelBase):
              return
  
          enabled = self.__focus_ic.is_enabled()
@@ -1562,7 +1832,7 @@ index 8804634..bef6fbf 100644
  
          if enabled == False:
              self.reset()
-@@ -287,7 +402,7 @@ class Panel(ibus.PanelBase):
+@@ -287,7 +404,7 @@ class Panel(ibus.PanelBase):
                  self.__set_im_icon(engine.icon)
                  self.__set_im_name(engine.longname)
                  if self.__bus.get_use_sys_layout():
@@ -1571,7 +1841,7 @@ index 8804634..bef6fbf 100644
              else:
                  self.__set_im_icon(ICON_KEYBOARD)
                  self.__set_im_name(None)
-@@ -315,6 +430,7 @@ class Panel(ibus.PanelBase):
+@@ -315,6 +432,7 @@ class Panel(ibus.PanelBase):
  
      def __config_load_show(self):
          show = self.__config.get_value("panel", "show", 0)
@@ -1579,7 +1849,7 @@ index 8804634..bef6fbf 100644
          self.__language_bar.set_show(show)
  
      def __config_load_position(self):
-@@ -443,6 +559,21 @@ class Panel(ibus.PanelBase):
+@@ -443,6 +561,21 @@ class Panel(ibus.PanelBase):
      #     menu.set_take_focus(False)
      #     return menu
  
@@ -1601,7 +1871,7 @@ index 8804634..bef6fbf 100644
      def __create_im_menu(self):
          engines = self.__bus.list_active_engines()
          current_engine = \
-@@ -453,25 +584,39 @@ class Panel(ibus.PanelBase):
+@@ -453,25 +586,39 @@ class Panel(ibus.PanelBase):
          size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
          menu = gtk.Menu()
          for i, engine in enumerate(engines):
@@ -1654,7 +1924,7 @@ index 8804634..bef6fbf 100644
  
          menu.show_all()
          menu.set_take_focus(False)
-@@ -523,8 +668,25 @@ class Panel(ibus.PanelBase):
+@@ -523,8 +670,25 @@ class Panel(ibus.PanelBase):
          if not self.__focus_ic:
              return
          if engine:
@@ -1681,7 +1951,7 @@ index 8804634..bef6fbf 100644
              self.__focus_ic.disable()
  
      def __sys_menu_item_activate_cb(self, item, command):
-@@ -573,12 +735,113 @@ class Panel(ibus.PanelBase):
+@@ -573,12 +737,113 @@ class Panel(ibus.PanelBase):
          self.__setup_pid = pid
          glib.child_watch_add(self.__setup_pid, self.__child_watch_cb)
  

diff --git a/ibus.spec b/ibus.spec
index 5cc2439..e8c5568 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -5,15 +5,21 @@
 %define have_libxkbfile 1
 %define have_gjsfile 1
 
+%if 0%{?fedora} > 16
+%define have_bridge_hotkey 1
+%define ibus_gjs_version 3.2.1.20111028
+%define ibus_gjs_build_failure 0
+%else
 %if 0%{?fedora} > 15
 %define have_bridge_hotkey 1
-%define ibus_gjs_version 3.2.1.20111021
-%define ibus_gjs_build_failure 1
+%define ibus_gjs_version 3.2.1.20111028
+%define ibus_gjs_build_failure 0
 %else
 %define have_bridge_hotkey 0
-%define ibus_gjs_version 3.0.2.20111018
+%define ibus_gjs_version 3.0.2.20111028
 %define ibus_gjs_build_failure 0
 %endif
+%endif
 
 %define ibus_api_version 1.0
 
@@ -24,7 +30,7 @@
 
 Name:       ibus
 Version:    1.4.0
-Release:    6%{?dist}
+Release:    7%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
@@ -386,6 +392,9 @@ fi
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Fri Oct 28 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-7
+- Fixed Bug 747902 - mouse and ctrl+space not working
+
 * Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.0-6
 - Rebuilt for glibc bug#747377
 

diff --git a/sources b/sources
index f03ebdf..1f110bf 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
 b4f063794e89c71eb1f8cb543210da30  ibus-1.4.0.tar.gz
-21093439be2c7321cb1a85ca3307a0b5  ibus-gjs-3.0.2.20111018.tar.gz
-636991ea42551a754c04996ae396bf69  ibus-gjs-3.2.1.20111021.tar.gz
+de3f3ea3f94b857e253943c54f77f63c  ibus-gjs-3.0.2.20111028.tar.gz
+68800261522aa391f972c93c7317c05b  ibus-gjs-3.2.1.20111028.tar.gz

^ permalink raw reply related	[flat|nested] 2+ messages in thread
* [rpms/ibus] autotool: Fixed Bug 747902 - mouse and ctrl+space not working
@ 2026-05-31  2:05 Takao Fujiwara
  0 siblings, 0 replies; 2+ messages in thread
From: Takao Fujiwara @ 2026-05-31  2:05 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/ibus
            Branch : autotool
            Commit : be895308573868eda0af4d5e72f32e39110cf1ed
            Author : Takao Fujiwara <tfujiwar@redhat.com>
            Date   : 2011-11-02T18:04:13+09:00
            Stats  : +233/-144 in 4 file(s)
            URL    : https://src.fedoraproject.org/rpms/ibus/c/be895308573868eda0af4d5e72f32e39110cf1ed?branch=autotool

            Log:
            Fixed Bug 747902 - mouse and ctrl+space not working

Updated ibus-HEAD.patch
- Fixed prev/next keys without global engine.
Updated ibus-xx-bridge-hotkey.patch for f16
- Fixed Bug 747902 - mouse and ctrl+space not working
- Fixed Bug 749770 - IME hotkey after Control + Space
Updated ibus-711632-fedora-fallback-icon.patch
- Fixed Bug 717831 - use old icon for desktops other than gnome

---
diff --git a/ibus-711632-fedora-fallback-icon.patch b/ibus-711632-fedora-fallback-icon.patch
index 8ad9e9a..4e1a273 100644
--- a/ibus-711632-fedora-fallback-icon.patch
+++ b/ibus-711632-fedora-fallback-icon.patch
@@ -1,3 +1,22 @@
+--- ibus/ibus/_config.py.in.orig	2011-11-01 18:32:09.235894859 +0900
++++ ibus/ibus/_config.py.in	2011-11-02 10:26:40.672355868 +0900
+@@ -47,10 +47,14 @@ def get_license():
+ 
+ def get_ICON_KEYBOARD():
+     import gtk
+-    theme = gtk.icon_theme_get_default()
+     icon = '@IBUS_ICON_KEYBOARD@'
++    fallback_icon = 'ibus-keyboard'
++    settings = gtk.settings_get_default()
++    if settings.get_property('gtk-icon-theme-name') != 'gnome':
++        icon = fallback_icon
++    theme = gtk.icon_theme_get_default()
+     if not theme.lookup_icon(icon, 18, 0):
+-        icon = 'ibus-keyboard'
++        icon = fallback_icon
+     return icon
+ 
+ def use_bridge_hotkey():
 --- ibus/ui/gtk/main.py.orig	2011-04-25 12:33:39.296999692 +0900
 +++ ibus/ui/gtk/main.py	2011-06-08 11:53:44.027232075 +0900
 @@ -86,6 +86,9 @@ class UIApplication:
@@ -10,9 +29,9 @@
      # gtk.settings_get_default().props.gtk_theme_name = "/home/phuang/.themes/aud-Default/gtk-2.0/gtkrc"
      # gtk.rc_parse("./themes/default/gtkrc")
      UIApplication(replace).run()
---- ibus/ui/gtk/panel.py.orig	2011-06-08 12:16:40.107577438 +0900
-+++ ibus/ui/gtk/panel.py	2011-06-08 12:17:00.440460268 +0900
-@@ -507,7 +507,7 @@ class Panel(ibus.PanelBase):
+--- ibus/ui/gtk/panel.py.orig	2011-11-01 18:31:49.845898037 +0900
++++ ibus/ui/gtk/panel.py	2011-11-01 18:31:34.480900329 +0900
+@@ -654,7 +660,7 @@ class Panel(ibus.PanelBase):
              menu = gtk.Menu()
              item = gtk.ImageMenuItem(_("No input window"))
              size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)

diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 6035ce1..83f0a41 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -249,17 +249,17 @@ index 327a5d9..b6ca12e 100644
 -- 
 1.7.6.4
 
-From d57b575f2a1b33b60ad84310a4e685e706f8a574 Mon Sep 17 00:00:00 2001
+From 05f9556278f791bacc0f1019427f8575fa39c9db Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 28 Oct 2011 13:09:07 +0900
+Date: Wed, 2 Nov 2011 10:47:55 +0900
 Subject: [PATCH] Rerotate next/previous engines without global engine.
 
 ---
- bus/ibusimpl.c |   33 ++++++++++++++++++++++++++++++---
- 1 files changed, 30 insertions(+), 3 deletions(-)
+ bus/ibusimpl.c |   31 ++++++++++++++++++++++++++++---
+ 1 files changed, 28 insertions(+), 3 deletions(-)
 
 diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index 0a4f3fb..687f910 100644
+index 0a4f3fb..059d660 100644
 --- a/bus/ibusimpl.c
 +++ b/bus/ibusimpl.c
 @@ -1056,7 +1056,7 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl     *ibus,
@@ -271,7 +271,7 @@ index 0a4f3fb..687f910 100644
  
      engine = bus_input_context_get_engine (context);
      if (engine == NULL) {
-@@ -1074,21 +1074,48 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl     *ibus,
+@@ -1074,21 +1074,46 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl     *ibus,
      if (p != NULL) {
          if (is_next) {
              p = p->next;
@@ -282,14 +282,12 @@ index 0a4f3fb..687f910 100644
      }
 +
 +    /* Rotate register_engine_list and engine_list. */
-+    if (p == NULL && is_next &&
-+        g_list_find (ibus->register_engine_list, desc) != NULL) {
-+        p = ibus->engine_list;
-+    }
-+    else if (p == NULL && !is_next &&
-+             g_list_find (ibus->register_engine_list, desc) != NULL &&
-+             ibus->engine_list != NULL) {
-+        p = g_list_last (ibus->engine_list);
++    if (p == NULL && g_list_find (ibus->register_engine_list, desc) != NULL) {
++        if (is_next) {
++            p = ibus->engine_list;
++        } else {
++            p = g_list_last (ibus->engine_list);
++        }
 +    }
 +
      if (p == NULL) {
@@ -304,18 +302,18 @@ index 0a4f3fb..687f910 100644
          }
      }
  
-+    if (p == NULL && !is_next &&
-+        g_list_find (ibus->engine_list, desc) != NULL) {
-+        p = g_list_last (ibus->register_engine_list);
-+        if (p == NULL) {
-+            p = g_list_last (ibus->engine_list);
-+        }
-+    }
-+    else if (p == NULL && is_next &&
-+             g_list_find (ibus->engine_list, desc) != NULL) {
-+        p = ibus->register_engine_list;
-+        if (p == NULL) {
-+            p = ibus->engine_list;
++    /* Rerotate register_engine_list and engine_list. */
++    if (p == NULL && g_list_find (ibus->engine_list, desc) != NULL) {
++        if (is_next) {
++            p = ibus->register_engine_list;
++            if (p == NULL) {
++                p = ibus->engine_list;
++            }
++        } else {
++            p = g_list_last (ibus->register_engine_list);
++            if (p == NULL) {
++                p = g_list_last (ibus->engine_list);
++            }
 +        }
 +    }
 +

diff --git a/ibus-xx-bridge-hotkey.patch b/ibus-xx-bridge-hotkey.patch
index c04c1e4..149a534 100644
--- a/ibus-xx-bridge-hotkey.patch
+++ b/ibus-xx-bridge-hotkey.patch
@@ -1,22 +1,22 @@
-From 0c7589f84d4a0e8723f7fce37981d177a11da4f6 Mon Sep 17 00:00:00 2001
+From d4fd56784b18c8eb321c75e86a9c21d3e1984888 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 28 Oct 2011 15:30:12 +0900
+Date: Wed, 2 Nov 2011 12:01:55 +0900
 Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
  of on-off.
 
 ---
  bus/Makefile.am                 |   20 +-
- bus/ibusimpl.c                  |  571 +++++++++++++++++++++++++++++++++++----
+ bus/ibusimpl.c                  |  598 +++++++++++++++++++++++++++++++++++----
  bus/inputcontext.c              |   81 ++++++
  bus/inputcontext.h              |   22 ++
- bus/registry.c                  |   61 +++++
+ bus/registry.c                  |   61 ++++
  bus/registry.h                  |   10 +
- configure.ac                    |   31 +++
+ configure.ac                    |   31 ++
  data/Makefile.am                |    6 +-
- data/ibus.schemas.in            |  287 --------------------
+ data/ibus.schemas.in            |  287 -------------------
  data/ibus.schemas.in.in         |  300 ++++++++++++++++++++
  ibus/_config.py.in              |    6 +
- ibus/inputcontext.py            |   17 ++-
+ ibus/inputcontext.py            |   17 +-
  ibus/interface/iinputcontext.py |    7 +-
  ibus/xkbxml.py.in               |    4 +
  setup/enginecombobox.py         |    3 +
@@ -26,15 +26,15 @@ Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
  src/Makefile.am                 |   18 +-
  src/ibushotkey.c                |   11 +
  src/ibushotkey.h                |   11 +
- src/ibusinputcontext.c          |   28 ++
+ src/ibusinputcontext.c          |   27 ++
  src/ibusinputcontext.h          |   12 +
  src/ibusutil.c                  |   12 +
  src/ibusutil.h                  |   14 +
- ui/gtk/panel.py                 |  305 +++++++++++++++++++--
+ ui/gtk/panel.py                 |  315 +++++++++++++++++++--
  xkb/Makefile.am                 |    2 +
- xkb/ibus-engine-xkb-main.c      |   16 ++
+ xkb/ibus-engine-xkb-main.c      |   16 +
  xkb/xkbxml.c                    |   10 +-
- 29 files changed, 1561 insertions(+), 391 deletions(-)
+ 29 files changed, 1596 insertions(+), 392 deletions(-)
  delete mode 100644 data/ibus.schemas.in
  create mode 100644 data/ibus.schemas.in.in
 
@@ -70,7 +70,7 @@ index 074b456..0efaa1b 100644
  AM_LDADD =                  \
  	@GOBJECT2_LIBS@         \
 diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index 853465c..00864ac 100644
+index 059d660..71bb6f1 100644
 --- a/bus/ibusimpl.c
 +++ b/bus/ibusimpl.c
 @@ -20,12 +20,17 @@
@@ -392,16 +392,66 @@ index 853465c..00864ac 100644
  #else
      _set_preload_engines (ibus, value);
  #endif
-@@ -1226,7 +1482,73 @@ _context_request_engine_cb (BusInputCont
+@@ -1216,6 +1472,53 @@ _find_engine_desc_by_name (BusIBusImpl *
+     return NULL;
+ }
+ 
++#if USE_BRIDGE_HOTKEY
++const gchar *
++_get_engine_desc_hotkeys_with_system (IBusEngineDesc *desc)
++{
++    const gchar *hotkeys = NULL;
++
++    /* If the user customized the trigger key, the trigger key is used for
++     * any IBus engines. */
++    if (_bridge_trigger_keys != NULL &&
++        *_bridge_trigger_keys != '\0' &&
++        g_strcmp0 (_bridge_trigger_keys, "Control+space") != 0) {
++
++        hotkeys = (const gchar *) _bridge_trigger_keys;
++    } else if (desc) {
++        hotkeys = ibus_engine_desc_get_hotkeys (desc);
++    }
++
++    /* If engine hotkeys are not defined in the compose xml file,
++     * IBus trigger keys are used. */
++    if (!hotkeys || !*hotkeys) {
++            hotkeys = (const gchar *) _bridge_trigger_keys;
++    }
++
++    return hotkeys;
++}
++
++void
++_update_hotkeys_by_prev_engine_desc (BusIBusImpl    *ibus,
++                                     IBusEngineDesc *next_desc,
++                                     IBusEngineDesc *prev_desc)
++{
++    struct _impl_and_desc {
++        BusIBusImpl    *ibus;
++        IBusEngineDesc *desc;
++    } id = {ibus, next_desc};
++    const gchar *hotkeys = NULL;
++
++    hotkeys = _get_engine_desc_hotkeys_with_system (prev_desc);
++    if (hotkeys && *hotkeys) {
++        ibus_hotkey_profile_foreach_hotkey (ibus->engines_hotkey_profile,
++                                            _foreach_remove_engine_hotkey,
++                                            &id);
++        _add_engine_hotkey_with_hotkeys (next_desc, ibus, hotkeys);
++    }
++}
++#endif
++
+ /**
+  * _context_request_engine_cb:
+  *
+@@ -1226,7 +1529,53 @@ _context_request_engine_cb (BusInputCont
                              const gchar     *engine_name,
                              BusIBusImpl     *ibus)
  {
 -    return bus_ibus_impl_get_engine_desc (ibus, engine_name);
 +    IBusEngineDesc *desc = bus_ibus_impl_get_engine_desc (ibus, engine_name);
-+    struct _impl_and_desc {
-+        BusIBusImpl    *ibus;
-+        IBusEngineDesc *desc;
-+    } id = {ibus, desc};
 +
 +#if USE_BRIDGE_HOTKEY
 +    IBusEngineDesc *current_desc = NULL;
@@ -417,16 +467,6 @@ index 853465c..00864ac 100644
 +        }
 +    }
 +
-+    if (current_desc && desc &&
-+        g_strcmp0 (ibus_engine_desc_get_name (current_desc),
-+                   ibus_engine_desc_get_name (desc)) != 0) {
-+        if (context) {
-+            bus_input_context_set_prev_hotkey_engine (context, current_desc);
-+        } else {
-+            ibus->prev_hotkey_engine = current_desc;
-+        }
-+    }
-+
 +    if (((current_desc == NULL && desc != NULL) ||
 +         (current_desc != NULL && desc != NULL &&
 +          g_strcmp0 (ibus_engine_desc_get_name (current_desc),
@@ -434,40 +474,34 @@ index 853465c..00864ac 100644
 +        g_ascii_strncasecmp (ibus_engine_desc_get_name (desc),
 +                             DEFAULT_BRIDGE_ENGINE_NAME,
 +                             strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
-+        const gchar *hotkeys = NULL;
-+
-+        /* If the user customized the trigger key, the trigger key is used for
-+         * any IBus engines. */
-+        if (_bridge_trigger_keys != NULL &&
-+            *_bridge_trigger_keys != '\0' &&
-+            g_strcmp0 (_bridge_trigger_keys, "Control+space") != 0) {
-+
-+            hotkeys = (const gchar *) _bridge_trigger_keys;
-+        } else if (current_desc) {
-+            hotkeys = ibus_engine_desc_get_hotkeys (current_desc);
-+        }
++        _update_hotkeys_by_prev_engine_desc (ibus, desc, current_desc);
++    }
 +
-+        /* If engine hotkeys are not defined in the compose xml file,
-+         * IBus trigger keys are used. */
-+        if (!hotkeys || !*hotkeys) {
-+            hotkeys = (const gchar *) _bridge_trigger_keys;
++    if (current_desc && desc &&
++        g_strcmp0 (ibus_engine_desc_get_name (current_desc),
++                   ibus_engine_desc_get_name (desc)) != 0) {
++        if (context) {
++            bus_input_context_set_prev_hotkey_engine (context, current_desc);
++        } else {
++            ibus->prev_hotkey_engine = current_desc;
 +        }
 +
-+        if (!hotkeys || !*hotkeys) {
-+            return desc;
++        /* If the previous engine is not included in engine_list and
++         * the current engine is the defualt bridge engine,
++         * the current engine is also not included in engine_list.
++         * So the engine is added here. */
++        if (g_ascii_strncasecmp (ibus_engine_desc_get_name (current_desc),
++                                 DEFAULT_BRIDGE_ENGINE_NAME,
++                                 strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
++            _update_hotkeys_by_prev_engine_desc (ibus, current_desc, desc);
 +        }
-+
-+        ibus_hotkey_profile_foreach_hotkey (ibus->engines_hotkey_profile,
-+                                            _foreach_remove_engine_hotkey,
-+                                            &id);
-+        _add_engine_hotkey_with_hotkeys (desc, ibus, hotkeys);
 +    }
 +#endif
 +    return desc;
  }
  
  /**
-@@ -1265,8 +1587,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
+@@ -1265,8 +1614,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
          if (!desc) {
              if (ibus->register_engine_list) {
                  desc = (IBusEngineDesc *) ibus->register_engine_list->data;
@@ -482,7 +516,7 @@ index 853465c..00864ac 100644
                  desc = (IBusEngineDesc *) ibus->engine_list->data;
              }
          }
-@@ -1311,9 +1638,20 @@ bus_ibus_impl_context_request_rotate_eng
+@@ -1311,9 +1665,20 @@ bus_ibus_impl_context_request_rotate_eng
      desc = bus_engine_proxy_get_desc (engine);
  
      p = g_list_find (ibus->register_engine_list, desc);
@@ -503,35 +537,33 @@ index 853465c..00864ac 100644
          } else {
              p = p->prev;
          }
-@@ -1344,6 +1682,15 @@ bus_ibus_impl_context_request_rotate_eng
-     if (p == NULL && !is_next &&
-         g_list_find (ibus->engine_list, desc) != NULL) {
-         p = g_list_last (ibus->register_engine_list);
+@@ -1343,11 +1708,25 @@ bus_ibus_impl_context_request_rotate_eng
+     if (p == NULL && g_list_find (ibus->engine_list, desc) != NULL) {
+         if (is_next) {
+             p = ibus->register_engine_list;
 +#if USE_BRIDGE_HOTKEY
-+        if (!use_bridge_hotkey (ibus)) {
-+            p = NULL;
-+        }
-+        else if (ibus->xkb_group_length > 0) {
-+            p = g_list_nth (ibus->register_engine_list,
-+                            ibus->xkb_group_length - 1);
-+        }
++            if (!use_bridge_hotkey (ibus)) {
++                p = NULL;
++            }
 +#endif
-         if (p == NULL) {
-             p = g_list_last (ibus->engine_list);
-         }
-@@ -1351,6 +1698,11 @@ bus_ibus_impl_context_request_rotate_eng
-     else if (p == NULL && is_next &&
-              g_list_find (ibus->engine_list, desc) != NULL) {
-         p = ibus->register_engine_list;
+             if (p == NULL) {
+                 p = ibus->engine_list;
+             }
+         } else {
+             p = g_list_last (ibus->register_engine_list);
 +#if USE_BRIDGE_HOTKEY
-+        if (!use_bridge_hotkey (ibus)) {
-+            p = NULL;
-+        }
++            if (!use_bridge_hotkey (ibus)) {
++                p = NULL;
++            }
++            else if (ibus->xkb_group_length > 0) {
++                p = g_list_nth (ibus->register_engine_list,
++                                ibus->xkb_group_length - 1);
++            }
 +#endif
-         if (p == NULL) {
-             p = ibus->engine_list;
-         }
-@@ -1360,14 +1712,25 @@ bus_ibus_impl_context_request_rotate_eng
+             if (p == NULL) {
+                 p = g_list_last (ibus->engine_list);
+             }
+@@ -1358,14 +1737,31 @@ bus_ibus_impl_context_request_rotate_eng
          next_desc = (IBusEngineDesc*) p->data;
      }
      else {
@@ -550,14 +582,20 @@ index 853465c..00864ac 100644
      }
  
 +#if USE_BRIDGE_HOTKEY
-+    if (use_bridge_hotkey (ibus)) {
++    if (use_bridge_hotkey (ibus) && desc != next_desc) {
 +        bus_input_context_set_prev_hotkey_engine (context, desc);
++        if (desc != NULL &&
++            g_ascii_strncasecmp (ibus_engine_desc_get_name (desc),
++                                 DEFAULT_BRIDGE_ENGINE_NAME,
++                                 strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
++            _update_hotkeys_by_prev_engine_desc (ibus, desc, next_desc);
++        }
 +    }
 +#endif
      bus_ibus_impl_set_context_engine_from_desc (ibus, context, next_desc);
  }
  
-@@ -1389,7 +1752,9 @@ bus_ibus_impl_context_request_previous_e
+@@ -1387,7 +1783,9 @@ bus_ibus_impl_context_request_previous_e
          if (!ibus->global_previous_engine_name) {
              ibus->global_previous_engine_name = bus_ibus_impl_load_global_previous_engine_name_from_config (ibus);
          }
@@ -567,7 +605,7 @@ index 853465c..00864ac 100644
          if (engine_name != NULL) {
              /* If the previous engine is removed from the engine list or the
                 current engine and the previous engine are the same one, force
-@@ -1450,6 +1815,9 @@ bus_ibus_impl_set_focused_context (BusIB
+@@ -1448,6 +1846,9 @@ bus_ibus_impl_set_focused_context (BusIB
  
      BusEngineProxy *engine = NULL;
      gboolean is_enabled = FALSE;
@@ -577,7 +615,7 @@ index 853465c..00864ac 100644
  
      if (ibus->focused_context) {
          if (ibus->use_global_engine) {
-@@ -1457,6 +1825,9 @@ bus_ibus_impl_set_focused_context (BusIB
+@@ -1455,6 +1856,9 @@ bus_ibus_impl_set_focused_context (BusIB
              engine = bus_input_context_get_engine (ibus->focused_context);
              if (engine) {
                  is_enabled = bus_input_context_is_enabled (ibus->focused_context);
@@ -587,7 +625,7 @@ index 853465c..00864ac 100644
                  g_object_ref (engine);
                  bus_input_context_set_engine (ibus->focused_context, NULL);
              }
-@@ -1481,6 +1852,9 @@ bus_ibus_impl_set_focused_context (BusIB
+@@ -1479,6 +1883,9 @@ bus_ibus_impl_set_focused_context (BusIB
              if (is_enabled) {
                  bus_input_context_enable (context);
              }
@@ -597,7 +635,7 @@ index 853465c..00864ac 100644
              g_object_unref (engine);
          }
  
-@@ -1710,6 +2084,25 @@ _context_disabled_cb (BusInputContext   
+@@ -1708,6 +2115,25 @@ _context_disabled_cb (BusInputContext   
  }
  
  /**
@@ -623,7 +661,7 @@ index 853465c..00864ac 100644
   * bus_ibus_impl_create_input_context:
   * @client: A name of a client. e.g. "gtk-im"
   * @returns: A BusInputContext object.
-@@ -1737,6 +2130,7 @@ bus_ibus_impl_create_input_context (BusI
+@@ -1735,6 +2161,7 @@ bus_ibus_impl_create_input_context (BusI
          { "destroy",        G_CALLBACK (_context_destroy_cb) },
          { "enabled",        G_CALLBACK (_context_enabled_cb) },
          { "disabled",       G_CALLBACK (_context_disabled_cb) },
@@ -631,7 +669,7 @@ index 853465c..00864ac 100644
      };
  
      gint i;
-@@ -2314,6 +2708,9 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2312,6 +2739,9 @@ bus_ibus_impl_filter_keyboard_shortcuts 
  
      GQuark event;
      GList *engine_list;
@@ -641,7 +679,7 @@ index 853465c..00864ac 100644
  
      if (trigger == 0) {
          trigger = g_quark_from_static_string ("trigger");
-@@ -2379,6 +2776,12 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2377,6 +2807,12 @@ bus_ibus_impl_filter_keyboard_shortcuts 
          return FALSE;
      }
  
@@ -654,7 +692,7 @@ index 853465c..00864ac 100644
      /* Then try engines hotkeys. */
      event = ibus_hotkey_profile_filter_key_event (ibus->engines_hotkey_profile,
                                                    keyval,
-@@ -2400,6 +2803,24 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2398,6 +2834,24 @@ bus_ibus_impl_filter_keyboard_shortcuts 
  
          g_assert (new_engine_desc);
  
@@ -679,7 +717,7 @@ index 853465c..00864ac 100644
          /* Find out what engine we should switch to. If the current engine has
           * the same hotkey, then we should switch to the next engine with the
           * same hotkey in the list. Otherwise, we just switch to the first
-@@ -2411,8 +2832,47 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2409,8 +2863,43 @@ bus_ibus_impl_filter_keyboard_shortcuts 
                  break;
              }
          }
@@ -696,38 +734,34 @@ index 853465c..00864ac 100644
 +            !bus_input_context_inited_engine (context)) {
 +            return FALSE;
 +        }
-+
-+        if (current_engine_desc != new_engine_desc) {
+ 
+         if (current_engine_desc != new_engine_desc) {
 +            if (current_engine_desc) {
 +                if (context) {
 +                    bus_input_context_set_prev_hotkey_engine (context,
 +                                                              current_engine_desc);
 +                }
 +            }
- 
-+            /* If the previous engine is not included in engine_list and
-+             * the current engine is the defualt bridge engine,
-+             * the current engine is also not included in engine_list.
++
++            /* If the current engine is the defualt bridge engine,
++             * the current engine is not included in engine_list.
++             * E.g. prev is Ctrl+space and Zenaku and current is Ctrl+space.
 +             * So the engine is added here. */
 +            if (current_engine_desc != NULL &&
-+                g_list_find (engine_list, current_engine_desc) == NULL &&
 +                g_ascii_strncasecmp (ibus_engine_desc_get_name (current_engine_desc),
 +                                     DEFAULT_BRIDGE_ENGINE_NAME,
 +                                     strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
-+                engine_list = g_list_append (engine_list, current_engine_desc);
-+
-+                g_hash_table_steal (ibus->hotkey_to_engines_map,
-+                                    GUINT_TO_POINTER (event));
-+                g_hash_table_insert (ibus->hotkey_to_engines_map,
-+                                     GUINT_TO_POINTER (event), engine_list);
++                _update_hotkeys_by_prev_engine_desc (ibus,
++                                                     current_engine_desc,
++                                                     new_engine_desc);
 +            }
 +#else
-         if (current_engine_desc != new_engine_desc) {
++        if (current_engine_desc != new_engine_desc) {
 +#endif
              bus_ibus_impl_set_context_engine_from_desc (ibus, context, new_engine_desc);
          }
  
-@@ -2516,59 +2976,54 @@ static void
+@@ -2514,59 +3003,54 @@ static void
  _add_engine_hotkey (IBusEngineDesc *engine, BusIBusImpl *ibus)
  {
      const gchar *hotkeys;
@@ -1654,7 +1688,7 @@ index 7cf1995..a19d16e 100644
 +
  #endif
 diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
-index 8804634..bef6fbf 100644
+index 8804634..2fc11bb 100644
 --- a/ui/gtk/panel.py
 +++ b/ui/gtk/panel.py
 @@ -67,6 +67,7 @@ class Panel(ibus.PanelBase):
@@ -1800,8 +1834,15 @@ index 8804634..bef6fbf 100644
          if not enabled:
              self.__set_im_icon(ICON_KEYBOARD)
              self.__set_im_name(None)
-@@ -250,7 +353,7 @@ class Panel(ibus.PanelBase):
-                 self.__set_im_icon(engine.icon)
+@@ -247,10 +350,13 @@ class Panel(ibus.PanelBase):
+         else:
+             engine = self.__focus_ic.get_engine()
+             if engine:
+-                self.__set_im_icon(engine.icon)
++                if engine.name.startswith(ibus.DEFAULT_BRIDGE_ENGINE_NAME):
++                    self.__set_im_icon(ICON_KEYBOARD)
++                else:
++                    self.__set_im_icon(engine.icon)
                  self.__set_im_name(engine.longname)
                  if self.__bus.get_use_sys_layout():
 -                    self.__xkblayout.set_layout(self.__engine_get_layout_wrapper(engine))
@@ -1809,7 +1850,7 @@ index 8804634..bef6fbf 100644
              else:
                  self.__set_im_icon(ICON_KEYBOARD)
                  self.__set_im_name(None)
-@@ -273,7 +376,21 @@ class Panel(ibus.PanelBase):
+@@ -273,7 +379,21 @@ class Panel(ibus.PanelBase):
              return
  
          enabled = self.__focus_ic.is_enabled()
@@ -1832,8 +1873,15 @@ index 8804634..bef6fbf 100644
  
          if enabled == False:
              self.reset()
-@@ -287,7 +404,7 @@ class Panel(ibus.PanelBase):
-                 self.__set_im_icon(engine.icon)
+@@ -284,10 +404,13 @@ class Panel(ibus.PanelBase):
+         else:
+             engine = self.__focus_ic.get_engine()
+             if engine:
+-                self.__set_im_icon(engine.icon)
++                if engine.name.startswith(ibus.DEFAULT_BRIDGE_ENGINE_NAME):
++                    self.__set_im_icon(ICON_KEYBOARD)
++                else:
++                    self.__set_im_icon(engine.icon)
                  self.__set_im_name(engine.longname)
                  if self.__bus.get_use_sys_layout():
 -                    self.__xkblayout.set_layout(self.__engine_get_layout_wrapper(engine))
@@ -1841,7 +1889,7 @@ index 8804634..bef6fbf 100644
              else:
                  self.__set_im_icon(ICON_KEYBOARD)
                  self.__set_im_name(None)
-@@ -315,6 +432,7 @@ class Panel(ibus.PanelBase):
+@@ -315,6 +438,7 @@ class Panel(ibus.PanelBase):
  
      def __config_load_show(self):
          show = self.__config.get_value("panel", "show", 0)
@@ -1849,7 +1897,7 @@ index 8804634..bef6fbf 100644
          self.__language_bar.set_show(show)
  
      def __config_load_position(self):
-@@ -443,6 +561,21 @@ class Panel(ibus.PanelBase):
+@@ -443,6 +567,21 @@ class Panel(ibus.PanelBase):
      #     menu.set_take_focus(False)
      #     return menu
  
@@ -1871,7 +1919,7 @@ index 8804634..bef6fbf 100644
      def __create_im_menu(self):
          engines = self.__bus.list_active_engines()
          current_engine = \
-@@ -453,25 +586,39 @@ class Panel(ibus.PanelBase):
+@@ -453,25 +592,39 @@ class Panel(ibus.PanelBase):
          size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
          menu = gtk.Menu()
          for i, engine in enumerate(engines):
@@ -1924,7 +1972,7 @@ index 8804634..bef6fbf 100644
  
          menu.show_all()
          menu.set_take_focus(False)
-@@ -523,8 +670,25 @@ class Panel(ibus.PanelBase):
+@@ -523,8 +676,25 @@ class Panel(ibus.PanelBase):
          if not self.__focus_ic:
              return
          if engine:
@@ -1951,7 +1999,7 @@ index 8804634..bef6fbf 100644
              self.__focus_ic.disable()
  
      def __sys_menu_item_activate_cb(self, item, command):
-@@ -573,12 +737,113 @@ class Panel(ibus.PanelBase):
+@@ -573,12 +743,113 @@ class Panel(ibus.PanelBase):
          self.__setup_pid = pid
          glib.child_watch_add(self.__setup_pid, self.__child_watch_cb)
  

diff --git a/ibus.spec b/ibus.spec
index 75dab9a..f454d45 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -30,7 +30,7 @@
 
 Name:       ibus
 Version:    1.4.0
-Release:    8%{?dist}
+Release:    9%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
@@ -208,6 +208,17 @@ mv data/ibus.schemas.in data/ibus.schemas.in.in
 
 %build
 %if %have_libxkbfile
+XKB_PRELOAD_LAYOUTS=\
+"us,us(chr),us(dvorak),ad,al,am,ara,az,ba,bd,be,bg,br,bt,by,"\
+"de,dk,ca,ch,cn(tib),cz,ee,epo,es,et,fi,fo,fr,"\
+"gb,ge,ge(dsb),ge(ru),ge(os),gh,gh(akan),gh(ewe),gh(fula),gh(ga),gh(hausa),"\
+"gn,gr,hu,hr,ie,ie(CloGaelach),il,"\
+"in,"\
+"in(tel),in(bolnagri),iq,iq(ku),ir,ir(ku),is,it,"\
+"kg,kh,kz,la,latam,lk,lk(tam_unicode),lt,lv,ma,ma(tifinagh),mal,mao,"\
+"me,mk,mm,mt,mv,ng,ng(hausa),ng,ng(igbo),ng(yoruba),nl,no,no(smi),np,"\
+"pk,pl,pl(csb),pt,ro,rs,ru,ru(cv),ru(kom),ru(sah),ru(tt),ru(xal),"\
+"se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn"
 aclocal -I m4
 autoheader
 autoconf -f
@@ -221,6 +232,9 @@ automake -a -c -f
     --disable-gtk-doc \
     --with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*' \
     --enable-surrounding-text \
+%if %have_libxkbfile
+    --with-xkb-preload-layouts=$XKB_PRELOAD_LAYOUTS \
+%endif
 %if %have_bridge_hotkey
     --enable-bridge-hotkey \
 %endif
@@ -392,7 +406,17 @@ fi
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Wed Nov 02 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-9
+- Updated ibus-HEAD.patch
+  Fixed prev/next keys without global engine.
+- Updated ibus-xx-bridge-hotkey.patch for f16
+  Fixed Bug 747902 - mouse and ctrl+space not working
+  Fixed Bug 749770 - IME hotkey after Control + Space
+- Updated ibus-711632-fedora-fallback-icon.patch
+  Fixed Bug 717831 - use old icon for desktops other than gnome
+
 * Fri Oct 28 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-8
+- Updated ibus-xx-bridge-hotkey.patch for f16
 - Fixed Bug 747902 - mouse and ctrl+space not working
 
 * Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.0-6

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-05-31  2:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31  2:05 [rpms/ibus] autotool: Fixed Bug 747902 - mouse and ctrl+space not working Takao Fujiwara
2026-05-31  2:05 Takao Fujiwara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox