Line 0
Link Here
|
|
|
1 |
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in |
2 |
index dbb6da8..54ccb4c 100644 |
3 |
--- a/data/ibus.schemas.in |
4 |
+++ b/data/ibus.schemas.in |
5 |
@@ -224,7 +224,7 @@ |
6 |
<applyto>/desktop/ibus/general/use_system_keyboard_layout</applyto> |
7 |
<owner>ibus</owner> |
8 |
<type>bool</type> |
9 |
- <default>true</default> |
10 |
+ <default>false</default> |
11 |
<locale name="C"> |
12 |
<short>Use system keyboard layout</short> |
13 |
<long>Use system keyboard (XKB) layout</long> |
14 |
diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala |
15 |
index 24e6b2e..18ef5c0 100644 |
16 |
--- a/ui/gtk3/panel.vala |
17 |
+++ b/ui/gtk3/panel.vala |
18 |
@@ -48,6 +48,7 @@ class Panel : IBus.PanelService { |
19 |
private Gtk.AboutDialog m_about_dialog; |
20 |
private Gtk.CssProvider m_css_provider; |
21 |
private int m_switcher_delay_time = 400; |
22 |
+ private bool m_use_system_keyboard_layout = false; |
23 |
private const string ACCELERATOR_SWITCH_IME_FOREWARD = "<Control>space"; |
24 |
|
25 |
private GLib.List<Keybinding> m_keybindings = new GLib.List<Keybinding>(); |
26 |
@@ -265,6 +266,22 @@ class Panel : IBus.PanelService { |
27 |
} |
28 |
} |
29 |
|
30 |
+ private void set_use_system_keyboard_layout(Variant? variant) { |
31 |
+ Variant var_use_system_kbd_layout = variant; |
32 |
+ |
33 |
+ if (var_use_system_kbd_layout == null) { |
34 |
+ var_use_system_kbd_layout = m_config.get_value( |
35 |
+ "general", |
36 |
+ "use_system_keyboard_layout"); |
37 |
+ } |
38 |
+ |
39 |
+ if (var_use_system_kbd_layout == null) { |
40 |
+ return; |
41 |
+ } |
42 |
+ |
43 |
+ m_use_system_keyboard_layout = var_use_system_kbd_layout.get_boolean(); |
44 |
+ } |
45 |
+ |
46 |
public void set_config(IBus.Config config) { |
47 |
if (m_config != null) { |
48 |
m_config.value_changed.disconnect(config_value_changed_cb); |
49 |
@@ -278,9 +295,13 @@ class Panel : IBus.PanelService { |
50 |
m_config.watch("general", "preload_engines"); |
51 |
m_config.watch("general", "engines_order"); |
52 |
m_config.watch("general", "switcher_delay_time"); |
53 |
+ m_config.watch("general", "use_system_keyboard_layout"); |
54 |
m_config.watch("general/hotkey", "triggers"); |
55 |
m_config.watch("panel", "custom_font"); |
56 |
m_config.watch("panel", "use_custom_font"); |
57 |
+ // Update m_use_system_keyboard_layout before update_engines() |
58 |
+ // is called. |
59 |
+ set_use_system_keyboard_layout(null); |
60 |
update_engines(m_config.get_value("general", "preload_engines"), |
61 |
m_config.get_value("general", "engines_order")); |
62 |
unbind_switch_shortcut(); |
63 |
@@ -352,7 +373,9 @@ class Panel : IBus.PanelService { |
64 |
return; |
65 |
} |
66 |
// set xkb layout |
67 |
- exec_setxkbmap(engine); |
68 |
+ if (!m_use_system_keyboard_layout) { |
69 |
+ exec_setxkbmap(engine); |
70 |
+ } |
71 |
} |
72 |
|
73 |
private void config_value_changed_cb(IBus.Config config, |
74 |
@@ -380,6 +403,11 @@ class Panel : IBus.PanelService { |
75 |
set_switcher_delay_time(variant); |
76 |
return; |
77 |
} |
78 |
+ |
79 |
+ if (section == "general" && name == "use_system_keyboard_layout") { |
80 |
+ set_use_system_keyboard_layout(variant); |
81 |
+ return; |
82 |
+ } |
83 |
} |
84 |
|
85 |
private void handle_engine_switch(Gdk.Event event, bool revert) { |