public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Bumped to 1.4.99.20121109
@ 2026-05-31  2:05 Takao Fujiwara
  0 siblings, 0 replies; only message 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 : a208e6b136c006affd660fb1368543cc351ee06e
            Author : Takao Fujiwara <tfujiwar@redhat.com>
            Date   : 2012-11-14T12:41:29+09:00
            Stats  : +775/-524 in 10 file(s)
            URL    : https://src.fedoraproject.org/rpms/ibus/c/a208e6b136c006affd660fb1368543cc351ee06e?branch=autotool

            Log:
            Bumped to 1.4.99.20121109

Removed im-chooser, imsettings-gnome, gnome-icon-theme-symbolic
dependencies in f18 because ibus gnome integration is done.
Use ibus-keyboard instead of input-keyboard-symbolic.
Disabled ibus-gjs build because of ibus gnome integration.

---
diff --git a/.gitignore b/.gitignore
index 396de22..c4e66f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,7 @@ ibus-1.3.6.tar.gz
 /ibus-1.4.99.20120822.tar.gz
 /ibus-1.4.99.20120914.tar.gz
 /ibus-1.4.99.20121006.tar.gz
+/ibus-1.4.99.20121109.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

diff --git a/ibus-530711-preload-sys.patch b/ibus-530711-preload-sys.patch
index 5f781db..5b7aace 100644
--- a/ibus-530711-preload-sys.patch
+++ b/ibus-530711-preload-sys.patch
@@ -1,6 +1,6 @@
-From 2c4bbcc26f735d6c274483a79b4b27f730afa7b2 Mon Sep 17 00:00:00 2001
+From a2558c5d403bc150fae7fb1e07f0b541a7f90e8a Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 14 Sep 2012 18:49:59 +0900
+Date: Wed, 14 Nov 2012 07:07:08 +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,
@@ -17,15 +17,15 @@ on ibus-setup, ibus-setup sets 'preload_engine_mode' as
 IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
 'preload_engines'.
 ---
- data/ibus.schemas.in |   24 +++++++++
- setup/main.py        |   61 ++++++++++++++++++++--
- setup/setup.ui       |   22 ++++++--
- src/ibustypes.h      |   10 ++++
- ui/gtk3/panel.vala   |  136 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ data/ibus.schemas.in |  24 +++++++++
+ setup/main.py        |  61 +++++++++++++++++++++--
+ setup/setup.ui       |  22 +++++++--
+ src/ibustypes.h      |  10 ++++
+ ui/gtk3/panel.vala   | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++
  5 files changed, 246 insertions(+), 7 deletions(-)
 
 diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index 07169ae..4086f67 100644
+index 1a0e2d2..64f6f33 100644
 --- a/data/ibus.schemas.in
 +++ b/data/ibus.schemas.in
 @@ -2,6 +2,30 @@
@@ -60,7 +60,7 @@ index 07169ae..4086f67 100644
        <applyto>/desktop/ibus/general/preload_engines</applyto>
        <owner>ibus</owner>
 diff --git a/setup/main.py b/setup/main.py
-index 2a19c49..000a03b 100644
+index c02229b..5da6340 100644
 --- a/setup/main.py
 +++ b/setup/main.py
 @@ -196,6 +196,20 @@ class Setup(object):
@@ -138,7 +138,7 @@ index 2a19c49..000a03b 100644
      def __init_bus(self):
          self.__bus = IBus.Bus()
          if self.__bus.is_connected():
-@@ -561,8 +604,18 @@ class Setup(object):
+@@ -562,8 +605,18 @@ class Setup(object):
          value = GLib.Variant.new_boolean(value)
          self.__config.set_value("general", "use_global_engine", value)
  
@@ -228,19 +228,19 @@ index 737b3e2..8ce5a16 100644
   * @x: x coordinate.
   * @y: y coordinate.
 diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
-index 8e6f756..01cc7aa 100644
+index 1aca443..1ec2579 100644
 --- a/ui/gtk3/panel.vala
 +++ b/ui/gtk3/panel.vala
