diff --git a/.gitignore b/.gitignore index b7b95c0..ff05faf 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ ibus-1.3.6.tar.gz /ibus-1.4.99.20120317.tar.gz /ibus-1.4.99.20120428.tar.gz /ibus-1.4.99.20120712.tar.gz +/ibus-1.4.99.20120822.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 @@ -44,3 +45,4 @@ ibus-1.3.6.tar.gz /ibus-gjs-3.3.92.20120327.tar.gz /ibus-gjs-3.4.1.20120428.tar.gz /ibus-gjs-3.4.1.20120518.tar.gz +/ibus-gjs-3.4.1.20120815.tar.gz diff --git a/ibus-530711-preload-sys.patch b/ibus-530711-preload-sys.patch index 05ae8e7..d78d8be 100644 --- a/ibus-530711-preload-sys.patch +++ b/ibus-530711-preload-sys.patch @@ -1,6 +1,6 @@ -From 9be5aced5397e3558870e4aa1a446e1aacc1730c Mon Sep 17 00:00:00 2001 +From e035e26100e9495ab83a6c3739448c3b5349321c Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 17 Jul 2012 17:43:03 +0900 +Date: Wed, 15 Aug 2012 18:24:59 +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, @@ -25,7 +25,7 @@ IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value 5 files changed, 246 insertions(+), 7 deletions(-) diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in -index 3591687..0d127d5 100644 +index 07169ae..4086f67 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in @@ -2,6 +2,30 @@ @@ -207,10 +207,10 @@ index 8121d62..2026172 100644 diff --git a/src/ibustypes.h b/src/ibustypes.h -index d916265..422eb84 100644 +index 737b3e2..8ce5a16 100644 --- a/src/ibustypes.h +++ b/src/ibustypes.h -@@ -198,6 +198,16 @@ typedef enum { +@@ -204,6 +204,16 @@ typedef enum { } IBusError; /** @@ -228,19 +228,19 @@ index d916265..422eb84 100644 * @x: x coordinate. * @y: y coordinate. diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala -index 2ecd48b..24acd4c 100644 +index 06d1e44..3464ba8 100644 --- a/ui/gtk3/panel.vala +++ b/ui/gtk3/panel.vala -@@ -279,6 +279,8 @@ class Panel : IBus.PanelService { +@@ -298,6 +298,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("panel", "custom_font"); - m_config.watch("panel", "use_custom_font"); -@@ -338,7 +340,136 @@ class Panel : IBus.PanelService { + m_config.watch("general/hotkey", "trigger_accel"); + m_config.watch("general/hotkey", "trigger_accel_backward"); +@@ -359,7 +361,136 @@ class Panel : IBus.PanelService { init_gkbd(); } @@ -377,7 +377,7 @@ index 2ecd48b..24acd4c 100644 } private void update_xkb_engines() { -@@ -499,6 +630,11 @@ class Panel : IBus.PanelService { +@@ -520,6 +651,11 @@ class Panel : IBus.PanelService { string section, string name, Variant variant) { diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch index cd570ed..6acf566 100644 --- a/ibus-541492-xkb.patch +++ b/ibus-541492-xkb.patch @@ -1,12 +1,12 @@ -From 184f68d12049e8554fe7e44d1ca1b53f0f391f07 Mon Sep 17 00:00:00 2001 +From 8023a9fcfe7d15a3233f56bfafe182c6555ef70e Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 17 Jul 2012 17:42:49 +0900 +Date: Wed, 15 Aug 2012 18:24:41 +0900 Subject: [PATCH] Add ibus-xkb and libgnomekbd. --- client/x11/gdk-private.c | 3 +- configure.ac | 60 +++++ - data/ibus.schemas.in | 102 ++++++++ + data/ibus.schemas.in | 94 +++++++ engine/Makefile.am | 6 + engine/ibus-xkb/Makefile.am | 64 +++++ engine/ibus-xkb/ibus-xkb-main.c | 111 ++++++++ @@ -26,10 +26,11 @@ Subject: [PATCH] Add ibus-xkb and libgnomekbd. ui/gtk3/Xkl-1.0.metadata | 3 + ui/gtk3/gkbdlayout.vala.false | 63 +++++ ui/gtk3/gkbdlayout.vala.true | 111 ++++++++ - ui/gtk3/panel.vala | 356 ++++++++++++++++++++++---- - ui/gtk3/switcher.vala | 47 ++-- + ui/gtk3/keybindingmanager.vala | 14 +- + ui/gtk3/panel.vala | 364 +++++++++++++++++++++++---- + ui/gtk3/switcher.vala | 49 ++-- ui/gtk3/xkblayout.vala | 466 ++++++++++++++++++++++++++++++++++ - 25 files changed, 2518 insertions(+), 608 deletions(-) + 26 files changed, 2539 insertions(+), 603 deletions(-) create mode 100644 engine/ibus-xkb/Makefile.am create mode 100644 engine/ibus-xkb/ibus-xkb-main.c create mode 100644 engine/ibus-xkb/xkblib.c @@ -57,7 +58,7 @@ index 009a5b0..20689c3 100644 #endif diff --git a/configure.ac b/configure.ac -index 8498efe..2204715 100644 +index cc7d0e0..df0d4a7 100644 --- a/configure.ac +++ b/configure.ac @@ -252,6 +252,63 @@ else @@ -124,7 +125,7 @@ index 8498efe..2204715 100644 # GObject introspection GOBJECT_INTROSPECTION_CHECK([0.6.8]) -@@ -514,6 +571,7 @@ src/ibusversion.h +@@ -517,6 +574,7 @@ src/ibusversion.h src/tests/Makefile bus/Makefile engine/Makefile @@ -132,7 +133,7 @@ index 8498efe..2204715 100644 engine/simple.xml.in util/Makefile util/IMdkit/Makefile -@@ -574,5 +632,7 @@ Build options: +@@ -577,5 +635,7 @@ Build options: Panel icon "$IBUS_ICON_KEYBOARD" Enable surrounding-text $enable_surrounding_text Run test cases $enable_tests @@ -141,7 +142,7 @@ index 8498efe..2204715 100644 ]) diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in -index 53ba05c..3591687 100644 +index 53ba05c..07169ae 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in @@ -26,6 +26,52 @@ @@ -197,7 +198,7 @@ index 53ba05c..3591687 100644 /schemas/desktop/ibus/general/hotkey/trigger /desktop/ibus/general/hotkey/trigger ibus -@@ -34,6 +80,62 @@ +@@ -34,6 +80,54 @@ [Control+space,Zenkaku_Hankaku,Alt+Kanji,Alt+grave,Hangul,Alt+Release+Alt_R] Trigger shortcut keys @@ -217,23 +218,15 @@ index 53ba05c..3591687 100644 + + + -+ /schemas/desktop/ibus/general/hotkey/trigger_shift -+ /desktop/ibus/general/hotkey/trigger_shift ++ /schemas/desktop/ibus/general/hotkey/trigger_accel_backward ++ /desktop/ibus/general/hotkey/trigger_accel_backward + ibus + list + string -+ [] ++ [<Control><Shift>space] + -+ This is used for gnome-shell to work shift + modifiers -+ This is used for gnome-shell to work shift + modifiers -+ Currently gnome-shell assigns the shift reverse by -+ dconf key and the shift reverse works with modifiers. -+ But ibus supports multiple trigger keys; -+ <Control>space (with modifiers) -+ Zenkaku_hankaku (without modifiers) -+ I copy the modifier trigger keys here to set -+ the shift reverse at the moment. -+ ++ Trigger reverse shortcut keys for gtk_accelerator_parse ++ The reverse shortcut keys for turning input method on or off + + + @@ -845,7 +838,7 @@ index 0000000..36597c3 +G_END_DECLS +#endif diff --git a/engine/main.vala b/engine/main.vala -index e1fd129..377fa2f 100644 +index acfa737..afadca0 100644 --- a/engine/main.vala +++ b/engine/main.vala @@ -21,6 +21,85 @@ @@ -2584,29 +2577,93 @@ index 0000000..adacd81 + } + */ +} +diff --git a/ui/gtk3/keybindingmanager.vala b/ui/gtk3/keybindingmanager.vala +index 2e1be4a..14b3fd3 100644 +--- a/ui/gtk3/keybindingmanager.vala ++++ b/ui/gtk3/keybindingmanager.vala +@@ -54,15 +54,18 @@ public class KeybindingManager : GLib.Object { + private class Keybinding { + public Keybinding(uint keysym, + Gdk.ModifierType modifiers, +- KeybindingHandlerFunc handler) { ++ KeybindingHandlerFunc handler, ++ bool reverse) { + this.keysym = keysym; + this.modifiers = modifiers; + this.handler = handler; ++ this.reverse = reverse; + } + + public uint keysym { get; set; } + public Gdk.ModifierType modifiers { get; set; } + public unowned KeybindingHandlerFunc handler { get; set; } ++ public bool reverse { get; set; } + } + + /** +@@ -70,7 +73,7 @@ public class KeybindingManager : GLib.Object { + * + * @param event passing on gdk event + */ +- public delegate void KeybindingHandlerFunc(Gdk.Event event); ++ public delegate void KeybindingHandlerFunc(Gdk.Event event, bool reverse); + + + private KeybindingManager() { +@@ -86,7 +89,8 @@ public class KeybindingManager : GLib.Object { + */ + public bool bind(uint keysym, + Gdk.ModifierType modifiers, +- KeybindingHandlerFunc handler) { ++ KeybindingHandlerFunc handler, ++ bool reverse) { + unowned X.Display display = Gdk.x11_get_default_xdisplay(); + + int keycode = display.keysym_to_keycode(keysym); +@@ -97,7 +101,7 @@ public class KeybindingManager : GLib.Object { + grab_keycode (Gdk.Display.get_default(), keysym, modifiers); + + // store binding +- Keybinding binding = new Keybinding(keysym, modifiers, handler); ++ Keybinding binding = new Keybinding(keysym, modifiers, handler, reverse); + m_bindings.append(binding); + + return true; +@@ -211,7 +215,7 @@ public class KeybindingManager : GLib.Object { + if (event.key.keyval != binding.keysym || + modifiers != binding.modifiers) + continue; +- binding.handler(event); ++ binding.handler(event, binding.reverse); + return; + } + } diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala -index 25d705d..2ecd48b 100644 +index 25d705d..06d1e44 100644 --- a/ui/gtk3/panel.vala +++ b/ui/gtk3/panel.vala -@@ -29,6 +29,17 @@ public extern const string IBUS_VERSION; +@@ -29,6 +29,20 @@ public extern const string IBUS_VERSION; public extern const string BINDIR; class Panel : IBus.PanelService { + private class Keybinding { + public Keybinding(uint keysym, -+ Gdk.ModifierType modifiers) { ++ Gdk.ModifierType modifiers, ++ bool reverse) { + this.keysym = keysym; + this.modifiers = modifiers; ++ this.reverse = reverse; + } + + public uint keysym { get; set; } + public Gdk.ModifierType modifiers { get; set; } ++ public bool reverse { get; set; } + } + private IBus.Bus m_bus; private IBus.Config m_config; private Gtk.StatusIcon m_status_icon; -@@ -41,10 +52,16 @@ class Panel : IBus.PanelService { +@@ -41,10 +55,17 @@ class Panel : IBus.PanelService { private GLib.Pid m_setup_pid = 0; private Gtk.AboutDialog m_about_dialog; private Gtk.CssProvider m_css_provider; @@ -2618,6 +2675,7 @@ index 25d705d..2ecd48b 100644 + private bool m_changed_xkb_option = false; + private GLib.Timer m_changed_layout_timer; private const string ACCELERATOR_SWITCH_IME_FOREWARD = "space"; ++ private const string ACCELERATOR_SWITCH_IME_BACKWARD = "space"; - private uint m_switch_keysym = 0; - private Gdk.ModifierType m_switch_modifiers = 0; @@ -2625,7 +2683,7 @@ index 25d705d..2ecd48b 100644 public Panel(IBus.Bus bus) { GLib.assert(bus.is_connected()); -@@ -67,7 +84,6 @@ class Panel : IBus.PanelService { +@@ -67,7 +88,6 @@ class Panel : IBus.PanelService { m_candidate_panel.page_down.connect((w) => this.page_down()); m_switcher = new Switcher(); @@ -2633,11 +2691,14 @@ index 25d705d..2ecd48b 100644 m_property_manager = new PropertyManager(); m_property_manager.property_activate.connect((k, s) => { -@@ -79,64 +95,119 @@ class Panel : IBus.PanelService { +@@ -79,64 +99,134 @@ class Panel : IBus.PanelService { ~Panel() { unbind_switch_shortcut(); -+ +- } + +- private void bind_switch_shortcut() { +- var keybinding_manager = KeybindingManager.get_instance(); + if (HAVE_IBUS_GKBD && m_gkbdlayout != null) { + m_gkbdlayout.changed.disconnect(gkbdlayout_changed_cb); + m_gkbdlayout.stop_listen(); @@ -2645,10 +2706,69 @@ index 25d705d..2ecd48b 100644 + } + + m_xkblayout = null; - } ++ } +- var accelerator = ACCELERATOR_SWITCH_IME_FOREWARD; ++ private void keybinding_manager_bind(KeybindingManager keybinding_manager, ++ string? accelerator, ++ bool reverse) { ++ uint switch_keysym = 0; ++ Gdk.ModifierType switch_modifiers = 0; + Gtk.accelerator_parse(accelerator, +- out m_switch_keysym, out m_switch_modifiers); ++ out switch_keysym, out switch_modifiers); + +- // Map virtual modifiers to (i.e.Mod2, Mod3, ...) ++ // Map virtual modifiers to (i.e. Mod2, Mod3, ...) + const Gdk.ModifierType VIRTUAL_MODIFIERS = ( + Gdk.ModifierType.SUPER_MASK | + Gdk.ModifierType.HYPER_MASK | + Gdk.ModifierType.META_MASK); +- if ((m_switch_modifiers & VIRTUAL_MODIFIERS) != 0) { ++ if ((switch_modifiers & VIRTUAL_MODIFIERS) != 0) { + // workaround a bug in gdk vapi vala > 0.18 + // https://bugzilla.gnome.org/show_bug.cgi?id=677559 + #if VALA_0_18 + Gdk.Keymap.get_default().map_virtual_modifiers( +- ref m_switch_modifiers); ++ ref switch_modifiers); + #else +- if ((m_switch_modifiers & Gdk.ModifierType.SUPER_MASK) != 0) +- m_switch_modifiers |= Gdk.ModifierType.MOD4_MASK; +- if ((m_switch_modifiers & Gdk.ModifierType.HYPER_MASK) != 0) +- m_switch_modifiers |= Gdk.ModifierType.MOD4_MASK; ++ if ((switch_modifiers & Gdk.ModifierType.SUPER_MASK) != 0) ++ switch_modifiers |= Gdk.ModifierType.MOD4_MASK; ++ if ((switch_modifiers & Gdk.ModifierType.HYPER_MASK) != 0) ++ switch_modifiers |= Gdk.ModifierType.MOD4_MASK; + #endif +- m_switch_modifiers &= ~VIRTUAL_MODIFIERS; ++ switch_modifiers &= ~VIRTUAL_MODIFIERS; + } + +- if (m_switch_keysym == 0 && m_switch_modifiers == 0) { ++ if (switch_keysym == 0 && switch_modifiers == 0) { + warning("Parse accelerator '%s' failed!", accelerator); + return; + } + +- keybinding_manager.bind(m_switch_keysym, m_switch_modifiers, +- (e) => handle_engine_switch(e, false)); ++ Keybinding keybinding = new Keybinding(switch_keysym, ++ switch_modifiers, ++ reverse); ++ m_keybindings.append(keybinding); + +- // accelerator already has Shift mask +- if ((m_switch_modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) +- return; ++ keybinding_manager.bind(switch_keysym, switch_modifiers, ++ (e, _reverse) => handle_engine_switch(e, _reverse), ++ reverse); ++ } ++ + // ToDo: Customize the input method with ibus-setup - private void bind_switch_shortcut() { ++ private void bind_switch_shortcut() { + string locale = GLib.Intl.setlocale(GLib.LocaleCategory.ALL, + null); + if (locale == null) { @@ -2683,86 +2803,31 @@ index 25d705d..2ecd48b 100644 + } + } + - var keybinding_manager = KeybindingManager.get_instance(); - -- var accelerator = ACCELERATOR_SWITCH_IME_FOREWARD; -- Gtk.accelerator_parse(accelerator, -- out m_switch_keysym, out m_switch_modifiers); -- -- // Map virtual modifiers to (i.e.Mod2, Mod3, ...) -- const Gdk.ModifierType VIRTUAL_MODIFIERS = ( -- Gdk.ModifierType.SUPER_MASK | -- Gdk.ModifierType.HYPER_MASK | -- Gdk.ModifierType.META_MASK); -- if ((m_switch_modifiers & VIRTUAL_MODIFIERS) != 0) { -- // workaround a bug in gdk vapi vala > 0.18 -- // https://bugzilla.gnome.org/show_bug.cgi?id=677559 ++ var keybinding_manager = KeybindingManager.get_instance(); ++ + foreach (var accelerator in ACCELERATOR_IME_HOTKEYS) { -+ uint switch_keysym = 0; -+ Gdk.ModifierType switch_modifiers = 0; -+ Gtk.accelerator_parse(accelerator, -+ out switch_keysym, out switch_modifiers); -+ -+ // Map virtual modifiers to (i.e. Mod2, Mod3, ...) -+ const Gdk.ModifierType VIRTUAL_MODIFIERS = ( -+ Gdk.ModifierType.SUPER_MASK | -+ Gdk.ModifierType.HYPER_MASK | -+ Gdk.ModifierType.META_MASK); -+ if ((switch_modifiers & VIRTUAL_MODIFIERS) != 0) { -+ // workaround a bug in gdk vapi vala > 0.18 -+ // https://bugzilla.gnome.org/show_bug.cgi?id=677559 - #if VALA_0_18 -- Gdk.Keymap.get_default().map_virtual_modifiers( -- ref m_switch_modifiers); -+ Gdk.Keymap.get_default().map_virtual_modifiers( -+ ref switch_modifiers); - #else -- if ((m_switch_modifiers & Gdk.ModifierType.SUPER_MASK) != 0) -- m_switch_modifiers |= Gdk.ModifierType.MOD4_MASK; -- if ((m_switch_modifiers & Gdk.ModifierType.HYPER_MASK) != 0) -- m_switch_modifiers |= Gdk.ModifierType.MOD4_MASK; -+ if ((switch_modifiers & Gdk.ModifierType.SUPER_MASK) != 0) -+ switch_modifiers |= Gdk.ModifierType.MOD4_MASK; -+ if ((switch_modifiers & Gdk.ModifierType.HYPER_MASK) != 0) -+ switch_modifiers |= Gdk.ModifierType.MOD4_MASK; - #endif -- m_switch_modifiers &= ~VIRTUAL_MODIFIERS; -- } -+ switch_modifiers &= ~VIRTUAL_MODIFIERS; -+ } - -- if (m_switch_keysym == 0 && m_switch_modifiers == 0) { -- warning("Parse accelerator '%s' failed!", accelerator); -- return; -- } -+ if (switch_keysym == 0 && switch_modifiers == 0) { -+ warning("Parse accelerator '%s' failed!", accelerator); -+ continue; -+ } - -- keybinding_manager.bind(m_switch_keysym, m_switch_modifiers, -- (e) => handle_engine_switch(e, false)); -+ Keybinding keybinding = new Keybinding(switch_keysym, -+ switch_modifiers); -+ m_keybindings.append(keybinding); - -- // accelerator already has Shift mask -- if ((m_switch_modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) -- return; -+ keybinding_manager.bind(switch_keysym, switch_modifiers, -+ (e) => handle_engine_switch(e, false)); ++ keybinding_manager_bind(keybinding_manager, accelerator, false); ++ } ++ ++ 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)); -+ // accelerator already has Shift mask -+ if ((switch_modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { -+ continue; ++ 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(); ++ } + } ++ } + -+ keybinding_manager.bind(switch_keysym, -+ 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); + } } @@ -2785,14 +2850,12 @@ index 25d705d..2ecd48b 100644 - m_switch_modifiers = 0; + keybinding_manager.unbind(keybinding.keysym, + keybinding.modifiers); -+ keybinding_manager.unbind(keybinding.keysym, -+ keybinding.modifiers | Gdk.ModifierType.SHIFT_MASK); + m_keybindings.remove(keybinding); + } } private void set_custom_font() { -@@ -204,12 +275,14 @@ class Panel : IBus.PanelService { +@@ -204,12 +294,16 @@ class Panel : IBus.PanelService { } m_config = config; @@ -2801,13 +2864,15 @@ index 25d705d..2ecd48b 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/hotkey", "trigger_accel"); ++ m_config.watch("general/hotkey", "trigger_accel_backward"); m_config.watch("panel", "custom_font"); m_config.watch("panel", "use_custom_font"); + init_engines_order(); update_engines(m_config.get_value("general", "preload_engines"), m_config.get_value("general", "engines_order")); } else { -@@ -219,6 +292,192 @@ class Panel : IBus.PanelService { +@@ -219,6 +313,192 @@ class Panel : IBus.PanelService { set_custom_font(); } @@ -3000,7 +3065,7 @@ index 25d705d..2ecd48b 100644 private void switch_engine(int i, bool force = false) { GLib.assert(i >= 0 && i < m_engines.length); -@@ -233,15 +492,7 @@ class Panel : IBus.PanelService { +@@ -233,15 +513,7 @@ class Panel : IBus.PanelService { return; } // set xkb layout @@ -3017,7 +3082,21 @@ index 25d705d..2ecd48b 100644 } private void config_value_changed_cb(IBus.Config config, -@@ -272,8 +523,7 @@ class Panel : IBus.PanelService { +@@ -253,6 +525,13 @@ class Panel : IBus.PanelService { + return; + } + ++ if (section == "general/hotkey" && ++ name.length >= 13 && name[0:13] == "trigger_accel") { ++ unbind_switch_shortcut(); ++ bind_switch_shortcut(); ++ return; ++ } ++ + if (section == "panel" && (name == "custom_font" || + name == "use_custom_font")) { + set_custom_font(); +@@ -272,8 +551,7 @@ class Panel : IBus.PanelService { event, primary_modifiers); if (pressed) { int i = revert ? m_engines.length - 1 : 1; @@ -3028,22 +3107,25 @@ index 25d705d..2ecd48b 100644 debug("switch cancelled"); } else { diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala -index ea56c07..f209e7f 100644 +index ea56c07..6035471 100644 --- a/ui/gtk3/switcher.vala +++ b/ui/gtk3/switcher.vala -@@ -71,13 +71,23 @@ class Switcher : Gtk.Window { +@@ -71,13 +71,26 @@ class Switcher : Gtk.Window { public string longname { get; set; } } + private class Keybinding { + public Keybinding(uint keysym, -+ Gdk.ModifierType modifiers) { ++ Gdk.ModifierType modifiers, ++ bool reverse) { + this.keysym = keysym; + this.modifiers = modifiers; ++ this.reverse = reverse; + } + + public uint keysym { get; set; } + public Gdk.ModifierType modifiers { get; set; } ++ public bool reverse { get; set; } + } + private Gtk.Box m_box; @@ -3057,7 +3139,7 @@ index ea56c07..f209e7f 100644 private Gdk.ModifierType m_primary_modifier; private GLib.MainLoop m_loop; private int m_result; -@@ -113,19 +123,17 @@ class Switcher : Gtk.Window { +@@ -113,19 +126,17 @@ class Switcher : Gtk.Window { grab_focus(); } @@ -3080,7 +3162,7 @@ index ea56c07..f209e7f 100644 update_engines(engines); m_result = 0; -@@ -310,23 +318,26 @@ class Switcher : Gtk.Window { +@@ -310,23 +321,25 @@ class Switcher : Gtk.Window { public override bool key_press_event(Gdk.EventKey e) { bool retval = true; Gdk.EventKey *pe = &e; @@ -3088,29 +3170,28 @@ index ea56c07..f209e7f 100644 - do { - uint modifiers = KeybindingManager.MODIFIER_FILTER & pe->state; -- -- if ((modifiers != m_modifiers) && -- (modifiers != (m_modifiers | Gdk.ModifierType.SHIFT_MASK))) { -- break; -- } + for (unowned GLib.List keybindings = m_keybindings; + keybindings != null; + keybindings = keybindings.next) { + Keybinding keybinding = keybindings.data; +- if ((modifiers != m_modifiers) && +- (modifiers != (m_modifiers | Gdk.ModifierType.SHIFT_MASK))) { +- break; +- } +- - if (pe->keyval == m_keyval) { - if (modifiers == m_modifiers) -+ if (pe->keyval == keybinding.keysym) { -+ if (modifiers == (uint) keybinding.modifiers) { ++ if (pe->keyval == keybinding.keysym && ++ modifiers == (uint) keybinding.modifiers) { ++ if (!keybinding.reverse) { next_engine(); - else // modififers == m_modifiers | SHIFT_MASK -+ return true; -+ } else if (modifiers == -+ ((uint) keybinding.modifiers | Gdk.ModifierType.SHIFT_MASK)) { ++ } else { previous_engine(); - break; -+ return true; + } ++ return true; } + } diff --git a/ibus-810211-no-switch-by-no-trigger.patch b/ibus-810211-no-switch-by-no-trigger.patch new file mode 100644 index 0000000..dc6ff16 --- /dev/null +++ b/ibus-810211-no-switch-by-no-trigger.patch @@ -0,0 +1,36 @@ +From fcfb99cfe6d83974c43bd41a1544d7a16460240f Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Tue, 17 Jul 2012 14:35:17 +0900 +Subject: [PATCH] Fix not to switch engines by non-trigger keys. + +--- + ui/gtk3/switcher.vala | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala +index b543a8f..ea56c07 100644 +--- a/ui/gtk3/switcher.vala ++++ b/ui/gtk3/switcher.vala +@@ -128,6 +128,7 @@ class Switcher : Gtk.Window { + state & KeybindingManager.MODIFIER_FILTER); + + update_engines(engines); ++ m_result = 0; + m_selected_engine = index; + m_label.set_text(m_buttons[index].longname); + m_buttons[index].grab_focus(); +@@ -343,6 +344,11 @@ class Switcher : Gtk.Window { + break; + default: + debug("0x%04x", pe->keyval); ++ if (m_loop != null) { ++ m_loop.quit(); ++ m_loop = null; ++ } ++ retval = false; + break; + } + } while (false); +-- +1.7.10.4 + diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index ff4a8eb..8b13789 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1,575 +1 @@ -From f453bf83f502d8b1e2b6f07cf669c14cbcfe008e Mon Sep 17 00:00:00 2001 -From: Peng Huang -Date: Thu, 12 Jul 2012 16:41:30 -0400 -Subject: [PATCH] IBusBus: honor new connect-async prop in the socket monitor - callback - -I think we should make use of the async connection here if the -property is set. - -But we also need a new flag for ongoing async connection attempts -because the socket monitor callback may be called several times before -the connection is established. - -BUG=http://code.google.com/p/ibus/issues/detail?id=1482 -TEST= - -Review URL: https://codereview.appspot.com/6346090 ---- - src/ibusbus.c | 149 +++++++++++++++++++++++++++++++++++---------------------- - 1 file changed, 93 insertions(+), 56 deletions(-) - -diff --git a/src/ibusbus.c b/src/ibusbus.c -index fc3c11b..9118020 100644 ---- a/src/ibusbus.c -+++ b/src/ibusbus.c -@@ -60,6 +60,8 @@ struct _IBusBusPrivate { - IBusConfig *config; - gchar *unique_name; - gboolean connect_async; -+ gchar *bus_address; -+ GCancellable *cancellable; - }; - - static guint bus_signals[LAST_SIGNAL] = { 0 }; -@@ -103,6 +105,8 @@ static void ibus_bus_get_property (IBusBus *bus, - GValue *value, - GParamSpec *pspec); - -+static void ibus_bus_close_connection (IBusBus *bus); -+ - G_DEFINE_TYPE (IBusBus, ibus_bus, IBUS_TYPE_OBJECT) - - static void -@@ -270,56 +274,57 @@ _connection_closed_cb (GDBusConnection *connection, - * However we think the error message is almost harmless. */ - g_debug ("_connection_closed_cb: %s", error->message); - } -+ ibus_bus_close_connection (bus); -+} - -- g_assert (bus->priv->connection == connection); -- g_signal_handlers_disconnect_by_func (bus->priv->connection, -- G_CALLBACK (_connection_closed_cb), -- bus); -- g_object_unref (bus->priv->connection); -- bus->priv->connection = NULL; -- -+static void -+ibus_bus_close_connection (IBusBus *bus) -+{ - g_free (bus->priv->unique_name); - bus->priv->unique_name = NULL; - - bus->priv->watch_dbus_signal_id = 0; - bus->priv->watch_ibus_signal_id = 0; - -- g_signal_emit (bus, bus_signals[DISCONNECTED], 0); --} -+ g_free (bus->priv->bus_address); -+ bus->priv->bus_address = NULL; -+ -+ /* Cancel ongoing connect request. */ -+ g_cancellable_cancel (bus->priv->cancellable); -+ g_cancellable_reset (bus->priv->cancellable); - --static void --ibus_bus_disconnect (IBusBus *bus) --{ - /* unref the old connection at first */ - if (bus->priv->connection != NULL) { - g_signal_handlers_disconnect_by_func (bus->priv->connection, - G_CALLBACK (_connection_closed_cb), - bus); -+ if (!g_dbus_connection_is_closed(bus->priv->connection)) -+ g_dbus_connection_close(bus->priv->connection, NULL, NULL, NULL); - g_object_unref (bus->priv->connection); - bus->priv->connection = NULL; -+ g_signal_emit (bus, bus_signals[DISCONNECTED], 0); - } - } - - static void --ibus_bus_connect_finish (IBusBus *bus) --{ -- if (bus->priv->connection) { -- /* FIXME */ -- ibus_bus_hello (bus); -- -- g_signal_connect (bus->priv->connection, -- "closed", -- (GCallback) _connection_closed_cb, -- bus); -- if (bus->priv->watch_dbus_signal) { -- ibus_bus_watch_dbus_signal (bus); -- } -- if (bus->priv->watch_ibus_signal) { -- ibus_bus_watch_ibus_signal (bus); -- } -- -- g_signal_emit (bus, bus_signals[CONNECTED], 0); -+ibus_bus_connect_completed (IBusBus *bus) -+{ -+ g_assert (bus->priv->connection); -+ /* FIXME */ -+ ibus_bus_hello (bus); -+ -+ g_signal_connect (bus->priv->connection, -+ "closed", -+ (GCallback) _connection_closed_cb, -+ bus); -+ if (bus->priv->watch_dbus_signal) { -+ ibus_bus_watch_dbus_signal (bus); -+ } -+ if (bus->priv->watch_ibus_signal) { -+ ibus_bus_watch_ibus_signal (bus); - } -+ -+ g_signal_emit (bus, bus_signals[CONNECTED], 0); - } - - static void -@@ -333,7 +338,8 @@ _bus_connect_async_cb (GObject *source_object, - IBusBus *bus = IBUS_BUS (user_data); - GError *error = NULL; - -- bus->priv->connection = g_dbus_connection_new_for_address_finish (res, &error); -+ bus->priv->connection = -+ g_dbus_connection_new_for_address_finish (res, &error); - - if (error != NULL) { - g_warning ("Unable to connect to ibus: %s", error->message); -@@ -341,8 +347,13 @@ _bus_connect_async_cb (GObject *source_object, - error = NULL; - } - -- if (bus->priv->connection) -- ibus_bus_connect_finish (bus); -+ if (bus->priv->connection != NULL) { -+ ibus_bus_connect_completed (bus); -+ } -+ else { -+ g_free (bus->priv->bus_address); -+ bus->priv->bus_address = NULL; -+ } - - /* unref the ref from ibus_bus_connect */ - g_object_unref (bus); -@@ -351,32 +362,52 @@ _bus_connect_async_cb (GObject *source_object, - static void - ibus_bus_connect_async (IBusBus *bus) - { -- ibus_bus_disconnect (bus); -+ const gchar *bus_address = ibus_get_address (); - -- if (ibus_get_address () != NULL) { -- g_object_ref (bus); -- g_dbus_connection_new_for_address (ibus_get_address (), -- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | -- G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, -- NULL, NULL, -- _bus_connect_async_cb, bus); -- } -+ if (bus_address == NULL) -+ return; -+ -+ if (g_strcmp0 (bus->priv->bus_address, bus_address) == 0) -+ return; -+ -+ /* Close current connection and cancel ongoing connect request. */ -+ ibus_bus_close_connection (bus); -+ -+ bus->priv->bus_address = g_strdup (bus_address); -+ g_object_ref (bus); -+ g_dbus_connection_new_for_address ( -+ bus_address, -+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | -+ G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, -+ NULL, -+ bus->priv->cancellable, -+ _bus_connect_async_cb, bus); - } - - static void - ibus_bus_connect (IBusBus *bus) - { -- ibus_bus_disconnect (bus); -+ const gchar *bus_address = ibus_get_address (); - -- if (ibus_get_address () != NULL) { -- bus->priv->connection = -- g_dbus_connection_new_for_address_sync (ibus_get_address (), -- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | -- G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, -- NULL, NULL, NULL); -- } -+ if (bus_address == NULL) -+ return; - -- ibus_bus_connect_finish (bus); -+ if (g_strcmp0 (bus_address, bus->priv->bus_address) == 0 && -+ bus->priv->connection != NULL) -+ return; -+ -+ /* Close current connection and cancel ongoing connect request. */ -+ ibus_bus_close_connection (bus); -+ -+ bus->priv->connection = g_dbus_connection_new_for_address_sync ( -+ bus_address, -+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | -+ G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, -+ NULL, NULL, NULL); -+ if (bus->priv->connection) { -+ bus->priv->bus_address = g_strdup (bus_address); -+ ibus_bus_connect_completed (bus); -+ } - } - - static void -@@ -391,10 +422,7 @@ _changed_cb (GFileMonitor *monitor, - event_type != G_FILE_MONITOR_EVENT_DELETED) - return; - -- if (ibus_bus_is_connected (bus)) -- return; -- -- ibus_bus_connect (bus); -+ ibus_bus_connect_async (bus); - } - - static void -@@ -414,6 +442,8 @@ ibus_bus_init (IBusBus *bus) - bus->priv->watch_ibus_signal_id = 0; - bus->priv->unique_name = NULL; - bus->priv->connect_async = FALSE; -+ bus->priv->bus_address = NULL; -+ bus->priv->cancellable = g_cancellable_new (); - - path = g_path_get_dirname (ibus_get_socket_path ()); - -@@ -523,6 +553,13 @@ ibus_bus_destroy (IBusObject *object) - g_free (bus->priv->unique_name); - bus->priv->unique_name = NULL; - -+ g_free (bus->priv->bus_address); -+ bus->priv->bus_address = NULL; -+ -+ g_cancellable_cancel (bus->priv->cancellable); -+ g_object_unref (bus->priv->cancellable); -+ bus->priv->cancellable = NULL; -+ - IBUS_OBJECT_CLASS (ibus_bus_parent_class)->destroy (object); - } - -@@ -1621,7 +1658,7 @@ ibus_bus_get_engines_by_names (IBusBus *bus, - G_VARIANT_TYPE ("(av)")); - if (result == NULL) - return NULL; -- -+ - GArray *array = g_array_new (TRUE, TRUE, sizeof (IBusEngineDesc *)); - GVariantIter *iter = NULL; - g_variant_get (result, "(av)", &iter); --- -1.7.10.4 - -From a454448111650c3e92fc9ba65c26a57adc9c3c6c Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 19 Jul 2012 09:57:01 +0900 -Subject: [PATCH] Support dconf 0.13.4 - -TEST=Manually - -Review URL: https://codereview.appspot.com/6426044 ---- - conf/dconf/Makefile.am | 2 +- - conf/dconf/config-private.h | 56 +++++++++++++++++++++++++++++++++++++++++++ - conf/dconf/config.c | 26 +++++++++++++++++++- - conf/dconf/config.h | 47 ------------------------------------ - conf/dconf/main.c | 2 +- - configure.ac | 3 +++ - 6 files changed, 86 insertions(+), 50 deletions(-) - create mode 100644 conf/dconf/config-private.h - delete mode 100644 conf/dconf/config.h - -diff --git a/conf/dconf/Makefile.am b/conf/dconf/Makefile.am -index 148ba62..f0e24b0 100644 ---- a/conf/dconf/Makefile.am -+++ b/conf/dconf/Makefile.am -@@ -29,7 +29,7 @@ libexec_PROGRAMS = \ - ibus_dconf_SOURCES = \ - main.c \ - config.c \ -- config.h \ -+ config-private.h \ - $(NULL) - ibus_dconf_CFLAGS = \ - @GLIB2_CFLAGS@ \ -diff --git a/conf/dconf/config-private.h b/conf/dconf/config-private.h -new file mode 100644 -index 0000000..9ba4fd5 ---- /dev/null -+++ b/conf/dconf/config-private.h -@@ -0,0 +1,56 @@ -+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ -+/* vim:set et sts=4: */ -+/* ibus - The Input Bus -+ * Copyright (C) 2008-2010 Peng Huang -+ * Copyright (C) 2008-2010 Red Hat, Inc. -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+#ifndef __CONFIG_DCONF_H__ -+#define __CONFIG_DCONF_H__ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#include -+#ifdef DCONF_0_13_4 -+# include -+# include -+#else -+# include -+#endif -+ -+#define IBUS_TYPE_CONFIG_DCONF \ -+ (ibus_config_dconf_get_type ()) -+#define IBUS_CONFIG_DCONF(obj) \ -+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConf)) -+#define IBUS_CONFIG_DCONF_CLASS(klass) \ -+ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConfClass)) -+#define IBUS_IS_CONFIG_DCONF(obj) \ -+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG_DCONF)) -+#define IBUS_IS_CONFIG_DCONF_CLASS(klass) \ -+ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG_DCONF)) -+#define IBUS_CONFIG_DCONF_GET_CLASS(obj) \ -+ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConfClass)) -+ -+typedef struct _IBusConfigDConf IBusConfigDConf; -+typedef struct _IBusConfigDConfClass IBusConfigDConfClass; -+ -+GType ibus_config_dconf_get_type (void); -+IBusConfigDConf *ibus_config_dconf_new (GDBusConnection *connection); -+ -+#endif -diff --git a/conf/dconf/config.c b/conf/dconf/config.c -index faca932..44d7031 100644 ---- a/conf/dconf/config.c -+++ b/conf/dconf/config.c -@@ -23,7 +23,7 @@ - - #include - #include --#include "config.h" -+#include "config-private.h" - - #define DCONF_PREFIX "/desktop/ibus" - #define DCONF_PRESERVE_NAME_PREFIXES_KEY \ -@@ -159,12 +159,19 @@ static void - _watch_func (DConfClient *client, - const gchar *gpath, - const gchar * const *items, -+#ifndef DCONF_0_13_4 - gint n_items, -+#endif - const gchar *tag, - IBusConfigDConf *config) - { - gchar **gkeys = NULL; - gint i; -+#ifdef DCONF_0_13_4 -+ gint n_items; -+ -+ n_items = g_strv_length ((gchar **)items); -+#endif - - g_return_if_fail (gpath != NULL); - g_return_if_fail (n_items >= 0); -@@ -231,6 +238,14 @@ static void - ibus_config_dconf_init (IBusConfigDConf *config) - { - GVariant *variant; -+#ifdef DCONF_0_13_4 -+ config->client = dconf_client_new (); -+ -+ g_signal_connect (config->client, "changed", -+ G_CALLBACK (_watch_func), config); -+ -+ dconf_client_watch_fast (config->client, DCONF_PREFIX"/"); -+#else - GError *error; - - config->client = dconf_client_new ("ibus", -@@ -241,6 +256,7 @@ ibus_config_dconf_init (IBusConfigDConf *config) - error = NULL; - if (!dconf_client_watch (config->client, DCONF_PREFIX"/", NULL, &error)) - g_warning ("Can not watch dconf path %s", DCONF_PREFIX"/"); -+#endif - - config->preserve_name_prefixes = NULL; - variant = dconf_client_read (config->client, -@@ -265,9 +281,13 @@ static void - ibus_config_dconf_destroy (IBusConfigDConf *config) - { - if (config->client) { -+#ifdef DCONF_0_13_4 -+ dconf_client_unwatch_fast (config->client, DCONF_PREFIX"/"); -+#else - GError *error = NULL; - if (!dconf_client_unwatch (config->client, DCONF_PREFIX"/", NULL, &error)) - g_warning ("Can not unwatch dconf path %s", DCONF_PREFIX"/"); -+#endif - - g_object_unref (config->client); - config->client = NULL; -@@ -307,12 +327,16 @@ ibus_config_dconf_set_value (IBusConfigService *config, - g_free (gname); - } - -+#ifdef DCONF_0_13_4 -+ retval = dconf_client_write_fast (client, gkey, value, error); -+#else - retval = dconf_client_write (client, - gkey, - value, - NULL, /* tag */ - NULL, /* cancellable */ - error); -+#endif - g_free (gkey); - - return retval; -diff --git a/conf/dconf/config.h b/conf/dconf/config.h -deleted file mode 100644 -index 9f602d6..0000000 ---- a/conf/dconf/config.h -+++ /dev/null -@@ -1,47 +0,0 @@ --/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ --/* vim:set et sts=4: */ --/* ibus - The Input Bus -- * Copyright (C) 2008-2010 Peng Huang -- * Copyright (C) 2008-2010 Red Hat, Inc. -- * -- * This library is free software; you can redistribute it and/or -- * modify it under the terms of the GNU Lesser General Public -- * License as published by the Free Software Foundation; either -- * version 2 of the License, or (at your option) any later version. -- * -- * This library is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * Lesser General Public License for more details. -- * -- * You should have received a copy of the GNU Lesser General Public -- * License along with this library; if not, write to the -- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- * Boston, MA 02111-1307, USA. -- */ --#ifndef __CONFIG_DCONF_H__ --#define __CONFIG_DCONF_H__ -- --#include --#include -- --#define IBUS_TYPE_CONFIG_DCONF \ -- (ibus_config_dconf_get_type ()) --#define IBUS_CONFIG_DCONF(obj) \ -- (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConf)) --#define IBUS_CONFIG_DCONF_CLASS(klass) \ -- (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConfClass)) --#define IBUS_IS_CONFIG_DCONF(obj) \ -- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_CONFIG_DCONF)) --#define IBUS_IS_CONFIG_DCONF_CLASS(klass) \ -- (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_CONFIG_DCONF)) --#define IBUS_CONFIG_DCONF_GET_CLASS(obj) \ -- (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_CONFIG_DCONF, IBusConfigDConfClass)) -- --typedef struct _IBusConfigDConf IBusConfigDConf; --typedef struct _IBusConfigDConfClass IBusConfigDConfClass; -- --GType ibus_config_dconf_get_type (void); --IBusConfigDConf *ibus_config_dconf_new (GDBusConnection *connection); -- --#endif -diff --git a/conf/dconf/main.c b/conf/dconf/main.c -index 1b69baa..bffe983 100644 ---- a/conf/dconf/main.c -+++ b/conf/dconf/main.c -@@ -23,7 +23,7 @@ - #include - #include - #include --#include "config.h" -+#include "config-private.h" - - static IBusBus *bus = NULL; - static IBusConfigDConf *config = NULL; -diff --git a/configure.ac b/configure.ac -index 8498efe..cc7d0e0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -327,6 +327,9 @@ if test x"$enable_dconf" = x"yes"; then - [dconf >= 0.7.5], , - enable_dconf=no - ) -+ PKG_CHECK_EXISTS([dconf >= 0.13.4], -+ [AC_DEFINE(DCONF_0_13_4, TRUE, [dconf is 0.13.4 or later])], -+ []) - # check glib-compile-schemas - GLIB_GSETTINGS - fi --- -1.7.10.4 - -From 52fbf82dd1babc0d8de7be0f5bb6de622c069b4d Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Tue, 12 Jun 2012 11:53:29 +0900 -Subject: [PATCH] Fix not to switch engines by non-trigger keys. - ---- - ui/gtk3/switcher.vala | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala -index b543a8f..ea56c07 100644 ---- a/ui/gtk3/switcher.vala -+++ b/ui/gtk3/switcher.vala -@@ -128,6 +128,7 @@ class Switcher : Gtk.Window { - state & KeybindingManager.MODIFIER_FILTER); - - update_engines(engines); -+ m_result = 0; - m_selected_engine = index; - m_label.set_text(m_buttons[index].longname); - m_buttons[index].grab_focus(); -@@ -343,6 +344,11 @@ class Switcher : Gtk.Window { - break; - default: - debug("0x%04x", pe->keyval); -+ if (m_loop != null) { -+ m_loop.quit(); -+ m_loop = null; -+ } -+ retval = false; - break; - } - } while (false); --- -1.7.10.4 diff --git a/ibus-gjs-xx-gnome-shell-3.1.4-build-failure.patch b/ibus-gjs-xx-gnome-shell-3.1.4-build-failure.patch deleted file mode 100644 index 87d4d77..0000000 --- a/ibus-gjs-xx-gnome-shell-3.1.4-build-failure.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- ibus-gjs/configure.ac.orig 2012-01-13 18:11:33.152447345 +0900 -+++ ibus-gjs/configure.ac 2012-02-08 14:21:59.671562482 +0900 -@@ -174,8 +174,8 @@ try { - $GREP -v "DEBUG:" - } - --GNOME_SHELL_VERSION=`GET_JS_VERSION 'Config.PACKAGE_VERSION'` --GJS_VERSION=`GET_JS_VERSION 'Config.GJS_VERSION'` -+GNOME_SHELL_VERSION='3.3.5", "3.3.4", "3.3.3", "3.2' -+GJS_VERSION='1.31.10", "1.31.6", "1.31.11", "1.30' - AC_SUBST(GNOME_SHELL_VERSION) - AC_SUBST(GJS_VERSION) - diff --git a/ibus-xx-f18-build.patch b/ibus-xx-f18-build.patch index fac369a..ddc7f49 100644 --- a/ibus-xx-f18-build.patch +++ b/ibus-xx-f18-build.patch @@ -1,11 +1,11 @@ ---- ibus-1.4.99.20120712/ui/gtk3/panel.vala.orig -+++ ibus-1.4.99.20120712/ui/gtk3/panel.vala -@@ -157,7 +157,7 @@ class Panel : IBus.PanelService { - if ((switch_modifiers & VIRTUAL_MODIFIERS) != 0) { - // workaround a bug in gdk vapi vala > 0.18 - // https://bugzilla.gnome.org/show_bug.cgi?id=677559 +--- ibus-1.4.99.20120822/ui/gtk3/panel.vala.orig ++++ ibus-1.4.99.20120822/ui/gtk3/panel.vala +@@ -125,7 +125,7 @@ class Panel : IBus.PanelService { + if ((switch_modifiers & VIRTUAL_MODIFIERS) != 0) { + // workaround a bug in gdk vapi vala > 0.18 + // https://bugzilla.gnome.org/show_bug.cgi?id=677559 -#if VALA_0_18 +#if VALA_0_20 - Gdk.Keymap.get_default().map_virtual_modifiers( - ref switch_modifiers); + Gdk.Keymap.get_default().map_virtual_modifiers( + ref switch_modifiers); #else diff --git a/ibus-xx-no-use.diff b/ibus-xx-no-use.diff index 38f84c5..ea6e544 100644 --- a/ibus-xx-no-use.diff +++ b/ibus-xx-no-use.diff @@ -1,18 +1,18 @@ -From 1cd16fa05c05e64bf5ee89c92a02fe4323e1de2b Mon Sep 17 00:00:00 2001 +From 22c52cc54228a64c7e26cc33de9a47d8b1e98add Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Thu, 24 May 2012 17:49:19 +0900 +Date: Wed, 15 Aug 2012 18:36:29 +0900 Subject: [PATCH] Disabled to show non-used GUI. --- - setup/main.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++------ - setup/setup.ui | 33 +++++++++++++++++-------------- - 2 files changed, 72 insertions(+), 21 deletions(-) + setup/main.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++------ + setup/setup.ui | 38 ++++++++++++++++++---------------- + 2 files changed, 77 insertions(+), 24 deletions(-) diff --git a/setup/main.py b/setup/main.py -index 0e4c83d..fda20ea 100644 +index 0e4c83d..0e33d7b 100644 --- a/setup/main.py +++ b/setup/main.py -@@ -77,22 +77,30 @@ class Setup(object): +@@ -77,22 +77,31 @@ class Setup(object): self.__init_ui() def __init_hotkey(self): @@ -24,7 +24,8 @@ index 0e4c83d..fda20ea 100644 } + ''' + default_values = { -+ 'trigger_accel' : ('trigger', ['space']), ++ 'trigger_accel' : ('next_engine', ['space']), ++ 'trigger_accel_backward' : ('prev_engine', ['space']), + } values = dict(self.__config.get_values("general/hotkey")) @@ -49,7 +50,7 @@ index 0e4c83d..fda20ea 100644 def __init_panel(self): values = dict(self.__config.get_values("panel")) -@@ -445,6 +453,46 @@ class Setup(object): +@@ -445,6 +454,48 @@ class Setup(object): entry.set_text(text) entry.set_tooltip_text(text) @@ -61,6 +62,8 @@ index 0e4c83d..fda20ea 100644 + else: + shortcuts = [] + orig_list =['space'] ++ if name == 'trigger_accel_backward': ++ orig_list =['space'] + variant = self.__config.get_value(section, name) + if variant != None: + orig_list = variant.dup_strv()[0] @@ -97,29 +100,36 @@ index 0e4c83d..fda20ea 100644 def __item_started_column_toggled_cb(self, cell, path_str, model): diff --git a/setup/setup.ui b/setup/setup.ui -index 2026172..c6f5f3a 100644 +index 2026172..af99cae 100644 --- a/setup/setup.ui +++ b/setup/setup.ui -@@ -106,7 +106,7 @@ - 6 +@@ -122,7 +122,6 @@ - -- True -+ True + + True +- False False - The shortcut keys for switching to next input method in the list + The shortcut keys for switching to previous input method in the list 0 -@@ -121,7 +121,7 @@ +@@ -137,7 +136,7 @@ - + - True + True - False False - The shortcut keys for switching to previous input method in the list -@@ -144,7 +144,7 @@ - + 6 + +@@ -172,6 +171,7 @@ + + 1 + 2 ++ GTK_FILL + + + +@@ -183,7 +183,7 @@ + True True - False @@ -127,10 +137,10 @@ index 2026172..c6f5f3a 100644 True -@@ -154,7 +154,9 @@ +@@ -193,7 +193,9 @@ - + - ... + + gtk-apply @@ -138,30 +148,41 @@ index 2026172..c6f5f3a 100644 False True True -@@ -172,11 +174,12 @@ - - 1 - 2 -+ GTK_FILL - - - - -- True -+ True - False - 6 +@@ -223,9 +225,8 @@ + + + True +- False + True +- False ++ + + + True +@@ -235,10 +236,11 @@ + -@@ -217,7 +220,7 @@ + +- ... ++ ++ gtk-apply ++ True + False + True +- False + True + False + False +@@ -260,7 +262,7 @@ - + - True + True False - 6 - -@@ -273,7 +276,7 @@ + The shortcut keys for turning input method on or off + 0 +@@ -273,7 +275,7 @@ @@ -170,7 +191,7 @@ index 2026172..c6f5f3a 100644 False 0 Enable: -@@ -287,7 +290,7 @@ +@@ -287,7 +289,7 @@ @@ -179,7 +200,7 @@ index 2026172..c6f5f3a 100644 False 6 -@@ -328,7 +331,7 @@ +@@ -328,7 +330,7 @@ @@ -188,7 +209,7 @@ index 2026172..c6f5f3a 100644 False 0 Disable: -@@ -342,7 +345,7 @@ +@@ -342,7 +344,7 @@ @@ -197,7 +218,7 @@ index 2026172..c6f5f3a 100644 False 6 -@@ -452,7 +455,7 @@ +@@ -452,7 +454,7 @@ @@ -206,7 +227,7 @@ index 2026172..c6f5f3a 100644 False Set the behavior of ibus how to show or hide language bar 0 -@@ -481,7 +484,7 @@ +@@ -481,7 +483,7 @@ @@ -215,7 +236,7 @@ index 2026172..c6f5f3a 100644 False model_panel_show_mode -@@ -521,7 +524,7 @@ +@@ -521,7 +523,7 @@ Show icon on system tray False @@ -224,7 +245,7 @@ index 2026172..c6f5f3a 100644 True False Show icon on system tray -@@ -540,7 +543,7 @@ +@@ -540,7 +542,7 @@ Show input method name on language bar False @@ -233,7 +254,7 @@ index 2026172..c6f5f3a 100644 True False Show input method's name on language bar when check the checkbox -@@ -1001,7 +1004,7 @@ You may use up/down buttons to change it.</i></small> +@@ -1001,7 +1003,7 @@ You may use up/down buttons to change it.</i></small> diff --git a/ibus-xx-setup-frequent-lang.patch b/ibus-xx-setup-frequent-lang.patch index 1967b9d..45fd2cd 100644 --- a/ibus-xx-setup-frequent-lang.patch +++ b/ibus-xx-setup-frequent-lang.patch @@ -1,6 +1,6 @@ -From 3eb162c984dc420b085547b0a590f079262ef97d Mon Sep 17 00:00:00 2001 +From 7a37c380e3aa0dc0111b0a238b0d38b3521acc00 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 17 Jul 2012 17:43:10 +0900 +Date: Wed, 15 Aug 2012 18:25:08 +0900 Subject: [PATCH] Enable ibus-setup to show the frequently used languages only in IME list. @@ -11,10 +11,10 @@ Subject: [PATCH] Enable ibus-setup to show the frequently used languages 3 files changed, 300 insertions(+), 24 deletions(-) diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in -index 0d127d5..1ea4277 100644 +index 4086f67..445d423 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in -@@ -340,6 +340,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn +@@ -332,6 +332,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn diff --git a/ibus.spec b/ibus.spec index 7f53d21..e149c59 100644 --- a/ibus.spec +++ b/ibus.spec @@ -14,7 +14,7 @@ %endif %if (0%{?fedora} > 16 || 0%{?rhel} > 6) -%define ibus_gjs_version 3.4.1.20120518 +%define ibus_gjs_version 3.4.1.20120815 %define ibus_gjs_build_failure 1 %else %define ibus_gjs_version 3.2.1.20111230 @@ -29,8 +29,8 @@ %define gnome_icon_theme_legacy_version 2.91.6 Name: ibus -Version: 1.4.99.20120712 -Release: 3%{?dist} +Version: 1.4.99.20120822 +Release: 1%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ Group: System Environment/Libraries @@ -38,10 +38,11 @@ URL: http://code.google.com/p/ibus/ Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz Source1: xinput-ibus Source2: http://fujiwara.fedorapeople.org/ibus/gnome-shell/ibus-gjs-%{ibus_gjs_version}.tar.gz -Patch0: ibus-HEAD.patch -Patch1: ibus-541492-xkb.patch -Patch2: ibus-530711-preload-sys.patch -Patch3: ibus-xx-setup-frequent-lang.patch +# Patch0: ibus-HEAD.patch +Patch1: ibus-810211-no-switch-by-no-trigger.patch +Patch2: ibus-541492-xkb.patch +Patch3: ibus-530711-preload-sys.patch +Patch4: ibus-xx-setup-frequent-lang.patch # Workaround to disable preedit on gnome-shell until bug 658420 is fixed. # https://bugzilla.gnome.org/show_bug.cgi?id=658420 @@ -55,7 +56,6 @@ Patch95: ibus-xx-f18-build.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: cvs BuildRequires: gettext-devel BuildRequires: libtool BuildRequires: python @@ -210,16 +210,17 @@ The ibus-devel-docs package contains developer documentation for ibus zcat %SOURCE2 | tar xf - %endif -%patch0 -p1 +# %patch0 -p1 %patch92 -p1 -b .g-s-preedit cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || +%patch1 -p1 -b .noswitch %if %with_xkbfile -%patch1 -p1 -b .xkb +%patch2 -p1 -b .xkb rm -f bindings/vala/ibus-1.0.vapi rm -f data/dconf/00-upstream-settings %endif -%patch2 -p1 -b .preload-sys -%patch3 -p1 -b .setup-frequent-lang +%patch3 -p1 -b .preload-sys +%patch4 -p1 -b .setup-frequent-lang %if 0%{?fedora} <= 16 %patch93 -p1 -b .compat @@ -472,6 +473,13 @@ dconf update %{_datadir}/gtk-doc/html/* %changelog +* Wed Aug 22 2012 Takao Fujiwara - 1.4.99.20120822-1 +- Bumped to 1.4.99.20120822 +- Bumped to ibus-gjs 3.4.1.20120815 + Fixed Bug 845956 - ibus backward trigger key is not customized + Fixed Bug 844580 - ibus-dconf does not load the system gvdb +- Separated ibus-810211-no-switch-by-no-trigger.patch from ibus-HEAD.patch + * Fri Jul 27 2012 Fedora Release Engineering - 1.4.99.20120712-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild diff --git a/sources b/sources index c88a0e6..00074d7 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -0d884fafedf2ddfaa73a34a8eac7a1f0 ibus-1.4.99.20120712.tar.gz +b7b7aa75b28cc28521e71ca499854695 ibus-1.4.99.20120822.tar.gz 2d2ad58e3e41429dbd883ba7e501c9b2 ibus-gjs-3.2.1.20111230.tar.gz -3fdef3e31c0354d927dc06df5dc02f9c ibus-gjs-3.4.1.20120518.tar.gz +8acf4ac4d1a7dfb9a0af9e755a8e7dba ibus-gjs-3.4.1.20120815.tar.gz