[ibus/f16] Updated ibus-HEAD.patch from upstream

Takao Fujiwara fujiwara at fedoraproject.org
Sat Apr 28 03:35:04 UTC 2012


commit 88452649c7ce3cad271634fd4b052ba16099698a
Author: Takao Fujiwara <tfujiwar at redhat.com>
Date:   Sat Apr 28 12:33:41 2012 +0900

    Updated ibus-HEAD.patch from upstream
    
    Fixed Bug 813125 - Do not send preedit-changed signal without preedit.
    Fixed the coordinate in languagebar when dual monitors are used.
    Fixed Bug 813971 - no Ctrl+Space

 .gitignore                        |    6 +-
 ibus-530711-preload-sys.patch     |   12 +-
 ibus-541492-xkb.patch             |   12 +-
 ibus-HEAD.patch                   | 1104 ++++++++++++++++++++++++++++++++++++-
 ibus-xx-bridge-hotkey.patch       |  154 +++---
 ibus-xx-setup-frequent-lang.patch |   12 +-
 ibus.spec                         |    9 +-
 7 files changed, 1177 insertions(+), 132 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 3ed4957..280ad03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@ ibus-1.3.6.tar.gz
 /ibus-1.3.8.tar.gz
 /ibus-1.3.9.tar.gz
 /ibus-1.4.0.tar.gz
+/ibus-1.4.1.tar.gz
 /ibus-1.3.99.20101028.tar.gz
 /ibus-1.3.99.20101118.tar.gz
 /ibus-1.3.99.20101202.tar.gz
@@ -14,6 +15,8 @@ ibus-1.3.6.tar.gz
 /ibus-1.3.99.20110408.tar.gz
 /ibus-1.3.99.20110419.tar.gz
 /ibus-1.3.99.20110817.tar.gz
+/ibus-1.4.99.20120203.tar.gz
+/ibus-1.4.99.20120317.tar.gz
 /ibus-gjs-3.0.2.20110823.tar.gz
 /ibus-gjs-3.1.4.20110823.tar.gz
 /ibus-gjs-3.0.2.20110908.tar.gz
@@ -32,6 +35,5 @@ ibus-1.3.6.tar.gz
 /ibus-gjs-3.2.1.20111118.tar.gz
 /ibus-gjs-3.2.1.20111128.tar.gz
 /ibus-gjs-3.2.1.20111230.tar.gz
-/ibus-1.4.1.tar.gz
-/ibus-1.4.99.20120203.tar.gz
 /ibus-gjs-3.3.3.20120203.tar.gz
+/ibus-gjs-3.3.92.20120327.tar.gz
diff --git a/ibus-530711-preload-sys.patch b/ibus-530711-preload-sys.patch
index 941e7e9..0a3aca3 100644
--- a/ibus-530711-preload-sys.patch
+++ b/ibus-530711-preload-sys.patch
@@ -1,6 +1,6 @@
-From 8f5bb828744532bcfded7e92f3a1db1f26e567e8 Mon Sep 17 00:00:00 2001
+From 145584fdea36439be24cff4a93cc404d092b3762 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 30 Dec 2011 15:46:56 +0900
+Date: Tue, 24 Apr 2012 11:54:53 +0900
 Subject: [PATCH] Reload preload engines until users customize the list.
 
 The idea is, if users don't customize the preload_engines with ibus-setup,
@@ -18,10 +18,10 @@ IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
 'preload_engines'.
 ---
  bus/ibusimpl.c       |  412 +++++++++++++++++++++++++++++++++++++++-----------
- data/ibus.schemas.in |   15 ++-
+ data/ibus.schemas.in |   15 +-
  ibus/common.py       |    6 +
  setup/main.py        |   73 ++++++++-
- setup/setup.ui       |   21 +++-
+ setup/setup.ui       |   21 ++-
  src/ibustypes.h      |   10 ++
  6 files changed, 440 insertions(+), 97 deletions(-)
 
@@ -503,7 +503,7 @@ index 059d660..bba9353 100644
      { "general", "use_global_engine",            bus_ibus_impl_set_use_global_engine },
      { "general", "embed_preedit_text",           bus_ibus_impl_set_embed_preedit_text },
 diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index e0a6a37..2418c95 100644
+index 7e45d36..0701fe2 100644
 --- a/data/ibus.schemas.in
 +++ b/data/ibus.schemas.in
 @@ -6,7 +6,7 @@
@@ -750,5 +750,5 @@ index d916265..422eb84 100644
   * @x: x coordinate.
   * @y: y coordinate.
 -- 
-1.7.7.4
+1.7.10
 
diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch
index aaf4e47..eb6f702 100644
--- a/ibus-541492-xkb.patch
+++ b/ibus-541492-xkb.patch
@@ -1,6 +1,6 @@
-From a46c0a18a3e148cbe0b43be9f40f4f769e7efc8c Mon Sep 17 00:00:00 2001
+From 951fb6e0f2914ef0094b66489da3b3240bea0818 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 10 Feb 2012 13:23:19 +0900
+Date: Tue, 24 Apr 2012 11:54:41 +0900
 Subject: [PATCH] Add XKB layouts
 
 ---
@@ -17,7 +17,7 @@ Subject: [PATCH] Add XKB layouts
  setup/Makefile.am            |    1 +
  setup/enginecombobox.py      |    7 +-
  setup/main.py                |    3 +
- setup/setup.ui               |  609 ++++++-
+ setup/setup.ui               |  609 +++++-
  setup/xkbsetup.py            |  490 +++++
  src/Makefile.am              |    5 +
  src/ibus.h                   |    1 +
@@ -85,7 +85,7 @@ index b3ea36a..9efadf7 100644
  	$(DCONF_DIRS)   \
  	$(NULL)
 diff --git a/configure.ac b/configure.ac
-index a74ce2a..9bd3665 100644
+index 9456397..996e5ce 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -224,6 +224,60 @@ else
@@ -2323,7 +2323,7 @@ index 0000000..e777cea
 +        expander.set_data("checked", checked)
 +
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 68950ff..90fb10f 100644
+index d2fdefc..80fedee 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -186,6 +186,11 @@ typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
@@ -10163,5 +10163,5 @@ index 0000000..6c00f1d
 +G_END_DECLS
 +#endif
 -- 