-@@ -291,6 +291,8 @@ class Panel : IBus.PanelService {
+@@ -309,6 +309,8 @@ class Panel : IBus.PanelService {
          if (m_config != null) {
              m_config.value_changed.connect(config_value_changed_cb);
              m_config.watch("general", "preload_engines");
 +            m_config.watch("general", "preload_engines_inited");
 +            m_config.watch("general", "preload_engine_mode");
              m_config.watch("general", "engines_order");
+             m_config.watch("general", "switcher_delay_time");
              m_config.watch("general/hotkey", "trigger_accel");
-             m_config.watch("general/hotkey", "trigger_accel_backward");
-@@ -352,7 +354,136 @@ class Panel : IBus.PanelService {
+@@ -417,7 +419,136 @@ class Panel : IBus.PanelService {
              init_gkbd();
          }
  
@@ -377,7 +377,7 @@ index 8e6f756..01cc7aa 100644
      }
  
      private void update_xkb_engines() {
-@@ -513,6 +644,11 @@ class Panel : IBus.PanelService {
+@@ -580,6 +711,11 @@ class Panel : IBus.PanelService {
                                           string section,
                                           string name,
                                           Variant variant) {
@@ -390,5 +390,5 @@ index 8e6f756..01cc7aa 100644
              update_engines(variant, null);
              return;
 -- 
-1.7.10.4
+1.8.0
 

diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch
index eda3e61..653130d 100644
--- a/ibus-541492-xkb.patch
+++ b/ibus-541492-xkb.patch
@@ -1,37 +1,36 @@
-From 15a9eb2a8f9a278b5e357d7dd7ffebedd05d0c5e Mon Sep 17 00:00:00 2001
+From c53acc91c40753ec845a4a73035769d4e205be7c Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Tue, 9 Oct 2012 17:21:01 +0900
+Date: Wed, 14 Nov 2012 07:06:58 +0900
 Subject: [PATCH] Add ibus-xkb and libgnomekbd.
 
 ---
- bindings/vala/Gkbd-3.0.metadata |    1 +
- bindings/vala/Makefile.am       |   23 ++
- bindings/vala/Xkl-1.0.metadata  |    3 +
- client/x11/gdk-private.c        |    3 +-
- configure.ac                    |   60 +++++
- data/ibus.schemas.in            |   94 +++++++
- engine/Makefile.am              |    6 +
- engine/ibus-xkb/Makefile.am     |   64 +++++
- engine/ibus-xkb/ibus-xkb-main.c |  111 ++++++++
- engine/ibus-xkb/xkblib.c        |  327 ++++++++++++++++++++++++
- engine/ibus-xkb/xkblib.h        |   41 +++
- engine/main.vala                |   86 +++++++
- engine/simple.xml.in.in         |  531 +--------------------------------------
- ibus-1.0.pc.in                  |    4 +
- ibus.spec.in                    |   12 +
- setup/main.py                   |   38 ++-
- src/Makefile.am                 |    5 +
- src/ibus.h                      |    1 +
- src/ibusxkbxml.c                |  466 ++++++++++++++++++++++++++++++++++
- src/ibusxkbxml.h                |  187 ++++++++++++++
- ui/gtk3/Makefile.am             |   39 +++
- ui/gtk3/gkbdlayout.vala.false   |   63 +++++
- ui/gtk3/gkbdlayout.vala.true    |  108 ++++++++
- ui/gtk3/keybindingmanager.vala  |   14 +-
- ui/gtk3/panel.vala              |  365 +++++++++++++++++++++++----
- ui/gtk3/switcher.vala           |   49 ++--
- ui/gtk3/xkblayout.vala          |  464 ++++++++++++++++++++++++++++++++++
- 27 files changed, 2562 insertions(+), 603 deletions(-)
+ bindings/vala/Gkbd-3.0.metadata |   1 +
+ bindings/vala/Makefile.am       |  23 ++
+ bindings/vala/Xkl-1.0.metadata  |   3 +
+ configure.ac                    |  68 +++++
+ data/ibus.schemas.in            |  94 +++++++
+ engine/Makefile.am              |   6 +
+ engine/ibus-xkb/Makefile.am     |  61 ++++
+ engine/ibus-xkb/ibus-xkb-main.c | 177 ++++++++++++
+ engine/ibus-xkb/xkblib.c        | 327 ++++++++++++++++++++++
+ engine/ibus-xkb/xkblib.h        |  41 +++
+ engine/main.vala                |  86 ++++++
+ engine/simple.xml.in.in         | 605 +---------------------------------------
+ ibus-1.0.pc.in                  |   4 +
+ ibus.spec.in                    |  12 +
+ setup/main.py                   |  38 ++-
+ src/Makefile.am                 |   5 +
+ src/ibus.h                      |   1 +
+ src/ibusxkbxml.c                | 466 +++++++++++++++++++++++++++++++
+ src/ibusxkbxml.h                | 187 +++++++++++++
+ ui/gtk3/Makefile.am             |  39 +++
+ ui/gtk3/gkbdlayout.vala.false   |  63 +++++
+ ui/gtk3/gkbdlayout.vala.true    | 108 +++++++
+ ui/gtk3/keybindingmanager.vala  |  14 +-
+ ui/gtk3/panel.vala              | 353 ++++++++++++++++++++---
+ ui/gtk3/switcher.vala           |  49 ++--
+ ui/gtk3/xkblayout.vala          | 464 ++++++++++++++++++++++++++++++
+ 26 files changed, 2628 insertions(+), 667 deletions(-)
  create mode 100644 bindings/vala/Gkbd-3.0.metadata
  create mode 100644 bindings/vala/Xkl-1.0.metadata
  create mode 100644 engine/ibus-xkb/Makefile.am
@@ -114,37 +113,32 @@ index 0000000..4961d0c
 +Xkl cheader_filename="libxklavier/xklavier.h"
 +Engine
 +    .filter_events.evt ref type="X.Event"
-diff --git a/client/x11/gdk-private.c b/client/x11/gdk-private.c
-index 009a5b0..20689c3 100644
---- a/client/x11/gdk-private.c
-+++ b/client/x11/gdk-private.c
-@@ -27,8 +27,7 @@
- #include <gdk/gdkx.h>
- #include <gdk/gdkkeysyms.h>
- 
--#ifdef HAVE_X11_XKBLIB_H
--#  define HAVE_XKB
-+#ifdef HAVE_XKB
- #  include <X11/XKBlib.h>
- #endif
- 
 diff --git a/configure.ac b/configure.ac
-index cc7d0e0..df0d4a7 100644
+index cc7d0e0..246b3fc 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -252,6 +252,63 @@ else
+@@ -252,6 +252,71 @@ else
      enable_xim="no (disabled, use --enable-xim to enable)"
  fi
  
-+# --enable-xkb option.
-+AC_ARG_ENABLE(xkb,
-+    AS_HELP_STRING([--enable-xkb],
-+                   [Build xkb]),
-+    [enable_xkb=$enableval],
-+    [enable_xkb=no]
++# Option for XKB command.
++AC_ARG_WITH(xkb-command,
++    AS_HELP_STRING([--with-xkb-command[=XKB_COMMAND]],
++        [Use XKB_COMMAND to set keymap. ibus-xkb is available. (default is setxkbmap)]),
++    XKB_COMMAND=$with_xkb_command,
++    XKB_COMMAND=setxkbmap
 +)
-+AM_CONDITIONAL([ENABLE_XKB], [test x"$enable_xkb" = x"yes"])
-+if test x"$enable_xkb" = x"yes"; then
++AC_DEFINE_UNQUOTED(XKB_COMMAND, "$XKB_COMMAND",
++                   [xkb command line to set xkb keymaps.])
++
++if test x"$XKB_COMMAND" = x"ibus-xkb"; then
++    enable_ibus_xkb=yes
++else
++    enable_ibus_xkb=no
++fi
++
++AM_CONDITIONAL([ENABLE_IBUS_XKB], [test x"$enable_ibus_xkb" = x"yes"])
++if test x"$enable_ibus_xkb" = x"yes"; then
 +    PKG_CHECK_MODULES(X11, [
 +        x11
 +    ])
@@ -152,10 +146,9 @@ index cc7d0e0..df0d4a7 100644
 +        [xkbfile],,
 +        [XKB_LIBS="-lxkbfile"]
 +    )
-+    AC_DEFINE(HAVE_XKB, 1, [define to 1 if you have xkbfile])
++    AC_DEFINE(HAVE_IBUS_XKB, 1, [define to 1 if you have xkbfile])
 +    HAVE_IBUS_XKB=true
 +else
-+    enable_xkb="no (disabled, use --enable-xkb to enable)"
 +    HAVE_IBUS_XKB=false
 +fi
 +AC_SUBST(HAVE_IBUS_XKB)
@@ -196,7 +189,7 @@ index cc7d0e0..df0d4a7 100644
  # GObject introspection
  GOBJECT_INTROSPECTION_CHECK([0.6.8])
  
-@@ -517,6 +574,7 @@ src/ibusversion.h
+@@ -517,6 +582,7 @@ src/ibusversion.h
  src/tests/Makefile
  bus/Makefile
  engine/Makefile
@@ -204,19 +197,20 @@ index cc7d0e0..df0d4a7 100644
  engine/simple.xml.in
  util/Makefile
  util/IMdkit/Makefile
-@@ -577,5 +635,7 @@ Build options:
+@@ -576,6 +642,8 @@ Build options:
+   No snooper regexes        "$NO_SNOOPER_APPS"
    Panel icon                "$IBUS_ICON_KEYBOARD"
    Enable surrounding-text   $enable_surrounding_text
-   Run test cases            $enable_tests
-+  Build XKB                 $enable_xkb
++  XKB command               $XKB_COMMAND
 +  Build libgnomebkd         $enable_libgnomekbd
+   Run test cases            $enable_tests
  ])
  
 diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index 53ba05c..07169ae 100644
+index a8c7d7f..1a0e2d2 100644
 --- a/data/ibus.schemas.in
 +++ b/data/ibus.schemas.in
-@@ -26,6 +26,52 @@
+@@ -42,6 +42,52 @@
        </locale>
      </schema>
      <schema>
@@ -269,7 +263,7 @@ index 53ba05c..07169ae 100644
        <key>/schemas/desktop/ibus/general/hotkey/trigger</key>
        <applyto>/desktop/ibus/general/hotkey/trigger</applyto>
        <owner>ibus</owner>
-@@ -34,6 +80,54 @@
+@@ -50,6 +96,54 @@
        <default>[Control+space,Zenkaku_Hankaku,Alt+Kanji,Alt+grave,Hangul,Alt+Release+Alt_R]</default>
        <locale name="C">
          <short>Trigger shortcut keys</short>
@@ -325,7 +319,7 @@ index 53ba05c..07169ae 100644
        </locale>
      </schema>
 diff --git a/engine/Makefile.am b/engine/Makefile.am
-index b3b46be..7a806fc 100644
+index b3b46be..90c6fde 100644
 --- a/engine/Makefile.am
 +++ b/engine/Makefile.am
 @@ -22,6 +22,12 @@
@@ -334,7 +328,7 @@ index b3b46be..7a806fc 100644
  
 +SUBDIRS =
 +
-+if ENABLE_XKB
++if ENABLE_IBUS_XKB
 +SUBDIRS += ibus-xkb
 +endif
 +
@@ -343,10 +337,10 @@ index b3b46be..7a806fc 100644
  	-I$(top_builddir)/src \
 diff --git a/engine/ibus-xkb/Makefile.am b/engine/ibus-xkb/Makefile.am
 new file mode 100644
-index 0000000..65ede37
+index 0000000..4a32e87
 --- /dev/null
 +++ b/engine/ibus-xkb/Makefile.am
-@@ -0,0 +1,64 @@
+@@ -0,0 +1,61 @@
 +# vim:set noet ts=4:
 +#
 +# ibus - The Input Bus
@@ -385,9 +379,6 @@ index 0000000..65ede37
 +	-Wno-unused-function \
 +	$(NULL)
 +
-+AM_LDADD = \
-+	$(NULL)
-+
 +libexec_PROGRAMS = ibus-xkb
 +
 +ibus_xkb_SOURCES = \
@@ -413,10 +404,10 @@ index 0000000..65ede37
 +-include $(top_srcdir)/git.mk
 diff --git a/engine/ibus-xkb/ibus-xkb-main.c b/engine/ibus-xkb/ibus-xkb-main.c
 new file mode 100644
-index 0000000..2529e4d
+index 0000000..3878b5f
 --- /dev/null
 +++ b/engine/ibus-xkb/ibus-xkb-main.c
-@@ -0,0 +1,111 @@
+@@ -0,0 +1,177 @@
 +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 +/* vim:set et sts=4: */
 +/* bus - The Input Bus
@@ -454,7 +445,7 @@ index 0000000..2529e4d
 +
 +#include "xkblib.h"
 +
-+static gboolean get_layout = FALSE;
++static gboolean query = FALSE;
 +static gboolean get_group = FALSE;
 +static gchar *layout = NULL;
 +static gchar *variant = NULL;
@@ -463,7 +454,7 @@ index 0000000..2529e4d
 +
 +static const GOptionEntry entries[] =
 +{
-+    { "get", 'g', 0, G_OPTION_ARG_NONE, &get_layout, N_("Get current xkb layout"), NULL },
++    { "get", 'g', 0, G_OPTION_ARG_NONE, &query, N_("Query the current xkb layout"), NULL },
 +    { "layout", 'l', 0, G_OPTION_ARG_STRING, &layout, N_("Set xkb LAYOUT"), N_("LAYOUT") },
 +    { "variant", 'v', 0, G_OPTION_ARG_STRING, &variant, N_("Set xkb VARIANT"), N_("VARIANT") },
 +    { "option", 'o', 0, G_OPTION_ARG_STRING, &option, N_("Set xkb OPTION"), N_("OPTION") },
@@ -471,9 +462,60 @@ index 0000000..2529e4d
 +    { NULL },
 +};
 +
++
++gboolean
++parse_setxkbmap_args (int *pargc, char ***pargv)
++{
++    int argc = *pargc;
++    char **argv = *pargv;
++    char **new_argv = NULL;
++    int n = 1;
++    int i;
++    gboolean retval = FALSE;
++
++    for (i = 0; i < argc; i++) {
++        if (g_strcmp0 (argv[i], "-layout") == 0 && i + 1 < argc) {
++            g_free (layout);
++            layout = g_strdup (argv[i + 1]);
++            i++;
++            retval = TRUE;
++            continue;
++        }
++        if (g_strcmp0 (argv[i], "-variant") == 0 && i + 1 < argc) {
++            g_free (variant);
++            variant = g_strdup (argv[i + 1]);
++            i++;
++            retval = TRUE;
++            continue;
++        }
++        if (g_strcmp0 (argv[i], "-option") == 0 && i + 1 < argc) {
++            g_free (option);
++            option = g_strdup (argv[i + 1]);
++            i++;
++            retval = TRUE;
++            continue;
++        }
++        if (g_strcmp0 (argv[i], "-query") == 0) {
++            query = TRUE;
++            retval = TRUE;
++            continue;
++        }
++
++        new_argv = g_renew(char*, new_argv, n);
++        new_argv[n - 1] = g_strdup (argv[i]);
++        n++;
++    }
++
++    *pargc = n - 1;
++    *pargv = new_argv;
++
++    return retval;
++}
++
 +int
 +main (int argc, char *argv[])
 +{
++    gboolean parsed;
 +    GOptionContext *context;
 +    GError *error = NULL;
 +    Display *xdisplay;
@@ -485,12 +527,14 @@ index 0000000..2529e4d
 +    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 +#endif
 +
++    parsed = parse_setxkbmap_args (&argc, &argv);
++
 +    context = g_option_context_new ("- ibus daemon");
 +
 +    g_option_context_set_translation_domain (context, GETTEXT_PACKAGE);
 +    g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
 +
-+    if (!g_option_context_parse (context, &argc, &argv, &error)) {
++    if (!parsed && !g_option_context_parse (context, &argc, &argv, &error)) {
 +        g_printerr ("Option parsing failed: %s\n", error->message);
 +        return -1;
 +    }
@@ -503,9 +547,22 @@ index 0000000..2529e4d
 +    ibus_xkb_init (xdisplay);
 +
 +    if (layout) {
++        if (variant == NULL) {
++            variant = ibus_xkb_get_current_variant ();
++        }
++
++        if (option == NULL) {
++            option = ibus_xkb_get_current_option ();
++        }
++
 +        ibus_xkb_set_layout (layout, variant, option);
 +    }
-+    if (get_layout) {
++
++    if (query) {
++        g_free (layout);
++        g_free (variant);
++        g_free (option);
++
 +        layout = ibus_xkb_get_current_layout ();
 +        variant = ibus_xkb_get_current_variant ();
 +        option = ibus_xkb_get_current_option ();
@@ -1013,10 +1070,10 @@ index acfa737..afadca0 100644
      if (!bus.is_connected()) {
          warning("ibus-daemon does not exist.");
 diff --git a/engine/simple.xml.in.in b/engine/simple.xml.in.in
-index 25db578..7de949a 100644
+index d064ad6..d14ad93 100644
 --- a/engine/simple.xml.in.in
 +++ b/engine/simple.xml.in.in
-@@ -7,534 +7,5 @@
+@@ -7,608 +7,5 @@
  	<license>GPL</license>
  	<homepage>http://code.google.com/p/ibus</homepage>
  	<textdomain>ibus</textdomain>
@@ -1037,7 +1094,8 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>us(intl)</layout>
+-			<layout>us</layout>
+-			<layout_variant>intl</layout_variant>
 -			<longname>English (US, international with dead keys)</longname>
 -			<description>English (US, international with dead keys)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1048,7 +1106,8 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>us(colemak)</layout>
+-			<layout>us</layout>
+-			<layout_variant>colemak</layout_variant>
 -			<longname>English (Colemak)</longname>
 -			<description>English (Colemak)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1059,7 +1118,8 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>us(dvorak)</layout>
+-			<layout>us</layout>
+-			<layout_variant>dvorak</layout_variant>
 -			<longname>English (Dvorak)</longname>
 -			<description>English (Dvorak)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1070,20 +1130,21 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>us(altgr-intl)</layout>
+-			<layout>us</layout>
+-			<layout_variant>altgr-intl</layout_variant>
 -			<longname>English (international AltGr dead keys)</longname>
 -			<description>English (international AltGr dead keys)</description>
 -                        <icon>ibus-keyboard</icon>
 -			<rank>99</rank>
 -		</engine>
 -		<engine>
--			<name>xkb:us:altgr-intl:eng</name>
--			<language>eng</language>
+-			<name>xkb:ara::ara</name>
+-			<language>ara</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>us(altgr-intl)</layout>
--			<longname>English (international AltGr dead keys)</longname>
--			<description>English (international AltGr dead keys)</description>
+-			<layout>ara</layout>
+-			<longname>Arabic</longname>
+-			<description>Arabic</description>
 -                        <icon>ibus-keyboard</icon>
 -			<rank>99</rank>
 -		</engine>
@@ -1132,6 +1193,18 @@ index 25db578..7de949a 100644
 -			<rank>99</rank>
 -		</engine>
 -		<engine>
+-			<name>xkb:br:dvorak:por</name>
+-			<language>por</language>
+-			<license>GPL</license>
+-			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>br</layout>
+-			<layout_variant>dvorak</layout_variant>
+-			<longname>Portuguese (Brazil, Dvorak)</longname>
+-			<description>Portuguese (Brazil, Dvorak)</description>
+-                        <icon>ibus-keyboard</icon>
+-			<rank>99</rank>
+-		</engine>
+-		<engine>
 -			<name>xkb:bg::bul</name>
 -			<language>bul</language>
 -			<license>GPL</license>
@@ -1147,7 +1220,8 @@ index 25db578..7de949a 100644
 -			<language>bul</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>bg(phonetic)</layout>
+-			<layout>bg</layout>
+-			<layout_variant>phonetic</layout_variant>
 -			<longname>Bulgarian (traditional phonetic)</longname>
 -			<description>Bulgarian (traditional phonetic)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1169,7 +1243,8 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>ca(eng)</layout>
+-			<layout>ca</layout>
+-			<layout_variant>eng</layout_variant>
 -			<longname>English (Canada)</longname>
 -			<description>English (Canada)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1242,6 +1317,18 @@ index 25db578..7de949a 100644
 -			<rank>99</rank>
 -		</engine>
 -		<engine>
+-			<name>xkb:fr:dvorak:fra</name>
+-			<language>fra</language>
+-			<license>GPL</license>
+-			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>fr</layout>
+-			<layout_variant>dvorak</layout_variant>
+-			<longname>French (Dvorak)</longname>
+-			<description>French (Dvorak)</description>
+-                        <icon>ibus-keyboard</icon>
+-			<rank>99</rank>
+-		</engine>
+-		<engine>
 -			<name>xkb:de::ger</name>
 -			<language>ger</language>
 -			<license>GPL</license>
@@ -1253,11 +1340,24 @@ index 25db578..7de949a 100644
 -			<rank>99</rank>
 -		</engine>
 -		<engine>
+-			<name>xkb:de:dvorak:ger</name>
+-			<language>ger</language>
+-			<license>GPL</license>
+-			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>de</layout>
+-			<layout_variant>dvorak</layout_variant>
+-			<longname>German (Dvorak)</longname>
+-			<description>German (Dvorak)</description>
+-                        <icon>ibus-keyboard</icon>
+-			<rank>99</rank>
+-		</engine>
+-		<engine>
 -			<name>xkb:de:neo:ger</name>
 -			<language>ger</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>de(neo)</layout>
+-			<layout>de</layout>
+-			<layout_variant>neo</layout_variant>
 -			<longname>German (Neo 2)</longname>
 -			<description>German (Neo 2)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1345,7 +1445,8 @@ index 25db578..7de949a 100644
 -			<language>lav</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>lv(apostrophe)</layout>
+-			<layout>lv</layout>
+-			<layout_variant>apostrophe</layout_variant>
 -			<longname>Latvian (apostrophe variant)</longname>
 -			<description>Latvian (apostrophe variant)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1363,6 +1464,18 @@ index 25db578..7de949a 100644
 -			<rank>99</rank>
 -		</engine>
 -		<engine>
+-			<name>xkb:pl:dvorak:pol</name>
+-			<language>pol</language>
+-			<license>GPL</license>
+-			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>pl</layout>
+-			<layout_variant>dvorak</layout_variant>
+-			<longname>Polish (Dvorak)</longname>
+-			<description>Polish (Dvorak)</description>
+-                        <icon>ibus-keyboard</icon>
+-			<rank>99</rank>
+-		</engine>
+-		<engine>
 -			<name>xkb:pt::por</name>
 -			<language>por</language>
 -			<license>GPL</license>
@@ -1400,7 +1513,8 @@ index 25db578..7de949a 100644
 -			<language>rus</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>ru(phonetic)</layout>
+-			<layout>ru</layout>
+-			<layout_variant>phonetic</layout_variant>
 -			<longname>Russian (phonetic)</longname>
 -			<description>Russian (phonetic)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1455,7 +1569,8 @@ index 25db578..7de949a 100644
 -			<language>cat</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>es(cat)</layout>
+-			<layout>es</layout>
+-			<layout_variant>cat</layout_variant>
 -			<longname>Catalan (Spain, with middle-dot L)</longname>
 -			<description>Catalan (Spain, with middle-dot L)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1473,6 +1588,18 @@ index 25db578..7de949a 100644
 -			<rank>99</rank>
 -		</engine>
 -		<engine>
+-			<name>xkb:se:dvorak:swe</name>
+-			<language>swe</language>
+-			<license>GPL</license>
+-			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>se</layout>
+-			<layout_variant>dvorak</layout_variant>
+-			<longname>Swedish (Dvorak)</longname>
+-			<description>Swedish (Dvorak)</description>
+-                        <icon>ibus-keyboard</icon>
+-			<rank>99</rank>
+-		</engine>
+-		<engine>
 -			<name>xkb:ch::ger</name>
 -			<language>ger</language>
 -			<license>GPL</license>
@@ -1488,7 +1615,8 @@ index 25db578..7de949a 100644
 -			<language>fra</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>ch(fr)</layout>
+-			<layout>ch</layout>
+-			<layout_variant>fr</layout_variant>
 -			<longname>French (Switzerland)</longname>
 -			<description>French (Switzerland)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1521,7 +1649,8 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>gb(extd)</layout>
+-			<layout>gb</layout>
+-			<layout_variant>extd</layout_variant>
 -			<longname>English (UK, extended WinKeys)</longname>
 -			<description>English (UK, extended WinKeys)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1532,7 +1661,8 @@ index 25db578..7de949a 100644
 -			<language>eng</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>gb(dvorak)</layout>
+-			<layout>gb</layout>
+-			<layout_variant>dvorak</layout_variant>
 -			<longname>English (UK, Dvorak)</longname>
 -			<description>English (UK, Dvorak)</description>
 -                        <icon>ibus-keyboard</icon>
@@ -1543,14 +1673,15 @@ index 25db578..7de949a 100644
 -			<language>kor</language>
 -			<license>GPL</license>
 -			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
--			<layout>kr(kr104)</layout>
+-			<layout>kr</layout>
+-			<layout_variant>kr104</layout_variant>
 -			<longname>Korean (101/104 key compatible)</longname>
 -			<description>Korean (101/104 key compatible)</description>
 -                        <icon>ibus-keyboard</icon>
 -			<rank>99</rank>
 -		</engine>
 -	</engines>
-+	<engines exec=\"${libexecdir}/ibus-engine-simple --xml\" />
++        <engines exec=\"${libexecdir}/ibus-engine-simple --xml\" />
  </component>
 diff --git a/ibus-1.0.pc.in b/ibus-1.0.pc.in
 index 9f593ab..66b902a 100644
@@ -1615,7 +1746,7 @@ index 58cac38..4b6f869 100644
  
  # make -C po update-gmo
 diff --git a/setup/main.py b/setup/main.py
-index 8a2391d..2a19c49 100644
+index f527da1..c02229b 100644
 --- a/setup/main.py
 +++ b/setup/main.py
 @@ -67,6 +67,13 @@ class Setup(object):
@@ -1688,14 +1819,14 @@ index 8a2391d..2a19c49 100644
          if prop.name not in ("active-engine", "engines"):
              return
 diff --git a/src/Makefile.am b/src/Makefile.am
-index df4ada3..e249ada 100644
+index df4ada3..f8499a8 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -194,6 +194,11 @@ typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
  CLEANFILES += $(dist_gir_DATA) $(typelibs_DATA)
  endif
  
-+if ENABLE_XKB
++if ENABLE_IBUS_XKB
 +ibus_sources += ibusxkbxml.c
 +ibus_headers += ibusxkbxml.h
 +endif
@@ -2646,7 +2777,7 @@ index 0000000..2b78c69
 +    */
 +}
 diff --git a/ui/gtk3/keybindingmanager.vala b/ui/gtk3/keybindingmanager.vala
-index 5ff0c65..bfe560c 100644
+index 12d731d..0f6b7c9 100644
 --- a/ui/gtk3/keybindingmanager.vala
 +++ b/ui/gtk3/keybindingmanager.vala
 @@ -41,15 +41,18 @@ public class KeybindingManager : GLib.Object {
@@ -2697,7 +2828,7 @@ index 5ff0c65..bfe560c 100644
          m_bindings.append(binding);
  
          return true;
-@@ -198,7 +202,7 @@ public class KeybindingManager : GLib.Object {
+@@ -199,7 +203,7 @@ public class KeybindingManager : GLib.Object {
                      if (event.key.keyval != binding.keysym ||
                          modifiers != binding.modifiers)
                          continue;
@@ -2707,7 +2838,7 @@ index 5ff0c65..bfe560c 100644
                  }
              }
 diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
-index 40079ec..8e6f756 100644
+index c159693..1aca443 100644
 --- a/ui/gtk3/panel.vala
 +++ b/ui/gtk3/panel.vala
 @@ -21,6 +21,20 @@
@@ -2731,10 +2862,10 @@ index 40079ec..8e6f756 100644
      private IBus.Bus m_bus;
      private IBus.Config m_config;
      private Gtk.StatusIcon m_status_icon;
-@@ -33,10 +47,17 @@ class Panel : IBus.PanelService {
-     private GLib.Pid m_setup_pid = 0;
+@@ -34,10 +48,17 @@ class Panel : IBus.PanelService {
      private Gtk.AboutDialog m_about_dialog;
      private Gtk.CssProvider m_css_provider;
+     private int m_switcher_delay_time = 400;
 +    private GkbdLayout m_gkbdlayout = null;
 +    private XKBLayout m_xkblayout = null;
 +    private string[] m_layouts = {};
@@ -2751,15 +2882,15 @@ index 40079ec..8e6f756 100644
  
      public Panel(IBus.Bus bus) {
          GLib.assert(bus.is_connected());
-@@ -59,7 +80,6 @@ class Panel : IBus.PanelService {
+@@ -60,7 +81,6 @@ class Panel : IBus.PanelService {
          m_candidate_panel.page_down.connect((w) => this.page_down());
  
          m_switcher = new Switcher();
 -        bind_switch_shortcut();
  
-         m_property_manager = new PropertyManager();
-         m_property_manager.property_activate.connect((k, s) => {
-@@ -71,64 +91,135 @@ class Panel : IBus.PanelService {
+         if (m_switcher_delay_time >= 0) {
+             m_switcher.set_popup_delay_time((uint) m_switcher_delay_time);
+@@ -76,64 +96,129 @@ class Panel : IBus.PanelService {
  
      ~Panel() {
          unbind_switch_shortcut();
@@ -2772,11 +2903,11 @@ index 40079ec..8e6f756 100644
 +            m_gkbdlayout.stop_listen();
 +            m_gkbdlayout = null;
 +        }
-+
-+        m_xkblayout = null;
-+    }
  
 -        var accelerator = ACCELERATOR_SWITCH_IME_FOREWARD;
++        m_xkblayout = null;
++    }
++
 +    private void keybinding_manager_bind(KeybindingManager keybinding_manager,
 +                                         string? accelerator,
 +                                         bool reverse) {
@@ -2850,10 +2981,7 @@ index 40079ec..8e6f756 100644
 +            GLib.Variant variant = m_config.get_value("general/hotkey",
 +                                                      "trigger_accel");
 +            if (variant != null) {
-+                ACCELERATOR_IME_HOTKEYS = {};
-+                for (int i = 0; i < variant.n_children(); i++) {
-+                    ACCELERATOR_IME_HOTKEYS += variant.get_child_value(i).dup_string();
-+                }
++                ACCELERATOR_IME_HOTKEYS = variant.dup_strv();
 +            }
 +        }
 +
@@ -2879,21 +3007,18 @@ index 40079ec..8e6f756 100644
 +
 +        ACCELERATOR_IME_HOTKEYS = {};
 +        ACCELERATOR_IME_HOTKEYS += ACCELERATOR_SWITCH_IME_BACKWARD;
- 
--        keybinding_manager.bind(m_switch_keysym,
--                m_switch_modifiers | Gdk.ModifierType.SHIFT_MASK,
--                (e) => handle_engine_switch(e, true));
++
 +        if (m_config != null) {
 +            GLib.Variant variant = m_config.get_value("general/hotkey",
 +                                                      "trigger_accel_backward");
 +            if (variant != null) {
-+                ACCELERATOR_IME_HOTKEYS = {};
-+                for (int i = 0; i < variant.n_children(); i++) {
-+                    ACCELERATOR_IME_HOTKEYS += variant.get_child_value(i).dup_string();
-+                }
++                ACCELERATOR_IME_HOTKEYS = variant.dup_strv();
 +            }
 +        }
-+
+ 
+-        keybinding_manager.bind(m_switch_keysym,
+-                m_switch_modifiers | Gdk.ModifierType.SHIFT_MASK,
+-                (e) => handle_engine_switch(e, true));
 +        foreach (var accelerator in ACCELERATOR_IME_HOTKEYS) {
 +            keybinding_manager_bind(keybinding_manager, accelerator, true);
 +        }
@@ -2905,18 +3030,18 @@ index 40079ec..8e6f756 100644
 -        if (m_switch_keysym == 0 && m_switch_modifiers == 0)
 -            return;
 +        unowned GLib.List<Keybinding> keybindings = m_keybindings;
-+
-+        while (keybindings != null) {
-+            Keybinding keybinding = keybindings.data;
  
 -        keybinding_manager.unbind(m_switch_keysym, m_switch_modifiers);
 -        keybinding_manager.unbind(m_switch_keysym,
 -                m_switch_modifiers | Gdk.ModifierType.SHIFT_MASK);
-+            keybinding_manager.unbind(keybinding.keysym,
-+                                      keybinding.modifiers);
++        while (keybindings != null) {
++            Keybinding keybinding = keybindings.data;
  
 -        m_switch_keysym = 0;
 -        m_switch_modifiers = 0;
++            keybinding_manager.unbind(keybinding.keysym,
++                                      keybinding.modifiers);
++
 +            // Need to get keybindings.next before GList.remove is called.
 +            keybindings = keybindings.next;
 +            m_keybindings.remove(keybinding);
@@ -2924,7 +3049,7 @@ index 40079ec..8e6f756 100644
      }
  
      private void set_custom_font() {
-@@ -196,12 +287,16 @@ class Panel : IBus.PanelService {
+@@ -220,13 +305,17 @@ class Panel : IBus.PanelService {
          }
  
          m_config = config;
@@ -2933,6 +3058,7 @@ index 40079ec..8e6f756 100644
              m_config.value_changed.connect(config_value_changed_cb);
              m_config.watch("general", "preload_engines");
              m_config.watch("general", "engines_order");
+             m_config.watch("general", "switcher_delay_time");
 +            m_config.watch("general/hotkey", "trigger_accel");
 +            m_config.watch("general/hotkey", "trigger_accel_backward");
              m_config.watch("panel", "custom_font");
@@ -2940,9 +3066,9 @@ index 40079ec..8e6f756 100644
 +            init_engines_order();
              update_engines(m_config.get_value("general", "preload_engines"),
                             m_config.get_value("general", "engines_order"));
-         } else {
-@@ -211,6 +306,192 @@ class Panel : IBus.PanelService {
-         set_custom_font();
+             set_switcher_delay_time(null);
+@@ -282,6 +371,194 @@ class Panel : IBus.PanelService {
+         }
      }
  
 +    private void gkbdlayout_changed_cb() {
@@ -3111,7 +3237,9 @@ index 40079ec..8e6f756 100644
 +        return false;
 +    }
 +
-+    private void set_layout(string layout) {
++    private void set_layout(IBus.EngineDesc engine) {
++        string layout = engine.get_layout();
++
 +        if (layout == "default" || layout == null) {
 +            return;
 +        }
@@ -3134,24 +3262,16 @@ index 40079ec..8e6f756 100644
      private void switch_engine(int i, bool force = false) {
          GLib.assert(i >= 0 && i < m_engines.length);
  
-@@ -225,15 +506,7 @@ class Panel : IBus.PanelService {
+@@ -296,7 +573,7 @@ class Panel : IBus.PanelService {
              return;
          }
          // set xkb layout
--        string cmdline = "setxkbmap %s".printf(engine.get_layout());
--        try {
--            if (!GLib.Process.spawn_command_line_sync(cmdline)) {
--                warning("Switch xkb layout to %s failed.",
--                    engine.get_layout());
--            }
--        } catch (GLib.SpawnError e) {
--            warning("Execute setxkbmap failed: %s", e.message);
--        }
-+        set_layout(engine.get_layout());
+-        exec_setxkbmap(engine);
++        set_layout(engine);
      }
  
      private void config_value_changed_cb(IBus.Config config,
-@@ -245,6 +518,13 @@ class Panel : IBus.PanelService {
+@@ -308,6 +585,13 @@ class Panel : IBus.PanelService {
              return;
          }
  
@@ -3165,9 +3285,9 @@ index 40079ec..8e6f756 100644
          if (section == "panel" && (name == "custom_font" ||
                                     name == "use_custom_font")) {
              set_custom_font();
-@@ -264,8 +544,7 @@ class Panel : IBus.PanelService {
+@@ -331,8 +615,7 @@ class Panel : IBus.PanelService {
                  event, primary_modifiers);
-         if (pressed) {
+         if (pressed && m_switcher_delay_time >= 0) {
              int i = revert ? m_engines.length - 1 : 1;
 -            i = m_switcher.run(m_switch_keysym, m_switch_modifiers, event,
 -                    m_engines, i);
@@ -3176,7 +3296,7 @@ index 40079ec..8e6f756 100644
                  debug("switch cancelled");
              } else {
 diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala
-index ab2040b..dff5c96 100644
+index c5286b1..8836cb2 100644
 --- a/ui/gtk3/switcher.vala
 +++ b/ui/gtk3/switcher.vala
 @@ -63,13 +63,26 @@ class Switcher : Gtk.Window {
@@ -3208,7 +3328,7 @@ index ab2040b..dff5c96 100644
      private Gdk.ModifierType m_primary_modifier;
      private GLib.MainLoop m_loop;
      private int m_result;
-@@ -105,19 +118,17 @@ class Switcher : Gtk.Window {
+@@ -109,19 +122,17 @@ class Switcher : Gtk.Window {
          grab_focus();
      }
  
@@ -3231,12 +3351,16 @@ index ab2040b..dff5c96 100644
  
          update_engines(engines);
          /* Let gtk recalculate the window size. */
-@@ -305,23 +316,25 @@ class Switcher : Gtk.Window {
+@@ -328,27 +339,29 @@ class Switcher : Gtk.Window {
      public override bool key_press_event(Gdk.EventKey e) {
          bool retval = true;
          Gdk.EventKey *pe = &e;
 +        uint modifiers = KeybindingManager.MODIFIER_FILTER & pe->state;
  
+         if (m_popup_delay_time > 0) {
+             restore_window_position("pressed");
+         }
+ 
 -        do {
 -            uint modifiers = KeybindingManager.MODIFIER_FILTER & pe->state;
 +        for (unowned GLib.List<Keybinding> keybindings = m_keybindings;
@@ -3739,5 +3863,5 @@ index 0000000..33e9d9d
 +    */
 +}
 -- 
-1.7.10.4
+1.8.0
 

diff --git a/ibus-771115-property-compatible.patch b/ibus-771115-property-compatible.patch
deleted file mode 100644
index e0e42c0..0000000
--- a/ibus-771115-property-compatible.patch
+++ /dev/null
@@ -1,163 +0,0 @@
---- ibus-1.4.0/src/ibusproperty.c.orig	2012-01-04 12:31:08.697335369 +0900
-+++ ibus-1.4.0/src/ibusproperty.c	2012-01-04 12:58:07.191725794 +0900
-@@ -218,6 +218,17 @@ ibus_property_class_init (IBusPropertyCl
- static void
- ibus_property_init (IBusProperty *prop)
- {
-+    prop->key = NULL;
-+    prop->type = 0;
-+    prop->label = NULL;
-+    prop->icon = NULL;
-+    prop->tooltip = NULL;
-+    prop->sensitive = FALSE;
-+    prop->visible = FALSE;
-+    prop->state = 0;
-+
-+    prop->sub_props = NULL;
-+
-     prop->priv = IBUS_PROPERTY_GET_PRIVATE (prop);
- 
-     ibus_property_set_label (prop, NULL);
-@@ -308,6 +319,27 @@ ibus_property_get_property (IBusProperty
- static void
- ibus_property_destroy (IBusProperty *prop)
- {
-+    g_free (prop->key);
-+    prop->key = NULL;
-+
-+    g_free (prop->icon);
-+    prop->icon = NULL;
-+
-+    if (prop->label) {
-+        g_object_unref (prop->label);
-+        prop->label = NULL;
-+    }
-+
-+    if (prop->tooltip) {
-+        g_object_unref (prop->tooltip);
-+        prop->tooltip = NULL;
-+    }
-+
-+    if (prop->sub_props) {
-+        g_object_unref (prop->sub_props);
-+        prop->sub_props = NULL;
-+    }
-+
-     g_free (prop->priv->key);
-     prop->priv->key = NULL;
- 
-@@ -494,6 +526,17 @@ ibus_property_set_label (IBusProperty *p
-     g_assert (IBUS_IS_PROPERTY (prop));
-     g_return_if_fail (label == NULL || IBUS_IS_TEXT (label));
- 
-+    if (prop->label) {
-+        g_object_unref (prop->label);
-+    }
-+
-+    if (label == NULL) {
-+        prop->label = ibus_text_new_from_static_string ("");
-+    }
-+    else {
-+        prop->label = g_object_ref_sink (label);
-+    }
-+
-     if (prop->priv->label) {
-         g_object_unref (prop->priv->label);
-     }
-@@ -512,6 +555,9 @@ ibus_property_set_icon (IBusProperty *pr
- {
-     g_assert (IBUS_IS_PROPERTY (prop));
- 
-+    g_free (prop->icon);
-+    prop->icon = g_strdup (icon != NULL ? icon : "");
-+
-     g_free (prop->priv->icon);
-     prop->priv->icon = g_strdup (icon != NULL ? icon : "");
- }
-@@ -525,6 +571,19 @@ ibus_property_set_tooltip (IBusProperty
- 
-     IBusPropertyPrivate *priv = prop->priv;
- 
-+    if (prop->tooltip) {
-+        g_object_unref (prop->tooltip);
-+    }
-+
-+    if (tooltip == NULL) {
-+        prop->tooltip = ibus_text_new_from_static_string ("");
-+        g_object_ref_sink (prop->tooltip);
-+    }
-+    else {
-+        prop->tooltip = tooltip;
-+        g_object_ref_sink (prop->tooltip);
-+    }
-+
-     if (priv->tooltip) {
-         g_object_unref (priv->tooltip);
-     }
-@@ -544,6 +603,7 @@ ibus_property_set_sensitive (IBusPropert
-                              gboolean      sensitive)
- {
-     g_assert (IBUS_IS_PROPERTY (prop));
-+    prop->sensitive = sensitive;
-     prop->priv->sensitive = sensitive;
- }
- 
-@@ -552,6 +612,7 @@ ibus_property_set_visible (IBusProperty
-                            gboolean      visible)
- {
-     g_assert (IBUS_IS_PROPERTY (prop));
-+    prop->visible = visible;
-     prop->priv->visible = visible;
- }
- 
-@@ -564,6 +625,7 @@ ibus_property_set_state (IBusProperty  *
-               state == PROP_STATE_CHECKED ||
-               state == PROP_STATE_INCONSISTENT);
- 
-+    prop->state = state;
-     prop->priv->state = state;
- }
- 
-@@ -576,6 +638,19 @@ ibus_property_set_sub_props (IBusPropert
- 
-     IBusPropertyPrivate *priv = prop->priv;
- 
-+    if (prop->sub_props) {
-+        g_object_unref (prop->sub_props);
-+    }
-+
-+    if (prop_list) {
-+        prop->sub_props = prop_list;
-+        g_object_ref_sink (prop_list);
-+    }
-+    else {
-+        prop->sub_props = ibus_prop_list_new ();
-+        g_object_ref_sink (prop->sub_props);
-+    }
-+
-     if (priv->sub_props) {
-         g_object_unref (priv->sub_props);
-     }
---- ibus-1.4.0/src/ibusproperty.h.orig	2012-01-04 12:30:52.189069565 +0900
-+++ ibus-1.4.0/src/ibusproperty.h	2012-01-04 12:34:38.101706419 +0900
-@@ -140,6 +140,20 @@ typedef struct _IBusPropListClass IBusPr
- struct _IBusProperty {
-     /*< private >*/
-     IBusSerializable parent;
-+
-+    /*< public >*/
-+    gchar    *key;
-+    gchar    *icon;
-+    IBusText *label;
-+    IBusText *tooltip;
-+
-+    gboolean sensitive;
-+    gboolean visible;
-+    guint type;
-+    guint state;
-+
-+    IBusPropList *sub_props;
-+
-     IBusPropertyPrivate *priv;
- 
-     gpointer pdummy[7];

diff --git a/ibus-810211-no-switch-by-no-trigger.patch b/ibus-810211-no-switch-by-no-trigger.patch
index 01f3df8..50ef12d 100644
--- a/ibus-810211-no-switch-by-no-trigger.patch
+++ b/ibus-810211-no-switch-by-no-trigger.patch
@@ -1,17 +1,17 @@
-From c93407a1056a3dc062f1efb79104f0ae32352b0a Mon Sep 17 00:00:00 2001
+From 092d20121fc5401810b60c1d01f331a80b4ed42c Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
 Date: Sat, 6 Oct 2012 17:54:27 +0900
 Subject: [PATCH] Fix not to switch engines by non-trigger keys.
 
 ---
- ui/gtk3/switcher.vala |    6 ++++++
+ ui/gtk3/switcher.vala | 6 ++++++
  1 file changed, 6 insertions(+)
 
 diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala
-index 2587117..ab2040b 100644
+index 494fab9..c5286b1 100644
 --- a/ui/gtk3/switcher.vala
 +++ b/ui/gtk3/switcher.vala
-@@ -123,6 +123,7 @@ class Switcher : Gtk.Window {
+@@ -127,6 +127,7 @@ class Switcher : Gtk.Window {
          /* Let gtk recalculate the window size. */
          resize(1, 1);
  
@@ -19,7 +19,7 @@ index 2587117..ab2040b 100644
          m_selected_engine = index;
          m_label.set_text(m_buttons[index].longname);
          m_buttons[index].grab_focus();
-@@ -338,6 +339,11 @@ class Switcher : Gtk.Window {
+@@ -365,6 +366,11 @@ class Switcher : Gtk.Window {
                      break;
                  default:
                      debug("0x%04x", pe->keyval);
@@ -32,5 +32,5 @@ index 2587117..ab2040b 100644
              }
          } while (false);
 -- 
-1.7.10.4
+1.8.0
 

diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 14dda9a..42f2e66 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,53 +1,267 @@
-From f0fa7254fb1326489daa88ffed6af6d48cad49d0 Mon Sep 17 00:00:00 2001
+From 15f3ccb38474c6bb206a2158d86171c93d6ec6a5 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 11 Oct 2012 16:04:38 +0900
-Subject: [PATCH] Fix typo in data/dconf/profile/ibus
+Date: Tue, 13 Nov 2012 12:05:07 +0900
+Subject: [PATCH] Update simple.xml to enable layout_variant tag.
 
-http://git.gnome.org/browse/gdm/commit/?id=aa25b559c6e907485cc9e
-I copied the typo by mitake. dconf_engine_source_new() supports
-"user-db" or "system-db".
-http://git.gnome.org/browse/dconf/tree/engine/dconf-engine-source.c#n75
+Review URL: https://codereview.appspot.com/6820129
 ---
- data/dconf/profile/ibus |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ engine/simple.xml.in.in | 112 ++++++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 93 insertions(+), 19 deletions(-)
 
-diff --git a/data/dconf/profile/ibus b/data/dconf/profile/ibus
-index 1d3fc5f..aa8fe5f 100644
---- a/data/dconf/profile/ibus
-+++ b/data/dconf/profile/ibus
-@@ -1,2 +1,2 @@
- user-db:user
--systemd-db:ibus
-+system-db:ibus
+diff --git a/engine/simple.xml.in.in b/engine/simple.xml.in.in
+index 25db578..d064ad6 100644
+--- a/engine/simple.xml.in.in
++++ b/engine/simple.xml.in.in
+@@ -24,7 +24,8 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>us(intl)</layout>
++			<layout>us</layout>
++			<layout_variant>intl</layout_variant>
+ 			<longname>English (US, international with dead keys)</longname>
+ 			<description>English (US, international with dead keys)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -35,7 +36,8 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>us(colemak)</layout>
++			<layout>us</layout>
++			<layout_variant>colemak</layout_variant>
+ 			<longname>English (Colemak)</longname>
+ 			<description>English (Colemak)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -46,7 +48,8 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>us(dvorak)</layout>
++			<layout>us</layout>
++			<layout_variant>dvorak</layout_variant>
+ 			<longname>English (Dvorak)</longname>
+ 			<description>English (Dvorak)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -57,20 +60,21 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>us(altgr-intl)</layout>
++			<layout>us</layout>
++			<layout_variant>altgr-intl</layout_variant>
+ 			<longname>English (international AltGr dead keys)</longname>
+ 			<description>English (international AltGr dead keys)</description>
+                         <icon>ibus-keyboard</icon>
+ 			<rank>99</rank>
+ 		</engine>
+ 		<engine>
+-			<name>xkb:us:altgr-intl:eng</name>
+-			<language>eng</language>
++			<name>xkb:ara::ara</name>
++			<language>ara</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>us(altgr-intl)</layout>
+-			<longname>English (international AltGr dead keys)</longname>
+-			<description>English (international AltGr dead keys)</description>
++			<layout>ara</layout>
++			<longname>Arabic</longname>
++			<description>Arabic</description>
+                         <icon>ibus-keyboard</icon>
+ 			<rank>99</rank>
+ 		</engine>
+@@ -119,6 +123,18 @@
+ 			<rank>99</rank>
+ 		</engine>
+ 		<engine>
++			<name>xkb:br:dvorak:por</name>
++			<language>por</language>
++			<license>GPL</license>
++			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
++			<layout>br</layout>
++			<layout_variant>dvorak</layout_variant>
++			<longname>Portuguese (Brazil, Dvorak)</longname>
++			<description>Portuguese (Brazil, Dvorak)</description>
++                        <icon>ibus-keyboard</icon>
++			<rank>99</rank>
++		</engine>
++		<engine>
+ 			<name>xkb:bg::bul</name>
+ 			<language>bul</language>
+ 			<license>GPL</license>
+@@ -134,7 +150,8 @@
+ 			<language>bul</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>bg(phonetic)</layout>
++			<layout>bg</layout>
++			<layout_variant>phonetic</layout_variant>
+ 			<longname>Bulgarian (traditional phonetic)</longname>
+ 			<description>Bulgarian (traditional phonetic)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -156,7 +173,8 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>ca(eng)</layout>
++			<layout>ca</layout>
++			<layout_variant>eng</layout_variant>
+ 			<longname>English (Canada)</longname>
+ 			<description>English (Canada)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -229,6 +247,18 @@
+ 			<rank>99</rank>
+ 		</engine>
+ 		<engine>
++			<name>xkb:fr:dvorak:fra</name>
++			<language>fra</language>
++			<license>GPL</license>
++			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
++			<layout>fr</layout>
++			<layout_variant>dvorak</layout_variant>
++			<longname>French (Dvorak)</longname>
++			<description>French (Dvorak)</description>
++                        <icon>ibus-keyboard</icon>
++			<rank>99</rank>
++		</engine>
++		<engine>
+ 			<name>xkb:de::ger</name>
+ 			<language>ger</language>
+ 			<license>GPL</license>
+@@ -240,11 +270,24 @@
+ 			<rank>99</rank>
+ 		</engine>
+ 		<engine>
++			<name>xkb:de:dvorak:ger</name>
++			<language>ger</language>
++			<license>GPL</license>
++			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
++			<layout>de</layout>
++			<layout_variant>dvorak</layout_variant>
++			<longname>German (Dvorak)</longname>
++			<description>German (Dvorak)</description>
++                        <icon>ibus-keyboard</icon>
++			<rank>99</rank>
++		</engine>
++		<engine>
+ 			<name>xkb:de:neo:ger</name>
+ 			<language>ger</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>de(neo)</layout>
++			<layout>de</layout>
++			<layout_variant>neo</layout_variant>
+ 			<longname>German (Neo 2)</longname>
+ 			<description>German (Neo 2)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -332,7 +375,8 @@
+ 			<language>lav</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>lv(apostrophe)</layout>
++			<layout>lv</layout>
++			<layout_variant>apostrophe</layout_variant>
+ 			<longname>Latvian (apostrophe variant)</longname>
+ 			<description>Latvian (apostrophe variant)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -350,6 +394,18 @@
+ 			<rank>99</rank>
+ 		</engine>
+ 		<engine>
++			<name>xkb:pl:dvorak:pol</name>
++			<language>pol</language>
++			<license>GPL</license>
++			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
++			<layout>pl</layout>
++			<layout_variant>dvorak</layout_variant>
++			<longname>Polish (Dvorak)</longname>
++			<description>Polish (Dvorak)</description>
++                        <icon>ibus-keyboard</icon>
++			<rank>99</rank>
++		</engine>
++		<engine>
+ 			<name>xkb:pt::por</name>
+ 			<language>por</language>
+ 			<license>GPL</license>
+@@ -387,7 +443,8 @@
+ 			<language>rus</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>ru(phonetic)</layout>
++			<layout>ru</layout>
++			<layout_variant>phonetic</layout_variant>
+ 			<longname>Russian (phonetic)</longname>
+ 			<description>Russian (phonetic)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -442,7 +499,8 @@
+ 			<language>cat</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>es(cat)</layout>
++			<layout>es</layout>
++			<layout_variant>cat</layout_variant>
+ 			<longname>Catalan (Spain, with middle-dot L)</longname>
+ 			<description>Catalan (Spain, with middle-dot L)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -460,6 +518,18 @@
+ 			<rank>99</rank>
+ 		</engine>
+ 		<engine>
++			<name>xkb:se:dvorak:swe</name>
++			<language>swe</language>
++			<license>GPL</license>
++			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
++			<layout>se</layout>
++			<layout_variant>dvorak</layout_variant>
++			<longname>Swedish (Dvorak)</longname>
++			<description>Swedish (Dvorak)</description>
++                        <icon>ibus-keyboard</icon>
++			<rank>99</rank>
++		</engine>
++		<engine>
+ 			<name>xkb:ch::ger</name>
+ 			<language>ger</language>
+ 			<license>GPL</license>
+@@ -475,7 +545,8 @@
+ 			<language>fra</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>ch(fr)</layout>
++			<layout>ch</layout>
++			<layout_variant>fr</layout_variant>
+ 			<longname>French (Switzerland)</longname>
+ 			<description>French (Switzerland)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -508,7 +579,8 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>gb(extd)</layout>
++			<layout>gb</layout>
++			<layout_variant>extd</layout_variant>
+ 			<longname>English (UK, extended WinKeys)</longname>
+ 			<description>English (UK, extended WinKeys)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -519,7 +591,8 @@
+ 			<language>eng</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>gb(dvorak)</layout>
++			<layout>gb</layout>
++			<layout_variant>dvorak</layout_variant>
+ 			<longname>English (UK, Dvorak)</longname>
+ 			<description>English (UK, Dvorak)</description>
+                         <icon>ibus-keyboard</icon>
+@@ -530,7 +603,8 @@
+ 			<language>kor</language>
+ 			<license>GPL</license>
+ 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
+-			<layout>kr(kr104)</layout>
++			<layout>kr</layout>
++			<layout_variant>kr104</layout_variant>
+ 			<longname>Korean (101/104 key compatible)</longname>
+ 			<description>Korean (101/104 key compatible)</description>
+                         <icon>ibus-keyboard</icon>
 -- 
-1.7.10.4
-
-From 065ad6c44a665526796dffe91ac7c2ebd83ecd71 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 11 Oct 2012 16:43:06 +0900
-Subject: [PATCH] Fix fallback 'C' locale in ibus-setup.
-
----
- setup/main.py |    6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/setup/main.py b/setup/main.py
-index 8a2391d..81e4301 100644
---- a/setup/main.py
-+++ b/setup/main.py
-@@ -548,7 +548,11 @@ class Setup(object):
-         Gtk.main()
- 
- if __name__ == "__main__":
--    locale.setlocale(locale.LC_ALL, '')
-+    try:
-+        locale.setlocale(locale.LC_ALL, '')
-+    except locale.Error:
-+        print >> sys.stderr, "IBUS-WARNING **: Using the fallback 'C' locale"
-+        locale.setlocale(locale.LC_ALL, 'C')
-     i18n_init()
-     setup = Setup()
-     setup.run()
--- 
-1.7.10.4
+1.8.0
 

diff --git a/ibus-xx-no-use.diff b/ibus-xx-no-use.diff
index 1a2ede8..6d4636c 100644
--- a/ibus-xx-no-use.diff
+++ b/ibus-xx-no-use.diff
@@ -1,106 +1,198 @@
-From 59cf8aea1a9d6f687f58671e07f19b827cc9ff4a Mon Sep 17 00:00:00 2001
+From 907edb10fd53e91f05bb4327df201345525f4d90 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 14 Sep 2012 20:04:11 +0900
+Date: Tue, 13 Nov 2012 22:38:19 +0900
 Subject: [PATCH] Disabled to show non-used GUI.
 
 ---
- setup/main.py  |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++------
- setup/setup.ui |   38 ++++++++++++++++++----------------
- 2 files changed, 77 insertions(+), 24 deletions(-)
+ setup/keyboardshortcut.py | 87 +++++++++++++++++++++++++----------------------
+ setup/main.py             | 23 +++++++------
+ setup/setup.ui            | 26 +++++++-------
+ 3 files changed, 72 insertions(+), 64 deletions(-)
 
+diff --git a/setup/keyboardshortcut.py b/setup/keyboardshortcut.py
+index 3861d2f..efbdeb7 100644
+--- a/setup/keyboardshortcut.py
++++ b/setup/keyboardshortcut.py
+@@ -185,15 +185,17 @@ class KeyboardShortcutSelection(Gtk.VBox):
+                 modifiers.append(name)
+         if keycode.startswith("_"):
+             keycode = keycode[1:]
+-        keys = modifiers + [keycode]
+-        shortcut = "+".join(keys)
++        shortcut = "".join(map(lambda m: '<' + m + '>', modifiers))
++        shortcut += keycode
+         return shortcut
+ 
+     def __set_shortcut_to_buttons(self, shortcut):
+-        keys = shortcut.split("+")
+-        mods = keys[:-1]
++        (keyval, state) = Gtk.accelerator_parse(shortcut)
++        if keyval == 0 and state == 0:
++            return
++        keys = shortcut.split('>')
+         for name, button, mask in self.__modifier_buttons:
+-            if name in mods:
++            if state & mask:
+                 button.set_active(True)
+             else:
+                 button.set_active(False)
+@@ -247,54 +249,59 @@ class KeyboardShortcutSelection(Gtk.VBox):
+         self.__update_add_and_apply_buttons()
+ 
+     def __keycode_button_clicked_cb(self, button):
+-        out = []
+         dlg = Gtk.MessageDialog(parent = self.get_toplevel(), buttons = Gtk.ButtonsType.CLOSE)
++        out = [dlg]
+         message = _("Please press a key (or a key combination).\nThe dialog will be closed when the key is released.")
+         dlg.set_markup(message)
+         dlg.set_title(_("Please press a key (or a key combination)"))
+-
+-        def __key_press_event(d, k, out):
+-            out.append(k.copy())
+-
+-        def __key_release_event(d, k, out):
+-            d.response(Gtk.ResponseType.OK)
+-
+-        dlg.connect("key-press-event", __key_press_event, out)
+-        dlg.connect("key-release-event", __key_release_event, None)
++        sw = Gtk.ScrolledWindow()
++
++        def __accel_edited_cb(c, path, keyval, state, keycode, out):
++            dlg = out[0]
++            out.append(keyval)
++            out.append(state)
++            out.append(keycode)
++            dlg.response(Gtk.ResponseType.OK)
++
++        model = Gtk.ListStore(GObject.TYPE_INT,
++                              GObject.TYPE_UINT,
++                              GObject.TYPE_UINT)
++        accel_view = Gtk.TreeView(model)
++        sw.add(accel_view)
++        column = Gtk.TreeViewColumn()
++        renderer = Gtk.CellRendererAccel(accel_mode=Gtk.CellRendererAccelMode.OTHER,
++                                         editable=True)
++        renderer.connect('accel-edited', __accel_edited_cb, out)
++        column.pack_start(renderer, True)
++        column.add_attribute(renderer, 'accel-mods', 0)
++        column.add_attribute(renderer, 'accel-key', 1)
++        column.add_attribute(renderer, 'keycode', 2)
++        accel_view.append_column(column)
++        it = model.append(None)
++        area = dlg.get_message_area()
++        area.pack_end(sw, True, True, 0)
++        sw.show_all()
+         id = dlg.run()
+         dlg.destroy()
+-        if id != Gtk.ResponseType.OK or not out:
++        if id != Gtk.ResponseType.OK or len(out) == 1:
+             return
+-        keyevent = out[len(out) - 1]
+-        state = keyevent.state & (Gdk.ModifierType.CONTROL_MASK | \
+-                                  Gdk.ModifierType.SHIFT_MASK   | \
+-                                  Gdk.ModifierType.MOD1_MASK    | \
+-                                  Gdk.ModifierType.META_MASK    | \
+-                                  Gdk.ModifierType.SUPER_MASK   | \
+-                                  Gdk.ModifierType.HYPER_MASK)
+-
+-
+-        if state == 0:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
+-        elif keyevent.keyval in (Gdk.KEY_Control_L, Gdk.KEY_Control_R) and state == Gdk.ModifierType.CONTROL_MASK:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
+-        elif keyevent.keyval in (Gdk.KEY_Shift_L, Gdk.KEY_Shift_R) and state == Gdk.ModifierType.SHIFT_MASK:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
+-        elif keyevent.keyval in (Gdk.KEY_Alt_L, Gdk.KEY_Alt_R) and state == Gdk.ModifierType.MOD1_MASK:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
+-        elif keyevent.keyval in (Gdk.KEY_Meta_L, Gdk.KEY_Meta_R) and state == Gdk.ModifierType.META_MASK:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
+-        elif keyevent.keyval in (Gdk.KEY_Super_L, Gdk.KEY_Super_R) and state == Gdk.ModifierType.SUPER_MASK:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
+-        elif keyevent.keyval in (Gdk.KEY_Hyper_L, Gdk.KEY_Hyper_R) and state == Gdk.ModifierType.HYPER_MASK:
+-            state = state | Gdk.ModifierType.RELEASE_MASK
++        keyval = out[1]
++        state = out[2]
++        keycode = out[3]
+ 
+         for name, button, mask in self.__modifier_buttons:
+             if state & mask:
+                 button.set_active(True)
+             else:
+                 button.set_active(False)
+-        self.__keycode_entry.set_text(Gdk.keyval_name(keyevent.keyval))
++
++        shortcut = Gtk.accelerator_name_with_keycode(None,
++                                                     keyval,
++                                                     keycode,
++                                                     state)
++        shortcut = shortcut.replace('<Primary>', '<Control>')
++        keys = shortcut.split('>')
++        self.__keycode_entry.set_text(keys[-1])
+ 
+     def __add_button_clicked_cb(self, button):
+         shortcut = self.__get_shortcut_from_buttons()
 diff --git a/setup/main.py b/setup/main.py
-index 37a8b0a..7b0b8d5 100644
+index 46209b6..1b98e17 100644
 --- a/setup/main.py
 +++ b/setup/main.py
-@@ -85,22 +85,31 @@ class Setup(object):
-         self.__init_ui()
+@@ -93,21 +93,23 @@ class Setup(object):
  
      def __init_hotkey(self):
-+        '''
          default_values = {
-             "trigger" : (N_("trigger"), ["Control+space"]),
-             "enable_unconditional" : (N_("enable"), []),
-             "disable_unconditional" : (N_("disable"), [])
-         }
-+        '''
-+        default_values = {
+-            "trigger" : (N_("trigger"), ["Control+space"]),
+-            "enable_unconditional" : (N_("enable"), []),
+-            "disable_unconditional" : (N_("disable"), [])
 +            'trigger_accel' : ('next_engine', ['<Control>space']),
 +            'trigger_accel_backward' : ('prev_engine', ['<Control><Shift>space']),
-+        }
+         }
  
          values = dict(self.__config.get_values("general/hotkey"))
  
--        for name, (label, shortcuts) in default_values.items():
-+        for name, (id, shortcuts) in default_values.items():
+         for name, (label, shortcuts) in default_values.items():
              shortcuts = values.get(name, shortcuts)
 -            button = self.__builder.get_object("button_%s" % name)
 -            entry = self.__builder.get_object("entry_%s" % name)
-+            button = self.__builder.get_object("button_%s" % id)
-+            entry = self.__builder.get_object("entry_%s" % id)
++            button = self.__builder.get_object("button_%s" % label)
++            entry = self.__builder.get_object("entry_%s" % label)
              entry.set_text("; ".join(shortcuts))
 -            entry.set_tooltip_text("\n".join(shortcuts))
--            button.connect("clicked", self.__shortcut_button_clicked_cb,
--                    label, "general/hotkey", name, entry)
 +            text = '\n'.join(shortcuts)
 +            text = "Use ';' separated values\n" + text
 +            entry.set_tooltip_text(text)
-+            button.connect("clicked", self.__shortcut_button_clicked_cb2,
-+                    name, "general/hotkey", id, entry)
+             button.connect("clicked", self.__shortcut_button_clicked_cb,
+-                    label, "general/hotkey", name, entry)
++                    name, "general/hotkey", label, entry)
 +            button.set_tooltip_text("Save the left entry string")
  
      def __init_panel(self):
          values = dict(self.__config.get_values("panel"))
-@@ -459,6 +468,48 @@ class Setup(object):
+@@ -449,7 +451,9 @@ class Setup(object):
+     def __shortcut_button_clicked_cb(self, button, name, section, _name, entry):
+         buttons = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                 Gtk.STOCK_OK, Gtk.ResponseType.OK)
+-        title = _("Select keyboard shortcut for %s") %  _(name)
++        title = _("Select keyboard shortcut for %s") % \
++                _("next engine") if name == 'next_engine' else \
++                _("previous engine")
+         dialog = keyboardshortcut.KeyboardShortcutSelectionDialog(buttons = buttons, title = title)
+         text = entry.get_text()
+         if text:
+@@ -462,12 +466,11 @@ class Setup(object):
+         dialog.destroy()
+         if id != Gtk.ResponseType.OK:
+             return
+-        self.__config.set_value(section, _name, GLib.Variant.new_strv(shortcuts))
++        self.__config.set_value(section, name, GLib.Variant.new_strv(shortcuts))
+         text = "; ".join(shortcuts)
          entry.set_text(text)
          entry.set_tooltip_text(text)
  
-+    def __shortcut_button_clicked_cb2(self, button, name, section, id, entry):
-+        text = entry.get_text()
-+        if text:
-+            text = text.replace(' ', '')
-+            shortcuts = text.split(';')
-+        else:
-+            shortcuts = []
-+        orig_list =['<Control>space']
-+        if name == 'trigger_accel_backward':
-+            orig_list =['<Control><Shift>space']
-+        variant = self.__config.get_value(section, name)
-+        if variant != None:
-+            orig_list = self.__variant_dup_strv(variant)
-+        orig_text = ';'.join(orig_list)
-+        if text == orig_text:
-+            return
-+        invalid_shortcut = None
-+        for shortcut in shortcuts:
-+            (key, mods) = Gtk.accelerator_parse(shortcut)
-+            if shortcut.find('<') >= 0:
-+                if mods <= 0:
-+                    invalid_shortcut = shortcut
-+                    break
-+                if not Gtk.accelerator_valid(key, mods):
-+                    invalid_shortcut = shortcut
-+                    break
-+            # Alt_R could be supported as the trigger key.
-+            else:
-+                if key <= 0:
-+                    invalid_shortcut = shortcut
-+                    break
-+        if invalid_shortcut != None:
-+            dlg = Gtk.MessageDialog(type = Gtk.MessageType.ERROR,
-+                    buttons = Gtk.ButtonsType.CLOSE,
-+                    message_format = "Invalid key %s" % invalid_shortcut)
-+            dlg.run()
-+            dlg.destroy()
-+            return
-+        self.__config.set_value(section, name, GLib.Variant.new_strv(shortcuts))
-+        text = '\n'.join(shortcuts)
-+        text = "Use ';' separated values\n" + text
-+        entry.set_tooltip_text(text)
- 
+-
      def __item_started_column_toggled_cb(self, cell, path_str, model):
  
+         # get toggled iter
 diff --git a/setup/setup.ui b/setup/setup.ui
-index 2026172..af99cae 100644
+index 2026172..fb4340d 100644
 --- a/setup/setup.ui
 +++ b/setup/setup.ui
 @@ -122,7 +122,6 @@
@@ -128,52 +220,23 @@ index 2026172..af99cae 100644
                                    </packing>
                                  </child>
                                  <child>
-@@ -183,7 +183,7 @@
-                                       <object class="GtkEntry" id="entry_next_engine">
-                                         <property name="visible">True</property>
-                                         <property name="can_focus">True</property>
--                                        <property name="editable">False</property>
-+                                        <!-- property name="editable">False</property -->
-                                       </object>
-                                       <packing>
-                                         <property name="expand">True</property>
-@@ -193,7 +193,9 @@
-                                     </child>
-                                     <child>
-                                       <object class="GtkButton" id="button_next_engine">
--                                        <property name="label" translatable="yes">...</property>
-+                                        <!-- property name="label" translatable="yes">...</property -->
-+                                        <property name="label">gtk-apply</property>
-+                                        <property name="use_stock">True</property>
-                                         <property name="use_action_appearance">False</property>
-                                         <property name="visible">True</property>
-                                         <property name="can_focus">True</property>
-@@ -223,9 +225,8 @@
+@@ -223,7 +223,6 @@
                                      <child>
                                        <object class="GtkEntry" id="entry_prev_engine">
                                          <property name="visible">True</property>
 -                                        <property name="sensitive">False</property>
                                          <property name="can_focus">True</property>
--                                        <property name="editable">False</property>
-+                                        <!-- property name="editable">False</property -->
+                                         <property name="editable">False</property>
                                        </object>
-                                       <packing>
-                                         <property name="expand">True</property>
-@@ -235,10 +236,11 @@
-                                     </child>
-                                     <child>
-                                       <object class="GtkButton" id="button_prev_engine">
--                                        <property name="label" translatable="yes">...</property>
-+                                        <!-- property name="label" translatable="yes">...</property -->
-+                                        <property name="label">gtk-apply</property>
-+                                        <property name="use_stock">True</property>
+@@ -238,7 +237,6 @@
+                                         <property name="label" translatable="yes">...</property>
                                          <property name="use_action_appearance">False</property>
                                          <property name="visible">True</property>
 -                                        <property name="sensitive">False</property>
                                          <property name="can_focus">True</property>
                                          <property name="receives_default">False</property>
                                          <property name="use_action_appearance">False</property>
-@@ -260,7 +262,7 @@
+@@ -260,7 +258,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkLabel" id="label7">
@@ -182,7 +245,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="tooltip_text" translatable="yes">The shortcut keys for turning input method on or off</property>
                                      <property name="xalign">0</property>
-@@ -273,7 +275,7 @@
+@@ -273,7 +271,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkLabel" id="label18">
@@ -191,7 +254,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="xalign">0</property>
                                      <property name="label" translatable="yes">Enable:</property>
-@@ -287,7 +289,7 @@
+@@ -287,7 +285,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkHBox" id="hbox2">
@@ -200,7 +263,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="spacing">6</property>
                                      <child>
-@@ -328,7 +330,7 @@
+@@ -328,7 +326,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkLabel" id="label19">
@@ -209,7 +272,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="xalign">0</property>
                                      <property name="label" translatable="yes">Disable:</property>
-@@ -342,7 +344,7 @@
+@@ -342,7 +340,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkHBox" id="hbox3">
@@ -218,7 +281,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="spacing">6</property>
                                      <child>
-@@ -452,7 +454,7 @@
+@@ -452,7 +450,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkLabel" id="label10">
@@ -227,7 +290,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="tooltip_text" translatable="yes">Set the behavior of ibus how to show or hide language bar</property>
                                      <property name="xalign">0</property>
-@@ -481,7 +483,7 @@
+@@ -481,7 +479,7 @@
                                  </child>
                                  <child>
                                    <object class="GtkComboBox" id="combobox_panel_show">
@@ -236,7 +299,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">False</property>
                                      <property name="model">model_panel_show_mode</property>
                                      <child>
-@@ -521,7 +523,7 @@
+@@ -521,7 +519,7 @@
                                    <object class="GtkCheckButton" id="checkbutton_show_icon_on_systray">
                                      <property name="label" translatable="yes">Show icon on system tray</property>
                                      <property name="use_action_appearance">False</property>
@@ -245,7 +308,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">True</property>
                                      <property name="receives_default">False</property>
                                      <property name="tooltip_text" translatable="yes">Show icon on system tray</property>
-@@ -540,7 +542,7 @@
+@@ -540,7 +538,7 @@
                                    <object class="GtkCheckButton" id="checkbutton_show_im_name">
                                      <property name="label" translatable="yes">Show input method name on language bar</property>
                                      <property name="use_action_appearance">False</property>
@@ -254,7 +317,7 @@ index 2026172..af99cae 100644
                                      <property name="can_focus">True</property>
                                      <property name="receives_default">False</property>
                                      <property name="tooltip_text" translatable="yes">Show input method's name on language bar when check the checkbox</property>
-@@ -1001,7 +1003,7 @@ You may use up/down buttons to change it.&lt;/i&gt;&lt;/small&gt;</property>
+@@ -1001,7 +999,7 @@ You may use up/down buttons to change it.&lt;/i&gt;&lt;/small&gt;</property>
                      </child>
                      <child>
                        <object class="GtkFrame" id="frame5">
@@ -264,5 +327,5 @@ index 2026172..af99cae 100644
                          <property name="label_xalign">0</property>
                          <property name="shadow_type">none</property>
 -- 
-1.7.10.4
+1.8.0
 

diff --git a/ibus-xx-setup-frequent-lang.patch b/ibus-xx-setup-frequent-lang.patch
index ceab748..5129239 100644
--- a/ibus-xx-setup-frequent-lang.patch
+++ b/ibus-xx-setup-frequent-lang.patch
@@ -1,20 +1,20 @@
-From 9fe1a6cf5d10d82c93bf2280a29ebf96e9813087 Mon Sep 17 00:00:00 2001
+From cdfad7a4f7026c6db0e570b4d9b2c14d1c7ca2b2 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 14 Sep 2012 18:50:10 +0900
+Date: Wed, 14 Nov 2012 07:07:17 +0900
 Subject: [PATCH] Enable ibus-setup to show the frequently used languages
  only in IME list.
 
 ---
- data/ibus.schemas.in    |  168 +++++++++++++++++++++++++++++++++++++++++++++++
- setup/enginecombobox.py |  155 ++++++++++++++++++++++++++++++++++++-------
- setup/main.py           |    1 +
+ data/ibus.schemas.in    | 168 ++++++++++++++++++++++++++++++++++++++++++++++++
+ setup/enginecombobox.py | 155 +++++++++++++++++++++++++++++++++++++-------
+ setup/main.py           |   1 +
  3 files changed, 300 insertions(+), 24 deletions(-)
 
 diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
-index 4086f67..445d423 100644
+index 64f6f33..23739af 100644
 --- a/data/ibus.schemas.in
 +++ b/data/ibus.schemas.in
-@@ -332,6 +332,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn
+@@ -348,6 +348,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn
        </locale>
      </schema>
      <schema>
@@ -411,7 +411,7 @@ index f80b164..578098c 100644
          return self.get_property("active-engine")
  
 diff --git a/setup/main.py b/setup/main.py
-index 000a03b..ff1c0c6 100644
+index 5da6340..d6fa3ef 100644
 --- a/setup/main.py
 +++ b/setup/main.py
 @@ -224,6 +224,7 @@ class Setup(object):
@@ -423,5 +423,5 @@ index 000a03b..ff1c0c6 100644
  
          engine_names = values.get("preload_engines", [])
 -- 
-1.7.10.4
+1.8.0
 

diff --git a/ibus.spec b/ibus.spec
index 08e9d15..f6e28ca 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -7,19 +7,15 @@
 %define with_pygobject2 1
 %define with_pygobject3 1
 
-%ifarch ppc ppc64 s390 s390x
+%if (0%{?fedora} > 17 || 0%{?rhel} > 6)
+#ifarch ppc ppc64 s390 s390x
 %define with_gjs 0
 %else
 %define with_gjs 1
 %endif
 
-%if (0%{?fedora} > 16 || 0%{?rhel} > 6)
 %define ibus_gjs_version 3.4.1.20120815
 %define ibus_gjs_build_failure 1
-%else
-%define ibus_gjs_version 3.2.1.20111230
-%define ibus_gjs_build_failure 0
-%endif
 
 %define ibus_api_version 1.0
 
@@ -29,15 +25,17 @@
 %define gnome_icon_theme_legacy_version 2.91.6
 
 Name:       ibus
-Version:    1.4.99.20121006
-Release:    2%{?dist}
+Version:    1.4.99.20121109
+Release:    1%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
 URL:        http://code.google.com/p/ibus/
 Source0:    http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
 Source1:    xinput-ibus
+%if %with_gjs
 Source2:    http://fujiwara.fedorapeople.org/ibus/gnome-shell/ibus-gjs-%{ibus_gjs_version}.tar.gz
+%endif
 Patch0:     ibus-HEAD.patch
 Patch1:     ibus-810211-no-switch-by-no-trigger.patch
 Patch2:     ibus-541492-xkb.patch
@@ -49,7 +47,6 @@ Patch4:     ibus-xx-setup-frequent-lang.patch
 # https://bugzilla.gnome.org/show_bug.cgi?id=658420
 Patch92:    ibus-xx-g-s-disable-preedit.patch
 %endif
-Patch93:    ibus-771115-property-compatible.patch
 # Hide no nused properties in f17.
 Patch94:    ibus-xx-no-use.diff
 
@@ -104,7 +101,9 @@ Requires:   pyxdg
 Requires:   iso-codes
 Requires:   dbus-python >= %{dbus_python_version}
 Requires:   dbus-x11
+%if 0%{?fedora} <= 17
 Requires:   im-chooser
+%endif
 %if %with_dconf
 Requires:   dconf
 %else
@@ -114,7 +113,9 @@ Requires:   notify-python
 Requires:   libgnomekbd
 Requires:   librsvg2
 Requires:   gnome-icon-theme-legacy >= %{gnome_icon_theme_legacy_version}
+%if 0%{?fedora} <= 17
 Requires:   gnome-icon-theme-symbolic
+%endif
 
 Requires(post):  desktop-file-utils
 Requires(postun):  desktop-file-utils
@@ -163,7 +164,9 @@ Summary:    IBus im module for gtk3
 Group:      System Environment/Libraries
 Requires:   %{name} = %{version}-%{release}
 Requires:   %{name}-libs = %{version}-%{release}
+%if 0%{?fedora} <= 17
 Requires:   imsettings-gnome
+%endif
 Requires(post): glib2 >= %{glib_ver}
 
 %description gtk3
@@ -225,10 +228,6 @@ rm -f data/dconf/00-upstream-settings
 %patch3 -p1 -b .preload-sys
 %patch4 -p1 -b .setup-frequent-lang
 
-%if 0%{?fedora} <= 16
-%patch93 -p1 -b .compat
-%endif
-
 %patch94 -p1 -b .no-used
 
 %build
@@ -254,9 +253,12 @@ autoreconf -f -i
     --enable-gtk-doc \
     --with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*' \
     --enable-surrounding-text \
+%if (0%{?fedora} > 17 || 0%{?rhel} > 6)
+    --with-panel-icon-keyboard=legacy \
+%endif
 %if %with_xkbfile
     --with-xkb-preload-layouts=$XKB_PRELOAD_LAYOUTS \
-    --enable-xkb \
+    --with-xkb-command=ibus-xkb \
     --enable-libgnomekbd \
 %endif
 %if %with_dconf
@@ -272,7 +274,7 @@ autoreconf -f -i
 make -C ui/gtk3 maintainer-clean-generic
 %endif
 # make -C po update-gmo
-make USE_SYMBOL_ICON=TRUE %{?_smp_mflags}
+make %{?_smp_mflags}
 
 %if %with_gjs
 d=`basename %SOURCE2 .tar.gz`
@@ -475,6 +477,16 @@ dconf update
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Thu Oct 11 2012 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.99.20121109-1
+- Bumped to 1.4.99.20121109
+- Removed im-chooser, imsettings-gnome, gnome-icon-theme-symbolic
+  dependencies in f18 because ibus gnome integration is done.
+  Use ibus-keyboard instead of input-keyboard-symbolic.
+- Disabled ibus-gjs build because of ibus gnome integration.
+
+* Thu Oct 11 2012 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.99.20121006-2
+- Updated ibus-HEAD.patch to fix typo in data/dconf/profile/ibus
+
 * Thu Oct 11 2012 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.99.20121006-2
 - Updated ibus-HEAD.patch to fix typo in data/dconf/profile/ibus
 

diff --git a/sources b/sources
index fdf0fcd..65c440b 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-28b26c84f021a0c15023d6326d4ad58e  ibus-1.4.99.20121006.tar.gz
+be482479357210283e91a47f43a0a0fe  ibus-1.4.99.20121109.tar.gz
 2d2ad58e3e41429dbd883ba7e501c9b2  ibus-gjs-3.2.1.20111230.tar.gz
 8acf4ac4d1a7dfb9a0af9e755a8e7dba  ibus-gjs-3.4.1.20120815.tar.gz

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-31  2:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31  2:05 [rpms/ibus] autotool: Bumped to 1.4.99.20121109 Takao Fujiwara

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