summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2013-03-04 10:10:53 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2013-03-04 10:10:53 +0900
commit4b2f6a477019b50375aba2e5f9c43e618b6905ad (patch)
treefb6c694f379f03880c7569455947411621a97504 /ui
parente0878144a704e9bfd0f5a60e6894b1de272aaa7b (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.vala28
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) {