diff options
author | fujiwarat <takao.fujiwara1@gmail.com> | 2013-03-04 10:10:53 +0900 |
---|---|---|
committer | fujiwarat <takao.fujiwara1@gmail.com> | 2013-03-04 10:10:53 +0900 |
commit | 4b2f6a477019b50375aba2e5f9c43e618b6905ad (patch) | |
tree | fb6c694f379f03880c7569455947411621a97504 /ui | |
parent | e0878144a704e9bfd0f5a60e6894b1de272aaa7b (diff) |
Implement use-system-keyboard-layout
BUG=http://code.google.com/p/ibus/issues/detail?id=1558
Review URL: https://codereview.appspot.com/7414045
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk3/panel.vala | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala index 24e6b2e5..9f6e5e37 100644 --- a/ui/gtk3/panel.vala +++ b/ui/gtk3/panel.vala @@ -48,6 +48,7 @@ class Panel : IBus.PanelService { private Gtk.AboutDialog m_about_dialog; private Gtk.CssProvider m_css_provider; private int m_switcher_delay_time = 400; + private bool m_use_system_keyboard_layout = false; private const string ACCELERATOR_SWITCH_IME_FOREWARD = "<Control>space"; private GLib.List<Keybinding> m_keybindings = new GLib.List<Keybinding>(); @@ -265,6 +266,22 @@ class Panel : IBus.PanelService { } } + private void set_use_system_keyboard_layout(Variant? variant) { + Variant var_use_system_kbd_layout = variant; + + if (var_use_system_kbd_layout == null) { + var_use_system_kbd_layout = m_config.get_value( + "general", + "use_system_keyboard_layout"); + } + + if (var_use_system_kbd_layout == null) { + return; + } + + m_use_system_keyboard_layout = var_use_system_kbd_layout.get_boolean(); + } + public void set_config(IBus.Config config) { if (m_config != null) { m_config.value_changed.disconnect(config_value_changed_cb); @@ -278,6 +295,7 @@ class Panel : IBus.PanelService { m_config.watch("general", "preload_engines"); m_config.watch("general", "engines_order"); m_config.watch("general", "switcher_delay_time"); + m_config.watch("general", "use_system_keyboard_layout"); m_config.watch("general/hotkey", "triggers"); m_config.watch("panel", "custom_font"); m_config.watch("panel", "use_custom_font"); @@ -286,6 +304,7 @@ class Panel : IBus.PanelService { unbind_switch_shortcut(); bind_switch_shortcut(null); set_switcher_delay_time(null); + set_use_system_keyboard_layout(null); } else { update_engines(null, null); } @@ -352,7 +371,9 @@ class Panel : IBus.PanelService { return; } // set xkb layout - exec_setxkbmap(engine); + if (!m_use_system_keyboard_layout) { + exec_setxkbmap(engine); + } } private void config_value_changed_cb(IBus.Config config, @@ -380,6 +401,11 @@ class Panel : IBus.PanelService { set_switcher_delay_time(variant); return; } + + if (section == "general" && name == "use_system_keyboard_layout") { + set_use_system_keyboard_layout(variant); + return; + } } private void handle_engine_switch(Gdk.Event event, bool revert) { |