-1.7.7.4
+1.7.10
 
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 6456c76..0950d08 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,6 +1,840 @@
-From 377cf484ea64fc2f30706d298cf1f33debdd9c30 Mon Sep 17 00:00:00 2001
+From 3862735d41168a87d9b77e9ce78ddf228212e015 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <ueno at unixuser.org>
+Date: Mon, 13 Feb 2012 13:56:44 +0900
+Subject: [PATCH] Don't look for ibus-1.0.pc when generating GIR.
+
+BUG=http://lists.alioth.debian.org/pipermail/pkg-ime-devel/2012-February/001778.html
+TEST=manually
+
+Review URL: https://codereview.appspot.com/5653072
+---
+ src/Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 68950ff..d2fdefc 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -170,7 +170,7 @@ introspection_files =           \
+     ibusenumtypes.h             \
+     $(NULL)
+ IBus-1.0.gir: $(libibus) Makefile
+-IBus_1_0_gir_SCANNERFLAGS = --pkg=ibus-1.0 $(IBUS_GIR_SCANNERFLAGS)
++IBus_1_0_gir_SCANNERFLAGS = --pkg-export=ibus-1.0 $(IBUS_GIR_SCANNERFLAGS)
+ IBus_1_0_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0
+ IBus_1_0_gir_LIBS = $(libibus)
+ IBus_1_0_gir_FILES = $(addprefix $(srcdir)/,$(introspection_files))
+-- 
+1.7.10
+
+From a5b51c91cb1185f35f3315ad35e1e03b84264faf Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 30 Dec 2011 13:53:50 +0900
+Date: Mon, 13 Feb 2012 16:03:13 +0900
+Subject: [PATCH] Fix typo.
+
+BUG=http://code.google.com/p/ibus/issues/detail?id=1388
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/5652077
+---
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index a74ce2a..9456397 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -149,7 +149,7 @@ AM_CONDITIONAL([ENABLE_GTK2], [test x"$enable_gtk2" = x"yes"])
+ # --disable-gtk3 option.
+ AC_ARG_ENABLE(gtk3,
+     AS_HELP_STRING([--disable-gtk3],
+-                   [Build gtk3 im module]),
++                   [Do not build gtk3 im module]),
+     [enable_gtk3=$enableval],
+     [enable_gtk3=yes]
+ )
+-- 
+1.7.10
+
+From 3b8d6ee8fbd42a8daf3b544e8d0ba17a198a9acf Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <ueno at unixuser.org>
+Date: Tue, 14 Feb 2012 10:45:20 +0900
+Subject: [PATCH] Fix typoes in gtk-doc comments.
+
+BUG=none
+TEST=manually
+
+Review URL: https://codereview.appspot.com/5645095
+---
+ src/ibusbus.h          |    6 +++---
+ src/ibusconfig.h       |   52 ++++++++++++++++++++++++------------------------
+ src/ibusengine.h       |    4 ++--
+ src/ibushotkey.h       |    2 +-
+ src/ibusinputcontext.h |    4 ++--
+ src/ibusserializable.h |   32 ++++++++++++++---------------
+ src/ibusshare.h        |   10 +++++-----
+ 7 files changed, 55 insertions(+), 55 deletions(-)
+
+diff --git a/src/ibusbus.h b/src/ibusbus.h
+index 8f78f87..7c4fdee 100644
+--- a/src/ibusbus.h
++++ b/src/ibusbus.h
+@@ -102,9 +102,9 @@ gboolean     ibus_bus_is_connected      (IBusBus        *bus);
+ /**
+  * ibus_bus_get_connection:
+  * @bus: An #IBusBus.
+- * @returns: (transfer none): A #GDBusConnection of an #IBusIBus instance.
++ * @returns: (transfer none): A #GDBusConnection of an #IBusBus instance.
+  *
+- * Return #GDBusConnection of an #IBusIBus instance.
++ * Return #GDBusConnection of an #IBusBus instance.
+  */
+ GDBusConnection *
+              ibus_bus_get_connection    (IBusBus        *bus);
+@@ -112,7 +112,7 @@ GDBusConnection *
+ /**
+  * ibus_bus_hello:
+  * @bus: An #IBusBus.
+- * @returns: The unique name of #IBus process in DBus.
++ * @returns: The unique name of IBus process in DBus.
+  *
+  * This function sends a "HELLO" message to DBus daemon,
+  * which replies the unique name of current IBus process.
+diff --git a/src/ibusconfig.h b/src/ibusconfig.h
+index 07f5ce8..c3e0105 100644
+--- a/src/ibusconfig.h
++++ b/src/ibusconfig.h
+@@ -81,10 +81,10 @@ GType            ibus_config_get_type       (void);
+ 
+ /**
+  * ibus_config_new:
+- * @connection: An GDBusConnection.
+- * @returns: An newly allocated IBusConfig corresponding to @connection.
++ * @connection: A #GDBusConnection.
++ * @returns: An newly allocated #IBusConfig corresponding to @connection.
+  *
+- * New an #IBusConfig from existing GDBusConnection.
++ * New an #IBusConfig from existing #GDBusConnection.
+  */
+ IBusConfig      *ibus_config_new            (GDBusConnection    *connection,
+                                              GCancellable       *cancellable,
+@@ -98,7 +98,7 @@ IBusConfig      *ibus_config_new            (GDBusConnection    *connection,
+  *      The callback should not be %NULL.
+  * @user_data: The data to pass to callback.
+  *
+- * New an #IBusContext asynchronously.
++ * New an #IBusConfig asynchronously.
+  */
+ void             ibus_config_new_async      (GDBusConnection    *connection,
+                                              GCancellable       *cancellable,
+@@ -121,7 +121,7 @@ IBusConfig      *ibus_config_new_async_finish
+ 
+ /**
+  * ibus_config_get_value:
+- * @config: An IBusConfig
++ * @config: An #IBusConfig
+  * @section: Section name of the configuration option.
+  * @name: Name of the configure option.
+  * @returns: A #GVariant or %NULL. Free with g_variant_unref().
+@@ -135,7 +135,7 @@ IBusConfig      *ibus_config_new_async_finish
+  *
+  * ibus-chewing, for example, stores its setting in /desktop/ibus/engine/Chewing,
+  * so the section name for it is "engine/Chewing".
+- * @see_also: ibus_config_set_value.
++ * See also: ibus_config_set_value().
+  */
+ GVariant        *ibus_config_get_value      (IBusConfig         *config,
+                                              const gchar        *section,
+@@ -143,17 +143,17 @@ GVariant        *ibus_config_get_value      (IBusConfig         *config,
+ 
+ /**
+  * ibus_config_get_value_async:
+- * @config: An IBusConfig
++ * @config: An #IBusConfig
+  * @section: Section name of the configuration option.
+  * @name: Name of the configure option.
+- * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
++ * @timeout_ms: The timeout in milliseconds or -1 to use the default timeout.
+  * @cancellable: A #GCancellable or %NULL.
+  * @callback: Callback function to invoke when the return value is ready.
+  * @user_data: The data to pass to callback.
+  *
+  * Get the value of a configuration option asynchronously.
+  *
+- * @see_also: ibus_config_get_value.
++ * See also: ibus_config_get_value().
+  */
+ void             ibus_config_get_value_async (IBusConfig         *config,
+                                               const gchar        *section,
+@@ -165,14 +165,14 @@ void             ibus_config_get_value_async (IBusConfig         *config,
+ 
+ /**
+  * ibus_config_get_value_async_finish:
+- * @confi: A #IBusConfig.
++ * @config: A #IBusConfig.
+  * @result: A #GAsyncResult.
+  * @error: Return location for error or %NULL.
+  * @returns: A #GVariant or %NULL if error is set. Free with g_variant_unref().
+  * 
+  * Finish get value of a configuration option.
+  *
+- * @see_also: ibus_config_get_value_async.
++ * See also: ibus_config_get_value_async().
+  */
+ GVariant        *ibus_config_get_value_async_finish
+                                             (IBusConfig         *config,
+@@ -181,20 +181,20 @@ GVariant        *ibus_config_get_value_async_finish
+ 
+ /**
+  * ibus_config_get_values:
+- * @config: An IBusConfig
++ * @config: An #IBusConfig
+  * @section: Section name of the configuration option.
+  * @returns: A #GVariant or %NULL. Free with g_variant_unref().
+  *
+  * Get all values in a section synchronously.
+  *
+- * @see_also: ibus_config_set_value.
++ * See also: ibus_config_set_value().
+  */
+ GVariant        *ibus_config_get_values     (IBusConfig         *config,
+                                              const gchar        *section);
+ 
+ /**
+  * ibus_config_get_values_async:
+- * @config: An IBusConfig
++ * @config: An #IBusConfig
+  * @section: Section name of the configuration option.
+  * @timeout_ms: The timeout in milliseconds or -1 to use the default timeout.
+  * @cancellable: A #GCancellable or %NULL.
+@@ -203,7 +203,7 @@ GVariant        *ibus_config_get_values     (IBusConfig         *config,
+  *
+  * Get all values in a section asynchronously.
+  *
+- * @see_also: ibus_config_get_values.
++ * See also: ibus_config_get_values().
+  */
+ void             ibus_config_get_values_async(IBusConfig         *config,
+                                               const gchar        *section,
+@@ -221,7 +221,7 @@ void             ibus_config_get_values_async(IBusConfig         *config,
+  * 
+  * Finish get values in a section.
+  *
+- * @see_also: ibus_config_get_values_async.
++ * See also: ibus_config_get_values_async().
+  */
+ GVariant        *ibus_config_get_values_async_finish
+                                             (IBusConfig         *config,
+@@ -230,15 +230,15 @@ GVariant        *ibus_config_get_values_async_finish
+ 
+ /**
+  * ibus_config_set_value:
+- * @config: An IBusConfig
++ * @config: An #IBusConfig
+  * @section: Section name of the configuration option.
+  * @name: Name of the configure option its self.
+  * @value: A #GVariant that holds the value. If the value is floating, the
+  * function takes ownership of it.
+- * @returns: TRUE if succeed; FALSE otherwise.
++ * @returns: %TRUE if succeed; %FALSE otherwise.
+  *
+  * Set the value of a configuration option synchronously.
+- * @see_also: ibus_config_get_value.
++ * See also: ibus_config_get_value().
+  */
+ gboolean         ibus_config_set_value      (IBusConfig         *config,
+                                              const gchar        *section,
+@@ -252,14 +252,14 @@ gboolean         ibus_config_set_value      (IBusConfig         *config,
+  * @name: Name of the configure option.
+  * @value: A #GVariant that holds the value. If the value is floating, the
+  * function takes ownership of it.
+- * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
++ * @timeout_ms: The timeout in milliseconds or -1 to use the default timeout.
+  * @cancellable: A #GCancellable or %NULL.
+  * @callback: Callback function to invoke when the return value is ready.
+  * @user_data: The data to pass to callback.
+  *
+  * Set the value of a configuration option asynchronously.
+  *
+- * @see_also: ibus_config_set_value.
++ * See also: ibus_config_set_value().
+  */
+ void             ibus_config_set_value_async (IBusConfig         *config,
+                                               const gchar        *section,
+@@ -272,14 +272,14 @@ void             ibus_config_set_value_async (IBusConfig         *config,
+ 
+ /**
+  * ibus_config_set_value_async_finish:
+- * @confi: A #IBusConfig.
++ * @config: A #IBusConfig.
+  * @result: A #GAsyncResult.
+  * @error: Return location for error or %NULL.
+  * @returns: %TRUE or %FALSE if error is set.
+  * 
+  * Finish set value of a configuration option.
+  *
+- * @see_also: ibus_config_set_value_async.
++ * See also: ibus_config_set_value_async().
+  */
+ gboolean         ibus_config_set_value_async_finish
+                                             (IBusConfig         *config,
+@@ -288,13 +288,13 @@ gboolean         ibus_config_set_value_async_finish
+ 
+ /**
+  * ibus_config_unset:
+- * @config: An IBusConfig
++ * @config: An #IBusConfig
+  * @section: Section name of the configuration option.
+  * @name: Name of the configure option its self.
+- * @returns: TRUE if succeed; FALSE otherwise.
++ * @returns: %TRUE if succeed; %FALSE otherwise.
+  *
+  * Remove an entry of a configuration option.
+- * @see_also: ibus_config_get_value.
++ * See also: ibus_config_get_value().
+  */
+ gboolean         ibus_config_unset      (IBusConfig         *config,
+                                          const gchar        *section,
+diff --git a/src/ibusengine.h b/src/ibusengine.h
+index 9ee3462..d2d01a0 100644
+--- a/src/ibusengine.h
++++ b/src/ibusengine.h
+@@ -158,8 +158,8 @@ GType        ibus_engine_get_type       (void);
+ 
+ /**
+  * ibus_engine_new:
+- * @name: Name of the IBusObject.
+- * @path: Path for IBusService.
++ * @engine_name: Name of the IBusObject.
++ * @object_path: Path for IBusService.
+  * @connection: An opened GDBusConnection.
+  * @returns: A newly allocated IBusEngine.
+  *
+diff --git a/src/ibushotkey.h b/src/ibushotkey.h
+index 9a341f6..65cdc5b 100644
+--- a/src/ibushotkey.h
++++ b/src/ibushotkey.h
+@@ -156,7 +156,7 @@ gboolean         ibus_hotkey_profile_remove_hotkey_by_event
+  *
+  * Emit a <constant>::trigger</constant> signal when a hotkey is in a profile.
+  *
+- * @see_also: ::trigger
++ * See also: ::trigger
+  */
+ GQuark           ibus_hotkey_profile_filter_key_event
+                                                 (IBusHotkeyProfile  *profile,
+diff --git a/src/ibusinputcontext.h b/src/ibusinputcontext.h
+index be3c502..f584de3 100644
+--- a/src/ibusinputcontext.h
++++ b/src/ibusinputcontext.h
+@@ -283,7 +283,7 @@ gboolean     ibus_input_context_process_key_event_async_finish
+  *
+  * Pass the key event to input method engine and wait for the reply from ibus (i.e. synchronous IPC).
+  *
+- * @see_also: ibus_input_context_process_key_event_async()
++ * See also: ibus_input_context_process_key_event_async()
+  */
+ gboolean     ibus_input_context_process_key_event
+                                             (IBusInputContext   *context,
+@@ -333,7 +333,7 @@ void         ibus_input_context_set_capabilities
+  *
+  * Activate the property asynchronously.
+  *
+- * @see_also: #IBusEngine::property_activate
++ * See also: #IBusEngine::property_activate
+  */
+ void         ibus_input_context_property_activate
+                                             (IBusInputContext *context,
+diff --git a/src/ibusserializable.h b/src/ibusserializable.h
+index 7a100c2..742aeb6 100644
+--- a/src/ibusserializable.h
++++ b/src/ibusserializable.h
+@@ -29,8 +29,8 @@
+  * @short_description: A serializable object.
+  * @stability: Stable
+  *
+- * An IBusSerializable is an IBus object which can be serialized, that is,
+- * to be to and from an IBusMessage.
++ * An #IBusSerializable is an IBus object which can be serialized, that is,
++ * to be to and from a #GVariant.
+  *
+  * This class is to be extended by other class that requires serialization.
+  * An extended class should overrides following methods:
+@@ -85,10 +85,10 @@
+ 
+ /**
+  * ibus_serializable_get_attachment:
+- * @o: An IBusSerializable.
++ * @o: An #IBusSerializable.
+  * @k: String formatted key for indexing value.
+  *
+- * Get a value from attachment of an IBusSerializable.
++ * Get a value from attachment of an #IBusSerializable.
+  * This macro is an convenient wrapper of ibus_serializable_get_qattachment().
+  */
+ #define ibus_serializable_get_attachment(o, k)  \
+@@ -96,10 +96,10 @@
+ 
+ /**
+  * ibus_serializable_remove_attachment:
+- * @o: An IBusSerializable.
++ * @o: An #IBusSerializable.
+  * @k: String formatted key for indexing value.
+  *
+- * Remove a value from attachment of an IBusSerializable.
++ * Remove a value from attachment of an #IBusSerializable.
+  * This macro is an convenient wrapper of ibus_serializable_remove_qattachment().
+  */
+ #define ibus_serializable_remove_attachment(o, k)  \
+@@ -131,7 +131,7 @@ struct _IBusSerializable {
+  * @returns: %TRUE if succeed; %FALSE otherwise.
+  *
+  * Prototype of serialize function.
+- * Serialize function convert an IBusSerializable to IBusMessageIter.
++ * Serialize function convert an #IBusSerializable to #GVariantBuilder.
+  * Returns a gboolean value which indicates whether the conversion is success.
+  * Return %TRUE if succeed.
+  */
+@@ -145,7 +145,7 @@ typedef gboolean    (* IBusSerializableSerializeFunc)   (IBusSerializable
+  * @returns: The number of values in the variant(tuple) are consumed.
+  *
+  * Prototype of deserialize function.
+- * Deserialize function convert an IBusMessageIter to IBusSerializable.
++ * Deserialize function convert a #GVariant to #IBusSerializable.
+  * Returns an integer value which indicates how many values in
+  * the variant(tuple) are consumed.
+  */
+@@ -155,7 +155,7 @@ typedef gint        (* IBusSerializableDeserializeFunc) (IBusSerializable
+ /**
+  * IBusSerializableCopyFunc:
+  * @dest: The destination #IBusSerializable.
+- * @src: A source #IBusMessageIter.
++ * @src: A source #IBusSerializable.
+  * @returns: %TRUE if succeed; %FALSE otherwise.
+  *
+  * Prototype of copy function.
+@@ -197,10 +197,10 @@ IBusSerializable    *ibus_serializable_new              (void);
+  * @key: String formatted key for indexing value.
+  * @value: Value to be attached or %NULL to remove any prevoius value.
+  *
+- * Attach a value to an IBusSerializable. If the value is floating,
++ * Attach a value to an #IBusSerializable. If the value is floating,
+  * the serializable will take the ownership.
+  *
+- * @see_also: ibus_serializable_set_attachment().
++ * See also: ibus_serializable_set_attachment().
+  */
+ void                 ibus_serializable_set_qattachment  (IBusSerializable   *serializable,
+                                                          GQuark              key,
+@@ -213,7 +213,7 @@ void                 ibus_serializable_set_qattachment  (IBusSerializable   *ser
+  * @returns: The attached value; or %NULL if fail to retrieve the value.
+  *
+  * Get a value from attachment of an #IBusSerializable.
+- * @see_also: ibus_serializable_set_attachment().
++ * See also: ibus_serializable_set_attachment().
+  */
+ GVariant            *ibus_serializable_get_qattachment  (IBusSerializable   *serializable,
+                                                          GQuark              key);
+@@ -224,7 +224,7 @@ GVariant            *ibus_serializable_get_qattachment  (IBusSerializable   *ser
+  * @key: String formatted key for indexing value.
+  *
+  * Remove a value from attachment of an #IBusSerializable.
+- * @see_also: ibus_serializable_remove_attachment().
++ * See also: ibus_serializable_remove_attachment().
+  */
+ void                 ibus_serializable_remove_qattachment
+                                                         (IBusSerializable   *serializable,
+@@ -238,7 +238,7 @@ void                 ibus_serializable_remove_qattachment
+  * Clone an #IBusSerializable.
+  * The copy method should be implemented in extended class.
+  *
+- * @see_also: IBusSerializableCopyFunc().
++ * See also: IBusSerializableCopyFunc().
+  */
+ IBusSerializable    *ibus_serializable_copy             (IBusSerializable   *serializable);
+ 
+@@ -250,7 +250,7 @@ IBusSerializable    *ibus_serializable_copy             (IBusSerializable   *ser
+  * Serialize an #IBusSerializable to a #GVariant.
+  * The serialize method should be implemented in extended class.
+  *
+- * @see_also: IBusSerializableCopyFunc().
++ * See also: IBusSerializableCopyFunc().
+  */
+ GVariant            *ibus_serializable_serialize        (IBusSerializable   *serializable);
+ 
+@@ -262,7 +262,7 @@ GVariant            *ibus_serializable_serialize        (IBusSerializable   *ser
+  * Deserialize a #GVariant to an #IBusSerializable/
+  * The deserialize method should be implemented in extended class.
+  *
+- * @see_also: IBusSerializableCopyFunc().
++ * See also: IBusSerializableCopyFunc().
+  */
+ IBusSerializable    *ibus_serializable_deserialize      (GVariant           *variant);
+ 
+diff --git a/src/ibusshare.h b/src/ibusshare.h
+index d1cf237..61db3cd 100644
+--- a/src/ibusshare.h
++++ b/src/ibusshare.h
+@@ -188,7 +188,7 @@ void             ibus_set_display       (const gchar    *display);
+  *    <listitem><para>Socket file under ~/.config/ibus/bus/</para></listitem>
+  * </orderedlist>
+  *
+- * @see_also: ibus_write_address().
++ * See also: ibus_write_address().
+  */
+ const gchar     *ibus_get_address       (void);
+ 
+@@ -198,7 +198,7 @@ const gchar     *ibus_get_address       (void);
+  *
+  * Write D-Bus address to socket file.
+  *
+- * @see_also: ibus_get_address().
++ * See also: ibus_get_address().
+  */
+ void             ibus_write_address     (const gchar    *address);
+ 
+@@ -302,7 +302,7 @@ void             ibus_init              (void);
+  *
+  * Runs an IBus main loop until ibus_quit() is called in the loop.
+  *
+- * @see_also: ibus_quit().
++ * See also: ibus_quit().
+  */
+ void             ibus_main              (void);
+ 
+@@ -312,7 +312,7 @@ void             ibus_main              (void);
+  * Stops an IBus from running.
+  *
+  * Any calls to ibus_quit() for the loop will return.
+- * @see_also: ibus_main().
++ * See also: ibus_main().
+  */
+ void             ibus_quit              (void);
+ 
+@@ -325,7 +325,7 @@ void             ibus_quit              (void);
+  *
+  * (ibus-daemon:7088): IBUS-DEBUG: 18:06:45.822819: ibus-daemon started
+  *
+- * If @verbose is TRUE, all levels of messages will be logged. Otherwise,
++ * If @verbose is %TRUE, all levels of messages will be logged. Otherwise,
+  * DEBUG and WARNING messages will be ignored.  The function is used in
+  * ibus-daemon, but can be useful for IBus client programs as well for
+  * debugging. It's totally fine for not calling this function. If you
+-- 
+1.7.10
+
+From 60587bf804feb7ed4dcb8c1731f115420ca28b49 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Thu, 16 Feb 2012 13:04:05 +0900
+Subject: [PATCH] Fix gir annotations.
+
+- It seems python does not allow to use 'exec' as a variable.
+Renamed 'exec' property so that the constructor in IBus.Component is used.
+- It seems the python virtual method is available when the function is
+described in header files in case that annotations are needed so
+the signal function ibus_factory_create_engine is added newly.
+
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/5649082
+---
+ src/ibusattribute.h |    8 ++++----
+ src/ibuscomponent.c |   20 ++++++++++----------
+ src/ibuscomponent.h |    8 ++++----
+ src/ibusfactory.c   |   20 +++++++++++++++++---
+ src/ibusfactory.h   |   11 +++++++++++
+ 5 files changed, 46 insertions(+), 21 deletions(-)
+
+diff --git a/src/ibusattribute.h b/src/ibusattribute.h
+index 9096ff3..7a7fcb6 100644
+--- a/src/ibusattribute.h
++++ b/src/ibusattribute.h
+@@ -130,7 +130,7 @@ GType                ibus_attribute_get_type    ();
+  * @value: Value of the attribute.
+  * @start_index: Where attribute starts.
+  * @end_index: Where attribute ends.
+- * @returns: A newly allocated IBusAttribute.
++ * @returns: (transfer none): A newly allocated IBusAttribute.
+  *
+  * New an IBusAttribute.
+  */
+@@ -182,7 +182,7 @@ guint                ibus_attribute_get_end_index
+  * @underline_type: Type of underline.
+  * @start_index: Where attribute starts.
+  * @end_index: Where attribute ends.
+- * @returns: A newly allocated #IBusAttribute.
++ * @returns: (transfer none): A newly allocated #IBusAttribute.
+  *
+  * New an underline #IBusAttribute.
+  */
+@@ -194,7 +194,7 @@ IBusAttribute       *ibus_attr_underline_new    (guint           underline_type,
+  * @color: Color in RGB.
+  * @start_index: Where attribute starts.
+  * @end_index: Where attribute ends.
+- * @returns: A newly allocated #IBusAttribute.
++ * @returns: (transfer none): A newly allocated #IBusAttribute.
+  *
+  * New an foreground #IBusAttribute.
+  */
+@@ -206,7 +206,7 @@ IBusAttribute       *ibus_attr_foreground_new   (guint           color,
+  * @color: Color in RGB.
+  * @start_index: Where attribute starts.
+  * @end_index: Where attribute ends.
+- * @returns: A newly allocated #IBusAttribute.
++ * @returns: (transfer none): A newly allocated #IBusAttribute.
+  *
+  * New an background #IBusAttribute.
+  */
+diff --git a/src/ibuscomponent.c b/src/ibuscomponent.c
+index 1c52a23..af8ca4f 100644
+--- a/src/ibuscomponent.c
++++ b/src/ibuscomponent.c
+@@ -34,7 +34,7 @@ enum {
+     PROP_LICENSE,
+     PROP_AUTHOR,
+     PROP_HOMEPAGE,
+-    PROP_EXEC,
++    PROP_COMMAND_LINE,
+     PROP_TEXTDOMAIN,
+ };
+ 
+@@ -188,15 +188,15 @@ ibus_component_class_init (IBusComponentClass *class)
+                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ 
+     /**
+-     * IBusComponent:exec:
++     * IBusComponent:command-line:
+      *
+      * The exec path of component
+      */
+     g_object_class_install_property (gobject_class,
+-                    PROP_EXEC,
+-                    g_param_spec_string ("exec",
+-                        "component exec",
+-                        "The exec path of component",
++                    PROP_COMMAND_LINE,
++                    g_param_spec_string ("command-line",
++                        "component command-line",
++                        "The command line of component",
+                         NULL,
+                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ 
+@@ -305,7 +305,7 @@ ibus_component_set_property (IBusComponent *component,
+         g_assert (component->priv->homepage == NULL);
+         component->priv->homepage = g_value_dup_string (value);
+         break;
+-    case PROP_EXEC:
++    case PROP_COMMAND_LINE:
+         g_assert (component->priv->exec == NULL);
+         component->priv->exec = g_value_dup_string (value);
+         break;
+@@ -343,7 +343,7 @@ ibus_component_get_property (IBusComponent *component,
+     case PROP_HOMEPAGE:
+         g_value_set_string (value, ibus_component_get_homepage (component));
+         break;
+-    case PROP_EXEC:
++    case PROP_COMMAND_LINE:
+         g_value_set_string (value, ibus_component_get_exec (component));
+         break;
+     case PROP_TEXTDOMAIN:
+@@ -698,7 +698,7 @@ ibus_component_new (const gchar *name,
+                     const gchar *license,
+                     const gchar *author,
+                     const gchar *homepage,
+-                    const gchar *exec,
++                    const gchar *command_line,
+                     const gchar *textdomain)
+ {
+     return ibus_component_new_varargs ("name", name,
+@@ -707,7 +707,7 @@ ibus_component_new (const gchar *name,
+                                        "license", license,
+                                        "author", author,
+                                        "homepage", homepage,
+-                                       "exec", exec,
++                                       "command-line", command_line,
+                                        "textdomain", textdomain,
+                                        NULL);
+ }
+diff --git a/src/ibuscomponent.h b/src/ibuscomponent.h
+index 97a48ec..8f35b94 100644
+--- a/src/ibuscomponent.h
++++ b/src/ibuscomponent.h
+@@ -84,7 +84,7 @@ typedef struct _IBusComponentPrivate IBusComponentPrivate;
+  * license: Distribution license of this component.
+  * author: Author(s) of the component.
+  * homepage: Homepage of the component.
+- * exec: path to component executable.
++ * command_line: path to component executable.
+  * textdomain: Domain name for dgettext()
+  */
+ struct _IBusComponent {
+@@ -115,7 +115,7 @@ GType            ibus_component_get_type        (void);
+  * @license: Distribution license of this component.
+  * @author: Author(s) of the component.
+  * @homepage: Homepage of the component.
+- * @exec: path to component executable.
++ * @command_line: path to component executable.
+  * @textdomain: Domain name for dgettext()
+  * @returns: A newly allocated IBusComponent.
+  *
+@@ -127,7 +127,7 @@ IBusComponent   *ibus_component_new             (const gchar    *name,
+                                                  const gchar    *license,
+                                                  const gchar    *author,
+                                                  const gchar    *homepage,
+-                                                 const gchar    *exec,
++                                                 const gchar    *command_line,
+                                                  const gchar    *textdomain);
+ 
+ /**
+@@ -139,7 +139,7 @@ IBusComponent   *ibus_component_new             (const gchar    *name,
+  * ibus_component_new_varargs() supports the va_list format.
+  * name property is required. e.g.
+  * IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo",
+- *                                                     "exec", "/usr/libexec/ibus-engine-foo --ibus",
++ *                                                        "command_line", "/usr/libexec/ibus-engine-foo --ibus",
+  *                                                     NULL)
+  */
+ IBusComponent   *ibus_component_new_varargs     (const gchar    *first_property_name,
+diff --git a/src/ibusfactory.c b/src/ibusfactory.c
+index cdcf1a6..ceb7fb9 100644
+--- a/src/ibusfactory.c
++++ b/src/ibusfactory.c
+@@ -100,8 +100,8 @@ static const gchar introspection_xml[] =
+     "</node>";
+ 
+ static IBusEngine *
+-_ibus_factory_create_engine (IBusFactory    *factory,
+-                             const gchar    *engine_name)
++ibus_factory_real_create_engine (IBusFactory    *factory,
++                                 const gchar    *engine_name)
+ {
+     GType engine_type;
+     gchar *object_path = NULL;
+@@ -154,7 +154,7 @@ ibus_factory_class_init (IBusFactoryClass *class)
+     IBUS_SERVICE_CLASS (class)->service_method_call  = ibus_factory_service_method_call;
+     IBUS_SERVICE_CLASS (class)->service_get_property = ibus_factory_service_get_property;
+     IBUS_SERVICE_CLASS (class)->service_set_property = ibus_factory_service_set_property;
+-    class->create_engine = _ibus_factory_create_engine;
++    class->create_engine = ibus_factory_real_create_engine;
+ 
+     ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml);
+ 
+@@ -372,3 +372,17 @@ ibus_factory_add_engine (IBusFactory *factory,
+ 
+     g_hash_table_insert (factory->priv->engine_table, g_strdup (engine_name), (gpointer) engine_type);
+ }
++
++IBusEngine *
++ibus_factory_create_engine (IBusFactory    *factory,
++                            const gchar    *engine_name)
++{
++    IBusEngine *engine = NULL;
++
++    g_assert (engine_name != NULL);
++
++    g_signal_emit (factory, factory_signals[CREATE_ENGINE],
++                   0, engine_name, &engine);
++
++    return engine;
++}
+diff --git a/src/ibusfactory.h b/src/ibusfactory.h
+index e5e6fba..dd683d0 100644
+--- a/src/ibusfactory.h
++++ b/src/ibusfactory.h
+@@ -168,6 +168,17 @@ void             ibus_factory_add_engine        (IBusFactory    *factory,
+                                                  const gchar    *engine_name,
+                                                  GType           engine_type);
+ 
++/**
++ * ibus_factory_create_engine:
++ * @factory: An #IBusFactory.
++ * @engine_name: Name of an engine.
++ * @returns: (transfer full): #IBusEngine with @engine_name.
++ *
++ * Create an #IBusEngine with @engine_name.
++ */
++IBusEngine      *ibus_factory_create_engine     (IBusFactory    *factory,
++                                                 const gchar    *engine_name);
++
+ G_END_DECLS
+ #endif
+ 
+-- 
+1.7.10
+
+From 1b5b4067486212d5cf5d937d40eb18da6941acee Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Thu, 23 Feb 2012 12:07:44 +0900
+Subject: [PATCH] Add ibus_unset_log_handler to remove the handler in
+ ibus_set_log_handler
+
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/5690064
+---
+ src/ibusshare.c |   19 ++++++++++++++++++-
+ src/ibusshare.h |    7 +++++++
+ 2 files changed, 25 insertions(+), 1 deletion(-)
+
+diff --git a/src/ibusshare.c b/src/ibusshare.c
+index dc7c350..9215369 100644
+--- a/src/ibusshare.c
++++ b/src/ibusshare.c
+@@ -354,6 +354,7 @@ ibus_quit (void)
+ }
+ 
+ static gboolean ibus_log_handler_is_verbose = FALSE;
++static guint ibus_log_handler_id = 0;
+ 
+ static void
+ ibus_log_handler (const gchar    *log_domain,
+@@ -387,6 +388,22 @@ ibus_log_handler (const gchar    *log_domain,
+ void
+ ibus_set_log_handler (gboolean verbose)
+ {
++    if (ibus_log_handler_id != 0) {
++        g_log_remove_handler (G_LOG_DOMAIN, ibus_log_handler_id);
++    }
++
+     ibus_log_handler_is_verbose = verbose;
+-    g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_MASK, ibus_log_handler, NULL);
++    ibus_log_handler_id = g_log_set_handler (G_LOG_DOMAIN,
++                                             G_LOG_LEVEL_MASK,
++                                             ibus_log_handler,
++                                             NULL);
++}
++
++void
++ibus_unset_log_handler (void)
++{
++    if (ibus_log_handler_id != 0) {
++        g_log_remove_handler (G_LOG_DOMAIN, ibus_log_handler_id);
++        ibus_log_handler_id = 0;
++    }
+ }
+diff --git a/src/ibusshare.h b/src/ibusshare.h
+index 61db3cd..4ff4128 100644
+--- a/src/ibusshare.h
++++ b/src/ibusshare.h
+@@ -334,5 +334,12 @@ void             ibus_quit              (void);
+  */
+ void             ibus_set_log_handler   (gboolean verbose);
+ 
++/**
++ * ibus_unset_log_handler:
++ *
++ * Remove the log handler which is set by ibus_set_log_handler.
++ */
++void             ibus_unset_log_handler (void);
++
+ G_END_DECLS
+ #endif
+-- 
+1.7.10
+
+From 25ea1a102f01d1ed3cbadf607b01d15d778e2214 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Tue, 24 Apr 2012 23:55:39 +0900
 Subject: [PATCH] Fix ibus-x11 SEGV in _process_key_event_done.
 
 IMForwardEvent() calls _Xi18nFindClient() and it could return NULL.
@@ -8,59 +842,269 @@ Maybe the connect_id would be disconnected during the async
 process_key_event.
 This fix checks XIM_DISCONNECT in ims_protocol_handler() to cancel
 IMForwardEvent() in _process_key_event_done().
+
+BUG=RH#769135
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/6114047
 ---
- client/x11/main.c |   17 +++++++++++++++++
- 1 files changed, 17 insertions(+), 0 deletions(-)
+ client/x11/main.c |   50 +++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 41 insertions(+), 9 deletions(-)
 
 diff --git a/client/x11/main.c b/client/x11/main.c
-index 58069fc..3cb03f0 100644
+index 65451ab..8550a53 100644
 --- a/client/x11/main.c
 +++ b/client/x11/main.c
-@@ -77,6 +77,8 @@ struct _X11IC {
-     gint             onspot_preedit_length;
- };
- 
-+static gint disconnected_id = 0;
-+
- static void     _xim_set_cursor_location    (X11IC              *x11ic);
- static void     _context_commit_text_cb     (IBusInputContext   *context,
-                                              IBusText           *text,
-@@ -464,6 +466,12 @@ _process_key_event_done (GObject      *object,
+@@ -464,6 +464,13 @@ _process_key_event_done (GObject      *object,
          g_error_free (error);
      }
  
-+    if (pfe->connect_id == disconnected_id) {
++    if (g_hash_table_lookup (_connections,
++                             GINT_TO_POINTER ((gint) pfe->connect_id))
++        == NULL) {
 +        g_slice_free (IMForwardEventStruct, pfe);
-+        disconnected_id = 0;
 +        return;
 +    }
 +
      if (retval == FALSE) {
          IMForwardEvent (_xims, (XPointer) pfe);
      }
-@@ -734,6 +742,13 @@ xim_reset_ic (XIMS xims, IMResetICStruct *call_data)
+@@ -600,29 +607,52 @@ _free_ic (gpointer data, gpointer user_data)
+ }
+ 
+ static int
+-xim_close (XIMS ims, IMCloseStruct *call_data)
++_free_x11_iconn_from_id (CARD16 connect_id)
+ {
+     X11ICONN *conn;
+ 
+-    LOG (1, "XIM_CLOSE connect_id=%d",
+-                call_data->connect_id);
+-
+     conn = (X11ICONN *) g_hash_table_lookup (_connections,
+-                                             GINT_TO_POINTER ((gint) call_data->connect_id));
+-    g_return_val_if_fail (conn != NULL, 0);
++                                             GINT_TO_POINTER ((gint) connect_id));
+ 
+-    g_list_foreach (conn->clients, _free_ic, NULL);
++    if (conn == NULL) {
++        return 0;
++    }
+ 
+-    g_list_free (conn->clients);
++    g_list_free_full (conn->clients, (GDestroyNotify) _free_ic);
+ 
+     g_hash_table_remove (_connections,
+-                         GINT_TO_POINTER ((gint) call_data->connect_id));
++                         GINT_TO_POINTER ((gint) connect_id));
+ 
+     g_slice_free (X11ICONN, conn);
+ 
      return 1;
  }
  
 +static int
++xim_close (XIMS xims, IMCloseStruct *call_data)
++{
++    CARD16 connect_id = call_data->connect_id;
++
++    LOG (1, "XIM_CLOSE connect_id=%d", connect_id);
++
++    return _free_x11_iconn_from_id (connect_id);
++}
++
++static int
 +xim_disconnect_ic (XIMS xims, IMDisConnectStruct *call_data)
 +{
-+    disconnected_id = call_data->connect_id;
++    CARD16 connect_id = call_data->connect_id;
++
++    LOG (1, "XIM_DISCONNECT connect_id=%d", connect_id);
++
++    _free_x11_iconn_from_id (connect_id);
++
++    /* I am not sure if this can return 1 because I have not experienced
++     * that xim_disconnect_ic() is called. But I wish connect_id is
++     * released from _connections to avoid SEGV. */
 +    return 0;
 +}
 +
- int
- ims_protocol_handler (XIMS xims, IMProtocol *call_data)
- {
-@@ -773,6 +788,8 @@ ims_protocol_handler (XIMS xims, IMProtocol *call_data)
-     case XIM_SYNC_REPLY:
-         LOG (1, "XIM_SYNC_REPLY");
-         return 0;
+ 
+ static void
+ _xim_set_cursor_location (X11IC *x11ic)
+@@ -745,6 +775,8 @@ ims_protocol_handler (XIMS xims, IMProtocol *call_data)
+         return xim_open (xims, (IMOpenStruct *)call_data);
+     case XIM_CLOSE:
+         return xim_close (xims, (IMCloseStruct *)call_data);
 +    case XIM_DISCONNECT:
 +        return xim_disconnect_ic (xims, (IMDisConnectStruct *)call_data);
-     default:
-         LOG (1, "Unknown (%d)", call_data->major_code);
-         return 0;
+     case XIM_CREATE_IC:
+         return xim_create_ic (xims, (IMChangeICStruct *)call_data);
+     case XIM_DESTROY_IC:
+-- 
+1.7.10
+
+From 3c5158e43ec7ce36080e1554b94354ad9dd57289 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Wed, 25 Apr 2012 00:07:10 +0900
+Subject: [PATCH] Fix the coordinate in languagebar when dual monitors are
+ used.
+
+BUG=http://code.google.com/p/ibus/issues/detail?id=1168
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/6119046
+---
+ ui/gtk/languagebar.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/ui/gtk/languagebar.py b/ui/gtk/languagebar.py
+index c642d8f..8848652 100644
+--- a/ui/gtk/languagebar.py
++++ b/ui/gtk/languagebar.py
+@@ -245,6 +245,9 @@ class LanguageBar(gtk.Toolbar):
+ 
+     def set_position(self, x, y):
+         w, h = self.__screen.get_width(), self.__screen.get_height()
++        if self.__screen.get_n_monitors() > 1:
++            rect = self.__screen.get_monitor_geometry(0)
++            w, h = rect.width, rect.height
+         if x < 0 or y < 0:
+             x = w - 20
+             y = h - 40
+-- 
+1.7.10
+
+From 43ca94c3a5849f35e5beb38b2f3f7ccd9ef2e24d Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Thu, 26 Apr 2012 10:31:29 +0900
+Subject: [PATCH] Fix not to send preedit-changed signal when the preedit
+ is not changed.
+
+BUG=http://code.google.com/p/ibus/issues/detail?id=1445
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/6111046
+---
+ bus/inputcontext.c          |    8 ++++++--
+ client/gtk2/ibusimcontext.c |   35 ++++++++++++++++++++---------------
+ 2 files changed, 26 insertions(+), 17 deletions(-)
+
+diff --git a/bus/inputcontext.c b/bus/inputcontext.c
+index 3c81688..9b25213 100644
+--- a/bus/inputcontext.c
++++ b/bus/inputcontext.c
+@@ -2292,8 +2292,12 @@ new_engine_cb (GObject             *obj,
+                                              "Opertation was cancelled");
+         }
+         else {
+-            /* Let BusEngineProxy call a Disable signal. */
+-            bus_input_context_disable (data->context);
++            /* Let BusEngineProxy call a Disable signal.
++             * The Disable signal is needed when the engines are switched
++             * but not needed when an engine is enabled initially. */
++            if (data->context->engine) {
++                bus_input_context_disable (data->context);
++            }
+             bus_input_context_set_engine (data->context, engine);
+             g_object_unref (engine);
+             bus_input_context_enable (data->context);
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index 72db581..ab1079f 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -1413,20 +1413,34 @@ _ibus_context_enabled_cb (IBusInputContext *ibuscontext,
+ }
+ 
+ static void
+-_ibus_context_disabled_cb (IBusInputContext *ibuscontext,
+-                           IBusIMContext    *ibusimcontext)
++_ibus_im_context_clear (IBusIMContext    *ibusimcontext)
+ {
+-    IDEBUG ("%s", __FUNCTION__);
++    gboolean flag = FALSE;
++
+     ibusimcontext->enable = FALSE;
+ 
+     /* clear preedit */
++    flag = ibusimcontext->preedit_visible;
+     ibusimcontext->preedit_visible = FALSE;
+     ibusimcontext->preedit_cursor_pos = 0;
++    flag &= (ibusimcontext->preedit_string != NULL &&
++             *ibusimcontext->preedit_string != '\0');
+     g_free (ibusimcontext->preedit_string);
+     ibusimcontext->preedit_string = NULL;
+ 
+-    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
+-    g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
++    if (flag) {
++        g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
++        g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
++    }
++}
++
++static void
++_ibus_context_disabled_cb (IBusInputContext *ibuscontext,
++                           IBusIMContext    *ibusimcontext)
++{
++    IDEBUG ("%s", __FUNCTION__);
++
++    _ibus_im_context_clear (ibusimcontext);
+ }
+ 
+ static void
+@@ -1439,16 +1453,7 @@ _ibus_context_destroy_cb (IBusInputContext *ibuscontext,
+     g_object_unref (ibusimcontext->ibuscontext);
+     ibusimcontext->ibuscontext = NULL;
+ 
+-    ibusimcontext->enable = FALSE;
+-
+-    /* clear preedit */
+-    ibusimcontext->preedit_visible = FALSE;
+-    ibusimcontext->preedit_cursor_pos = 0;
+-    g_free (ibusimcontext->preedit_string);
+-    ibusimcontext->preedit_string = NULL;
+-
+-    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
+-    g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
++    _ibus_im_context_clear (ibusimcontext);
+ }
+ 
+ static void
+-- 
+1.7.10
+
+From 19c6e141b8612792e5606b79b35a4c675e691c20 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Fri, 27 Apr 2012 11:27:03 +0900
+Subject: [PATCH] Enable to fall back /etc/machine-id
+
+http://cgit.freedesktop.org/dbus/dbus/commit/dbus/dbus-sysdeps-unix.c?id=66e52541d5bdd4927a5c702963749760643313f4
+
+BUG=http://code.google.com/p/ibus/issues/detail?id=1389
+TEST=Linux desktop
+
+Review URL: https://codereview.appspot.com/6111060
+---
+ src/ibusshare.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/ibusshare.c b/src/ibusshare.c
+index 9215369..82d39b8 100644
+--- a/src/ibusshare.c
++++ b/src/ibusshare.c
+@@ -44,7 +44,11 @@ ibus_get_local_machine_id (void)
+         if (!g_file_get_contents ("/var/lib/dbus/machine-id",
+                                   &machine_id,
+                                   NULL,
+-                                  &error)) {
++                                  &error) &&
++            !g_file_get_contents ("/etc/machine-id",
++                                  &machine_id,
++                                  NULL,
++                                  NULL)) {
+             g_warning ("Unable to load /var/lib/dbus/machine-id: %s", error->message);
+             g_error_free (error);
+             machine_id = "machine-id";
 -- 
-1.7.7.4
+1.7.10
 
diff --git a/ibus-xx-bridge-hotkey.patch b/ibus-xx-bridge-hotkey.patch
index c3d864f..b21c3bd 100644
--- a/ibus-xx-bridge-hotkey.patch
+++ b/ibus-xx-bridge-hotkey.patch
@@ -1,20 +1,20 @@
-From 18ad10e6dd89a0327fa29535f03fa51b953e7635 Mon Sep 17 00:00:00 2001
+From 449cff04a5da4d894ba603d516034c9065d80c54 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Mon, 28 Nov 2011 12:23:06 +0900
+Date: Tue, 24 Apr 2012 12:02:43 +0900
 Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
  of on-off.
 
 ---
  bus/Makefile.am                 |   20 +-
- bus/ibusimpl.c                  |  598 +++++++++++++++++++++++++++++++++++----
+ bus/ibusimpl.c                  |  590 +++++++++++++++++++++++++++++++++++----
  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            |  298 -------------------
- data/ibus.schemas.in.in         |  311 ++++++++++++++++++++
+ data/ibus.schemas.in            |  311 ---------------------
+ data/ibus.schemas.in.in         |  324 +++++++++++++++++++++
  ibus/_config.py.in              |    6 +
  ibus/inputcontext.py            |   17 +-
  ibus/interface/iinputcontext.py |    7 +-
@@ -32,9 +32,9 @@ Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
  src/ibusutil.h                  |   14 +
  ui/gtk/panel.py                 |  335 ++++++++++++++++++++--
  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, 1653 insertions(+), 407 deletions(-)
+ 29 files changed, 1658 insertions(+), 420 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 059d660..67761fb 100644
+index 059d660..15d28cd 100644
 --- a/bus/ibusimpl.c
 +++ b/bus/ibusimpl.c
 @@ -20,12 +20,17 @@
@@ -392,7 +392,7 @@ index 059d660..67761fb 100644
  #else
      _set_preload_engines (ibus, value);
  #endif
-@@ -1216,6 +1472,53 @@ _find_engine_desc_by_name (BusIBusImpl *
+@@ -1216,6 +1472,50 @@ _find_engine_desc_by_name (BusIBusImpl *
      return NULL;
  }
  
@@ -404,19 +404,16 @@ index 059d660..67761fb 100644
 +
 +    /* 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) {
-+
++    if (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) {
++        /* 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;
@@ -446,7 +443,7 @@ index 059d660..67761fb 100644
  /**
   * _context_request_engine_cb:
   *
-@@ -1226,7 +1529,53 @@ _context_request_engine_cb (BusInputCont
+@@ -1226,7 +1526,53 @@ _context_request_engine_cb (BusInputCont
                              const gchar     *engine_name,
                              BusIBusImpl     *ibus)
  {
@@ -501,7 +498,7 @@ index 059d660..67761fb 100644
  }
  
  /**
-@@ -1265,8 +1614,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
+@@ -1265,8 +1611,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
          if (!desc) {
              if (ibus->register_engine_list) {
                  desc = (IBusEngineDesc *) ibus->register_engine_list->data;
@@ -516,7 +513,7 @@ index 059d660..67761fb 100644
                  desc = (IBusEngineDesc *) ibus->engine_list->data;
              }
          }
-@@ -1311,9 +1665,20 @@ bus_ibus_impl_context_request_rotate_eng
+@@ -1311,9 +1662,20 @@ bus_ibus_impl_context_request_rotate_eng
      desc = bus_engine_proxy_get_desc (engine);
  
      p = g_list_find (ibus->register_engine_list, desc);
@@ -537,7 +534,7 @@ index 059d660..67761fb 100644
          } else {
              p = p->prev;
          }
-@@ -1343,11 +1708,25 @@ bus_ibus_impl_context_request_rotate_eng
+@@ -1343,11 +1705,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;
@@ -563,7 +560,7 @@ index 059d660..67761fb 100644
              if (p == NULL) {
                  p = g_list_last (ibus->engine_list);
              }
-@@ -1358,14 +1737,31 @@ bus_ibus_impl_context_request_rotate_eng
+@@ -1358,14 +1734,31 @@ bus_ibus_impl_context_request_rotate_eng
          next_desc = (IBusEngineDesc*) p->data;
      }
      else {
@@ -595,7 +592,7 @@ index 059d660..67761fb 100644
      bus_ibus_impl_set_context_engine_from_desc (ibus, context, next_desc);
  }
  
-@@ -1387,7 +1783,9 @@ bus_ibus_impl_context_request_previous_e
+@@ -1387,7 +1780,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);
          }
@@ -605,7 +602,7 @@ index 059d660..67761fb 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
-@@ -1448,6 +1846,9 @@ bus_ibus_impl_set_focused_context (BusIB
+@@ -1448,6 +1843,9 @@ bus_ibus_impl_set_focused_context (BusIB
  
      BusEngineProxy *engine = NULL;
      gboolean is_enabled = FALSE;
@@ -615,7 +612,7 @@ index 059d660..67761fb 100644
  
      if (ibus->focused_context) {
          if (ibus->use_global_engine) {
-@@ -1455,6 +1856,9 @@ bus_ibus_impl_set_focused_context (BusIB
+@@ -1455,6 +1853,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);
@@ -625,7 +622,7 @@ index 059d660..67761fb 100644
                  g_object_ref (engine);
                  bus_input_context_set_engine (ibus->focused_context, NULL);
              }
-@@ -1479,6 +1883,9 @@ bus_ibus_impl_set_focused_context (BusIB
+@@ -1479,6 +1880,9 @@ bus_ibus_impl_set_focused_context (BusIB
              if (is_enabled) {
                  bus_input_context_enable (context);
              }
@@ -635,7 +632,7 @@ index 059d660..67761fb 100644
              g_object_unref (engine);
          }
  
-@@ -1708,6 +2115,25 @@ _context_disabled_cb (BusInputContext   
+@@ -1708,6 +2112,25 @@ _context_disabled_cb (BusInputContext
  }
  
  /**
@@ -661,7 +658,7 @@ index 059d660..67761fb 100644
   * bus_ibus_impl_create_input_context:
   * @client: A name of a client. e.g. "gtk-im"
   * @returns: A BusInputContext object.
-@@ -1735,6 +2161,7 @@ bus_ibus_impl_create_input_context (BusI
+@@ -1735,6 +2158,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) },
@@ -669,7 +666,7 @@ index 059d660..67761fb 100644
      };
  
      gint i;
-@@ -2312,6 +2739,9 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2312,6 +2736,9 @@ bus_ibus_impl_filter_keyboard_shortcuts
  
      GQuark event;
      GList *engine_list;
@@ -679,7 +676,7 @@ index 059d660..67761fb 100644
  
      if (trigger == 0) {
          trigger = g_quark_from_static_string ("trigger");
-@@ -2377,6 +2807,12 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2377,6 +2804,12 @@ bus_ibus_impl_filter_keyboard_shortcuts
          return FALSE;
      }
  
@@ -692,7 +689,7 @@ index 059d660..67761fb 100644
      /* Then try engines hotkeys. */
      event = ibus_hotkey_profile_filter_key_event (ibus->engines_hotkey_profile,
                                                    keyval,
-@@ -2398,6 +2834,24 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2398,6 +2831,24 @@ bus_ibus_impl_filter_keyboard_shortcuts
  
          g_assert (new_engine_desc);
  
@@ -717,7 +714,7 @@ index 059d660..67761fb 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
-@@ -2409,8 +2863,43 @@ bus_ibus_impl_filter_keyboard_shortcuts 
+@@ -2409,8 +2860,43 @@ bus_ibus_impl_filter_keyboard_shortcuts
                  break;
              }
          }
@@ -734,15 +731,15 @@ index 059d660..67761fb 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 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.
@@ -756,12 +753,12 @@ index 059d660..67761fb 100644
 +                                                     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);
          }
  
-@@ -2514,59 +3003,54 @@ static void
+@@ -2514,59 +3000,49 @@ static void
  _add_engine_hotkey (IBusEngineDesc *engine, BusIBusImpl *ibus)
  {
      const gchar *hotkeys;
@@ -787,21 +784,6 @@ index 059d660..67761fb 100644
      }
  
 -    hotkey_list = g_strsplit_set (hotkeys, ";,", 0);
--
--    for (p = hotkey_list; p && *p; ++p) {
--        hotkey = g_strstrip (*p);
--        if (!*hotkey || !ibus_key_event_from_string (hotkey, &keyval, &modifiers)) {
--            continue;
--        }
--
--        /* If the hotkey already exists, we won't need to add it again. */
--        event = ibus_hotkey_profile_lookup_hotkey (ibus->engines_hotkey_profile,
--                                                   keyval, modifiers);
--        if (event == 0) {
--            event = g_quark_from_string (hotkey);
--            ibus_hotkey_profile_add_hotkey (ibus->engines_hotkey_profile,
--                                            keyval, modifiers, event);
--        }
 +    /* Do not register hotkeys for the default keymap engines
 +     * but register hotkeys for only input-method engines
 +     * in 'RegisterComponent' dbus method.
@@ -813,37 +795,47 @@ index 059d660..67761fb 100644
 +        return;
 +    }
  
--        engine_list = g_hash_table_lookup (ibus->hotkey_to_engines_map,
--                                           GUINT_TO_POINTER (event));
+-    for (p = hotkey_list; p && *p; ++p) {
+-        hotkey = g_strstrip (*p);
+-        if (!*hotkey || !ibus_key_event_from_string (hotkey, &keyval, &modifiers)) {
+-            continue;
+-        }
 +    /* 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) {
- 
--        /* As we will rebuild the engines hotkey map whenever an engine was
--         * added or removed, we don't need to hold a reference of the engine
--         * here. */
--        engine_list = g_list_append (engine_list, engine);
++    if (g_strcmp0 (_bridge_trigger_keys, "Control+space") != 0) {
 +        hotkeys = (const gchar *) _bridge_trigger_keys;
 +    } else {
 +        hotkeys = ibus_engine_desc_get_hotkeys (engine);
+ 
+-        /* If the hotkey already exists, we won't need to add it again. */
+-        event = ibus_hotkey_profile_lookup_hotkey (ibus->engines_hotkey_profile,
+-                                                   keyval, modifiers);
+-        if (event == 0) {
+-            event = g_quark_from_string (hotkey);
+-            ibus_hotkey_profile_add_hotkey (ibus->engines_hotkey_profile,
+-                                            keyval, modifiers, event);
++        /* 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;
+         }
 +    }
 +#else
 +    hotkeys = ibus_engine_desc_get_hotkeys (engine);
 +#endif
  
+-        engine_list = g_hash_table_lookup (ibus->hotkey_to_engines_map,
+-                                           GUINT_TO_POINTER (event));
+-
+-        /* As we will rebuild the engines hotkey map whenever an engine was
+-         * added or removed, we don't need to hold a reference of the engine
+-         * here. */
+-        engine_list = g_list_append (engine_list, engine);
+-
 -        /* We need to steal the value before adding it back, otherwise it will
 -         * be destroyed. */
 -        g_hash_table_steal (ibus->hotkey_to_engines_map, GUINT_TO_POINTER (event));
-+#if USE_BRIDGE_HOTKEY
-+    /* 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;
-+    }
-+#endif
- 
+-
 -        g_hash_table_insert (ibus->hotkey_to_engines_map,
 -                             GUINT_TO_POINTER (event), engine_list);
 +    if (!hotkeys || !*hotkeys) {
@@ -1269,7 +1261,7 @@ index 8979515..2a2b459
        <applyto>/desktop/ibus/panel/show</applyto>
        <owner>ibus</owner>
 diff --git a/ibus/_config.py.in b/ibus/_config.py.in
-index a830136..4c3c980 100644
+index 098d805..10c805e 100644
 --- a/ibus/_config.py.in
 +++ b/ibus/_config.py.in
 @@ -25,6 +25,8 @@ __all__ = (
@@ -1400,7 +1392,7 @@ index f620361..664dc99 100644
          self.__emit_changed()
  
 diff --git a/setup/main.py b/setup/main.py
-index 7f4a040..a773944 100644
+index 97e05a4..c9c964f 100644
 --- a/setup/main.py
 +++ b/setup/main.py
 @@ -213,6 +213,22 @@ class Setup(object):
@@ -1463,7 +1455,7 @@ index 7f4a040..a773944 100644
          if section == 'general' and name == 'preload_engines':
              engines = self.__get_engine_descs_from_names(value)
 diff --git a/setup/setup.ui b/setup/setup.ui
-index f1e6d0b..671b84c 100644
+index 57cb597..0d53227 100644
 --- a/setup/setup.ui
 +++ b/setup/setup.ui
 @@ -100,6 +100,7 @@
@@ -1580,7 +1572,7 @@ index f1e6d0b..671b84c 100644
                  </child>
                </object>
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 6454522..319df3c 100644
+index 80fedee..d9795b1 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -38,14 +38,16 @@ INTROSPECTION_GIRS =
@@ -1628,7 +1620,7 @@ index 32f8338..bef7dfc 100644
 +    g_tree_foreach (priv->hotkeys, func, user_data);
 +}
 diff --git a/src/ibushotkey.h b/src/ibushotkey.h
-index 9a341f6..92ec6af 100644
+index 65cdc5b..e80b1a3 100644
 --- a/src/ibushotkey.h
 +++ b/src/ibushotkey.h
 @@ -179,5 +179,16 @@ GQuark           ibus_hotkey_profile_lookup_hotkey
@@ -1649,7 +1641,7 @@ index 9a341f6..92ec6af 100644
  G_END_DECLS
  #endif
 diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
-index 54e30ae..c37a71d 100644
+index 54e30ae..a9a21b4 100644
 --- a/src/ibusinputcontext.c
 +++ b/src/ibusinputcontext.c
 @@ -1219,6 +1219,33 @@ ibus_input_context_set_engine (IBusInputContext *context,
@@ -1687,7 +1679,7 @@ index 54e30ae..c37a71d 100644
      void                                                                \
      ibus_input_context_##name (IBusInputContext *context)               \
 diff --git a/src/ibusinputcontext.h b/src/ibusinputcontext.h
-index be3c502..40b902e 100644
+index f584de3..547263f 100644
 --- a/src/ibusinputcontext.h
 +++ b/src/ibusinputcontext.h
 @@ -495,6 +495,18 @@ void         ibus_input_context_set_engine  (IBusInputContext   *context,
@@ -1753,7 +1745,7 @@ index 7cf1995..a19d16e 100644
 +
  #endif
 diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
-index 8804634..549393a 100644
+index a202d13..03942f3 100644
 --- a/ui/gtk/panel.py
 +++ b/ui/gtk/panel.py
 @@ -67,6 +67,7 @@ class Panel(ibus.PanelBase):
@@ -2201,7 +2193,7 @@ index 8804634..549393a 100644
              return engine.layout
          else:
 diff --git a/xkb/Makefile.am b/xkb/Makefile.am
-index ad9cdd9..c4d5afb 100644
+index b4d8ba2..c19f596 100644
 --- a/xkb/Makefile.am
 +++ b/xkb/Makefile.am
 @@ -28,6 +28,8 @@ INCLUDES = \
@@ -2214,7 +2206,7 @@ index ad9cdd9..c4d5afb 100644
  
  noinst_PROGRAMS = $(TESTS)
 diff --git a/xkb/ibus-engine-xkb-main.c b/xkb/ibus-engine-xkb-main.c
-index 0fb0f0c..4787bf2 100644
+index dbfffaa..a113d2e 100644
 --- a/xkb/ibus-engine-xkb-main.c
 +++ b/xkb/ibus-engine-xkb-main.c
 @@ -290,6 +290,9 @@ print_component ()
@@ -2290,5 +2282,5 @@ index d59a929..86bcf8f 100644
  
      g_free (name);
 -- 
-1.7.5.4
+1.7.10
 
diff --git a/ibus-xx-setup-frequent-lang.patch b/ibus-xx-setup-frequent-lang.patch
index 67d7e0b..9f27495 100644
--- a/ibus-xx-setup-frequent-lang.patch
+++ b/ibus-xx-setup-frequent-lang.patch
@@ -1,17 +1,17 @@
-From 6937ff7453a352dc63a6487c7726acdb8942f8c9 Mon Sep 17 00:00:00 2001
+From 4efc2864320fbcac797976b981e5afca036bedc1 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 5 Aug 2011 20:23:07 +0900
+Date: Tue, 24 Apr 2012 11:55:01 +0900
 Subject: [PATCH] Enable ibus-setup to show the frequently used languages
  only in IME list.
 
 ---
  data/ibus.schemas.in.in |  168 +++++++++++++++++++++++++++++++++++++++++++++++
- setup/enginecombobox.py |  153 ++++++++++++++++++++++++++++++++++++------
+ setup/enginecombobox.py |  153 +++++++++++++++++++++++++++++++++++-------
  setup/main.py           |    1 +
  3 files changed, 300 insertions(+), 22 deletions(-)
 
 diff --git a/data/ibus.schemas.in.in b/data/ibus.schemas.in.in
-index 2df4f19..692664b 100644
+index 0701fe2..b2e34c3 100644
 --- a/data/ibus.schemas.in.in
 +++ b/data/ibus.schemas.in.in
 @@ -240,6 +240,174 @@
@@ -419,7 +419,7 @@ index 7383177..bff2407 100644
          return self.__title
  
 diff --git a/setup/main.py b/setup/main.py
-index 192fb88..5a0170d 100644
+index 7d734ae..c8d7b60 100644
 --- a/setup/main.py
 +++ b/setup/main.py
 @@ -227,6 +227,7 @@ class Setup(object):
@@ -431,5 +431,5 @@ index 192fb88..5a0170d 100644
  
          engines = self.__bus.list_active_engines()
 -- 
-1.7.5.4
+1.7.10
 
diff --git a/ibus.spec b/ibus.spec
index 0acd358..56cb5bf 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -38,7 +38,7 @@
 
 Name:       ibus
 Version:    1.4.1
-Release:    1%{?dist}
+Release:    2%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
@@ -451,6 +451,13 @@ fi
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Fri Apr 27 2012 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.1-2
+- Updated ibus-HEAD.patch from upstream
+  Fixed Bug 813125 - Do not send preedit-changed signal without preedit.
+  Fixed the coordinate in languagebar when dual monitors are used.
+- Updated ibus-xx-bridge-hotkey.patch
+  Fixed Bug 813971 - no Ctrl+Space
+
 * Thu Feb 09 2012 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.1-1
 - Updated to 1.4.1
 


More information about the scm-commits mailing list