[ibus] Fixed ibus-setup on C locale

Takao Fujiwara fujiwara at fedoraproject.org
Tue Feb 7 11:42:56 UTC 2012


commit 7bcb691d2732572c3cee283eab5268d3e74c4fe5
Author: Takao Fujiwara <tfujiwar at redhat.com>
Date:   Tue Feb 7 20:42:14 2012 +0900

    Fixed ibus-setup on C locale
    
    - Fixed to show no registered engines from g-c-c.
    - Enabled Alt_R keybinding on ko locales for ibus gtk only.

 ibus-541492-xkb.patch             |  128 ++++++++++++++++++++++++++++++++----
 ibus-xx-setup-frequent-lang.patch |   24 ++++----
 ibus.spec                         |   20 ++----
 sources                           |    1 -
 4 files changed, 132 insertions(+), 41 deletions(-)
---
diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch
index 8d49641..dae0afa 100644
--- a/ibus-541492-xkb.patch
+++ b/ibus-541492-xkb.patch
@@ -1,6 +1,6 @@
-From 2aea99b5872c741c413e995a50f9ac0842f3af96 Mon Sep 17 00:00:00 2001
+From 629d0a5383b3d42d7cad980bc5efe01867a01359 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 3 Feb 2012 12:12:29 +0900
+Date: Tue, 7 Feb 2012 20:13:59 +0900
 Subject: [PATCH] Add ibus-xkb and libgnomekbd.
 
 ---
@@ -15,7 +15,8 @@ Subject: [PATCH] Add ibus-xkb and libgnomekbd.
  engine/xkblib.c                    |  327 ++++++++++++++++++++++
  engine/xkblib.h                    |   41 +++
  ibus-1.0.pc.in                     |    4 +
- setup/main.py                      |   29 ++-
+ setup/enginecombobox.py            |    6 +-
+ setup/main.py                      |   31 ++-
  src/Makefile.am                    |    5 +
  src/ibus.h                         |    1 +
  src/ibusxkbxml.c                   |  454 ++++++++++++++++++++++++++++++
@@ -24,9 +25,9 @@ Subject: [PATCH] Add ibus-xkb and libgnomekbd.
  ui/gtk3/Makefile.am                |   47 ++++
  ui/gtk3/gkbdlayout.vala.false      |   63 +++++
  ui/gtk3/gkbdlayout.vala.true       |  111 ++++++++
- ui/gtk3/panel.vala                 |  211 ++++++++++++++-
+ ui/gtk3/panel.vala                 |  274 +++++++++++++++++--
  ui/gtk3/xkblayout.vala             |  466 +++++++++++++++++++++++++++++++
- 22 files changed, 2321 insertions(+), 547 deletions(-)
+ 23 files changed, 2381 insertions(+), 558 deletions(-)
  create mode 100644 engine/ibus-xkb-main.c
  create mode 100644 engine/xkblib.c
  create mode 100644 engine/xkblib.h
@@ -1464,11 +1465,28 @@ index 9f593ab..66b902a 100644
  
  Name: IBus
  Description: IBus Library
+diff --git a/setup/enginecombobox.py b/setup/enginecombobox.py
+index 8d1424b..0ac7368 100644
+--- a/setup/enginecombobox.py
++++ b/setup/enginecombobox.py
+@@ -75,7 +75,11 @@ class EngineComboBox(Gtk.ComboBox):
+ 
+         keys = langs.keys()
+         keys.sort(locale.strcoll)
+-        current_lang = IBus.get_language_name(locale.getlocale()[0])
++        loc = locale.getlocale()[0]
++        # None on C locale
++        if loc == None:
++            loc = 'en_US'
++        current_lang = IBus.get_language_name(loc)
+         # move current language to the first place
+         if current_lang in keys:
+             keys.remove(current_lang)
 diff --git a/setup/main.py b/setup/main.py
-index 7cd3e37..47a34e3 100644
+index 7cd3e37..bbc5422 100644
 --- a/setup/main.py
 +++ b/setup/main.py
-@@ -182,7 +182,20 @@ class Setup(object):
+@@ -182,12 +182,25 @@ class Setup(object):
                  self.__checkbutton_use_global_engine_toggled_cb)
  
          # init engine page
@@ -1490,6 +1508,12 @@ index 7cd3e37..47a34e3 100644
          self.__combobox = self.__builder.get_object("combobox_engines")
          self.__combobox.set_engines(self.__engines)
  
