m_config.watch("general/hotkey", "triggers");
m_config.watch("panel", "custom_font");
m_config.watch("panel", "use_custom_font");
+ // Update m_use_system_keyboard_layout before update_engines()
+ // is called.
+ set_use_system_keyboard_layout(null);
update_engines(m_config.get_value("general", "preload_engines"),
m_config.get_value("general", "engines_order"));
unbind_switch_shortcut();
bind_switch_shortcut(null);
set_switcher_delay_time(null);
- set_use_system_keyboard_layout(null);
} else {
update_engines(null, null);
}
}
}
+ private void run_preload_engines(IBus.EngineDesc[] engines, int index) {
+ string[] names = {};
+
+ if (engines.length <= index) {
+ return;
+ }
+
+ names += engines[index].get_name();
+ m_bus.preload_engines_async(names, -1, null);
+ }
+
private void update_engines(GLib.Variant? var_engines,
GLib.Variant? var_order) {
string[] engine_names = null;
if (m_engines.length == 0) {
m_engines = engines;
switch_engine(0, true);
+ run_preload_engines(engines, 1);
} else {
var current_engine = m_engines[0];
m_engines = engines;
for (i = 0; i < m_engines.length; i++) {
if (current_engine.get_name() == engines[i].get_name()) {
switch_engine(i);
+ if (i != 0) {
+ run_preload_engines(engines, 0);
+ } else {
+ run_preload_engines(engines, 1);
+ }
return;
}
}
switch_engine(0, true);
+ run_preload_engines(engines, 1);
}
}