+         tmp_dict = {}
+-        for e in self.__engines:
++        for e in self.__bus.list_engines():
+             tmp_dict[e.get_name()] = e
+         engine_names = values.get("preload_engines", [])
+         engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
 @@ -254,7 +267,7 @@ class Setup(object):
              args = setup.split()
              args.insert(1, path.basename(args[0]))
@@ -2491,10 +2515,10 @@ index 0000000..adacd81
 +    */
 +}
 diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
-index e851b24..5847fd0 100644
+index e851b24..7c5b4ed 100644
 --- a/ui/gtk3/panel.vala
 +++ b/ui/gtk3/panel.vala
-@@ -40,6 +40,13 @@ class Panel : IBus.PanelService {
+@@ -40,8 +40,16 @@ class Panel : IBus.PanelService {
      private PropertyManager m_property_manager;
      private GLib.Pid m_setup_pid = 0;
      private Gtk.AboutDialog m_about_dialog;
@@ -2507,11 +2531,36 @@ index e851b24..5847fd0 100644
 +    private GLib.Timer m_changed_layout_timer;
      private const string ACCELERATOR_SWITCH_IME_FOREWARD = "<Control>space";
      private const string ACCELERATOR_SWITCH_IME_BACKWARD = "<Control><Shift>space";
++    private string[] ACCELERATOR_IME_HOTKEYS = {};
+ 
+     public Panel(IBus.Bus bus) {
+         GLib.assert(bus.is_connected());
+@@ -63,13 +71,6 @@ class Panel : IBus.PanelService {
+ 
+         m_switcher = new Switcher();
+ 
+-        var keybinding_manager = KeybindingManager.get_instance();
+-        keybinding_manager.bind(ACCELERATOR_SWITCH_IME_FOREWARD,
+-                (e) => handle_engine_switch(e, false));
+-
+-        keybinding_manager.bind(ACCELERATOR_SWITCH_IME_BACKWARD,
+-                (e) => handle_engine_switch(e, true));
+-
+         m_property_manager = new PropertyManager();
+         m_property_manager.property_activate.connect((k, s) => {
+             property_activate(k, s);
+@@ -80,8 +81,66 @@ class Panel : IBus.PanelService {
  
-@@ -82,6 +89,14 @@ class Panel : IBus.PanelService {
+     ~Panel() {
          var keybinding_manager = KeybindingManager.get_instance();
-         keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_FOREWARD);
-         keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_BACKWARD);
+-        keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_FOREWARD);
+-        keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_BACKWARD);
++        foreach (string keybinding in ACCELERATOR_IME_HOTKEYS) {
++            keybinding_manager.unbind(keybinding);
++            if (keybinding == ACCELERATOR_SWITCH_IME_FOREWARD) {
++                keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_BACKWARD);
++            }
++        }
 +
 +        if (HAVE_IBUS_GKBD && m_gkbdlayout != null) {
 +            m_gkbdlayout.changed.disconnect(gkbdlayout_changed_cb);
@@ -2520,18 +2569,67 @@ index e851b24..5847fd0 100644
 +        }
 +
 +        m_xkblayout = null;
++    }
++
++    // ToDo: Customize the input method with ibus-setup
++    private void set_keybinding() {
++        string locale = GLib.Intl.setlocale(GLib.LocaleCategory.ALL,
++                                            null);
++        if (locale == null) {
++            locale = "C";
++        }
++
++        ACCELERATOR_IME_HOTKEYS += ACCELERATOR_SWITCH_IME_FOREWARD;
++
++        if (m_config != null) {
++            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();
++                }
++            }
++        }
++
++        if (ACCELERATOR_IME_HOTKEYS.length == 1 &&
++            ACCELERATOR_IME_HOTKEYS[0] == ACCELERATOR_SWITCH_IME_FOREWARD) {
++            // FIXME: When us keyboard is used, Zenkaku_Hankaku does not work.
++            /*
++            if (locale[0:2] == "ja") {
++                ACCELERATOR_IME_HOTKEYS += "Zenkaku_Hankaku";
++            }
++            */
++            if (locale[0:2] == "ko") {
++                ACCELERATOR_IME_HOTKEYS += "Hangul";
++                ACCELERATOR_IME_HOTKEYS += "Alt_R";
++            }
++        }
++
++        var keybinding_manager = KeybindingManager.get_instance();
++        foreach (string keybinding in ACCELERATOR_IME_HOTKEYS) {
++            keybinding_manager.bind(keybinding,
++                (e) => handle_engine_switch(e, false));
++            if (keybinding == ACCELERATOR_SWITCH_IME_FOREWARD) {
++                keybinding_manager.bind(ACCELERATOR_SWITCH_IME_BACKWARD,
++                    (e) => handle_engine_switch(e, true));
++            }
++        }
      }
  
      public void set_config(IBus.Config config) {
-@@ -93,6 +108,7 @@ class Panel : IBus.PanelService {
+@@ -91,8 +150,10 @@ class Panel : IBus.PanelService {
+         }
+ 
          m_config = config;
++        set_keybinding();
          if (m_config != null) {
              m_config.value_changed.connect(config_value_changed_cb);
 +            init_engines_order();
              update_engines(m_config.get_value("general", "preload_engines"),
                             m_config.get_value("general", "engines_order"));
          } else {
-@@ -100,6 +116,191 @@ class Panel : IBus.PanelService {
+@@ -100,6 +161,191 @@ class Panel : IBus.PanelService {
          }
      }
  
@@ -2723,7 +2821,7 @@ index e851b24..5847fd0 100644
      private void switch_engine(int i, bool force = false) {
          GLib.assert(i >= 0 && i < m_engines.length);
  
-@@ -119,15 +320,7 @@ class Panel : IBus.PanelService {
+@@ -119,15 +365,7 @@ class Panel : IBus.PanelService {
              return;
          }
          // set xkb layout
diff --git a/ibus-xx-setup-frequent-lang.patch b/ibus-xx-setup-frequent-lang.patch
index c904faf..4a6adbc 100644
--- a/ibus-xx-setup-frequent-lang.patch
+++ b/ibus-xx-setup-frequent-lang.patch
@@ -1,6 +1,6 @@
-From 6e9cdc7d5b10cb043e8709670ea5ad487ab3d937 Mon Sep 17 00:00:00 2001
+From 723721bd15eb80da9f735ac4feba4f25306ba965 Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1 at gmail.com>
-Date: Fri, 3 Feb 2012 19:20:27 +0900
+Date: Tue, 7 Feb 2012 20:15:18 +0900
 Subject: [PATCH] Enable ibus-setup to show the frequently used languages only
  in IME list.
 
@@ -190,7 +190,7 @@ index 34de9b4..bf50645 100644
        <applyto>/desktop/ibus/panel/custom_font</applyto>
        <owner>ibus</owner>
 diff --git a/setup/enginecombobox.py b/setup/enginecombobox.py
-index 8d1424b..9fbe476 100644
+index 0ac7368..9af2651 100644
 --- a/setup/enginecombobox.py
 +++ b/setup/enginecombobox.py
 @@ -45,6 +45,9 @@ class EngineComboBox(Gtk.ComboBox):
@@ -267,8 +267,8 @@ index 8d1424b..9fbe476 100644
 +    def __model_append_langs(self, model, langs, visible):
          keys = langs.keys()
          keys.sort(locale.strcoll)
-         current_lang = IBus.get_language_name(locale.getlocale()[0])
-@@ -86,29 +119,86 @@ class EngineComboBox(Gtk.ComboBox):
+         loc = locale.getlocale()[0]
+@@ -90,29 +123,86 @@ class EngineComboBox(Gtk.ComboBox):
              keys.remove(IBus.get_language_name("Other"))
              keys += [IBus.get_language_name("Other")]
          for l in keys:
@@ -310,8 +310,7 @@ index 8d1424b..9fbe476 100644
 +        self.__model_append_langs(self.__model, lang, True)
 +        iter1 = self.__model.append(None)
 +        self.__model.set(iter1, 0, -1)
- 
--        self.set_model(self.__model)
++
 +        self.__all_model = Gtk.TreeStore(object)
 +        iter1 = self.__all_model.append(None)
 +        self.__all_model.set(iter1, 0, 0)
@@ -321,7 +320,8 @@ index 8d1424b..9fbe476 100644
 +        self.__model_append_langs(self.__all_model, sub_lang, False)
 +
 +        self.__toggle_sub_lang()
-+
+ 
+-        self.set_model(self.__model)
 +    def __toggle_sub_lang(self):
 +        self.set_model(None)
 +        if self.__show_sub_lang:
@@ -363,7 +363,7 @@ index 8d1424b..9fbe476 100644
          else:
              renderer.set_property("visible", True)
              renderer.set_property("sensitive", True)
-@@ -121,7 +211,8 @@ class EngineComboBox(Gtk.ComboBox):
+@@ -125,7 +215,8 @@ class EngineComboBox(Gtk.ComboBox):
              renderer.set_property("pixbuf", pixbuf)
  
      def __name_cell_data_cb(self, celllayout, renderer, model, iter, data):
@@ -373,7 +373,7 @@ index 8d1424b..9fbe476 100644
  
          if isinstance (engine, str) or isinstance (engine, unicode):
              renderer.set_property("sensitive", False)
-@@ -129,8 +220,15 @@ class EngineComboBox(Gtk.ComboBox):
+@@ -133,8 +224,15 @@ class EngineComboBox(Gtk.ComboBox):
              renderer.set_property("weight", Pango.Weight.NORMAL)
          elif isinstance(engine, int):
              renderer.set_property("sensitive", True)
@@ -391,7 +391,7 @@ index 8d1424b..9fbe476 100644
          else:
              renderer.set_property("sensitive", True)
              renderer.set_property("text", engine.get_longname())
-@@ -146,10 +244,18 @@ class EngineComboBox(Gtk.ComboBox):
+@@ -150,10 +248,18 @@ class EngineComboBox(Gtk.ComboBox):
              if i == 0 or i == -1:
                  return None
              iter = self.get_active_iter()
@@ -412,7 +412,7 @@ index 8d1424b..9fbe476 100644
          return self.get_property("active-engine")
  
 diff --git a/setup/main.py b/setup/main.py
-index 47a34e3..16bfeea 100644
+index bbc5422..9456e01 100644
 --- a/setup/main.py
 +++ b/setup/main.py
 @@ -197,6 +197,7 @@ class Setup(object):
diff --git a/ibus.spec b/ibus.spec
index 659cf40..2cb9a72 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -23,7 +23,7 @@
 
 Name:       ibus
 Version:    1.4.99.20120203
-Release:    1%{?dist}
+Release:    2%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
@@ -33,9 +33,6 @@ Source0:    http://fujiwara.fedorapeople.org/ibus/gnome-shell/%{name}-%{version}
 Source1:    xinput-ibus
 %if %have_gjsfile
 Source2:    http://fujiwara.fedorapeople.org/ibus/gnome-shell/ibus-gjs-%{ibus_gjs_version}.tar.gz
-# Workaround for glib2 bug:
-# https://bugzilla.gnome.org/show_bug.cgi?id=669253
-Source3:    ibus-gsettings-db
 %endif
 Patch0:     ibus-HEAD.patch
 Patch1:     ibus-541492-xkb.patch
@@ -252,14 +249,6 @@ automake -a -c -f
     --enable-python-library \
     --enable-introspection
 
-# Workaround for glib2 bug:
-# https://bugzilla.gnome.org/show_bug.cgi?id=669253
-cd data/dconf
-make org.freedesktop.ibus.gschema.valid
-mkdir db
-cp %SOURCE3 db/ibus
-cd ../..
-
 # make -C po update-gmo
 make %{?_smp_mflags} \
   PKG_CONFIG_PATH=..:/usr/lib64/pkgconfig:/usr/lib/pkgconfig
@@ -457,7 +446,12 @@ fi
 %{_datadir}/gtk-doc/html/*
 
 %changelog
-* Fri Feb 03 2021 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.99.20120203-1
+* Tue Feb 07 2012 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.99.20120203-2
+- Fixed ibus-setup on C locale
+- Fixed to show no registered engines from g-c-c.
+- Enabled Alt_R keybinding on ko locales for ibus gtk only.
+
+* Fri Feb 03 2012 Takao Fujiwara <tfujiwar at redhat.com> - 1.4.99.20120203-1
 - Updated to 1.4.99.20120203
 - Removed ibus-xx-bridge-hotkey.patch
 - Updated ibus-541492-xkb.patch to use libgnomekbd.
diff --git a/sources b/sources
index 609f6e5..db62827 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,3 @@
 675136bba0b04c922cca44eecd0bc421  ibus-1.4.99.20120203.tar.gz
 8c713e47d403482cdd8b851dda3d0713  ibus-gjs-3.3.3.20120203.tar.gz
 2d2ad58e3e41429dbd883ba7e501c9b2  ibus-gjs-3.2.1.20111230.tar.gz
-dbdf603f6897df8b894960249cf21909  ibus-gsettings-db


More information about the scm-commits mailing list