File fix-initial-input-mode.patch of Package mozc
diff -ru unix.org/ibus/property_handler.cc unix/ibus/property_handler.cc
--- unix.org/ibus/property_handler.cc 2013-10-29 02:17:24.898870371 +0900
+++ unix/ibus/property_handler.cc 2013-10-29 02:48:55.617344149 +0900
@@ -84,8 +84,27 @@
client_(client),
translator_(translator),
original_composition_mode_(kMozcEngineInitialCompositionMode),
+#if IBUS_CHECK_VERSION(1, 5, 0)
+ is_activated_(false),
+#else
is_activated_(true),
+#endif
is_disabled_(false) {
+ commands::KeyEvent key;
+ if (is_activated_) {
+ key.set_special_key(mozc::commands::KeyEvent::ON);
+ } else {
+ key.set_special_key(mozc::commands::KeyEvent::OFF);
+ }
+ key.set_activated(is_activated_);
+ key.set_mode(original_composition_mode_);
+ commands::Output output;
+ if (client_->SendKey(key, &output)) {
+ original_composition_mode_ = output.status().mode();
+ is_activated_ = output.status().activated();
+ } else {
+ LOG(ERROR) << "SendKey failed";
+ }
AppendCompositionPropertyToPanel();
#ifndef OS_CHROMEOS
@@ -133,6 +152,9 @@
IBusPropList *sub_prop_list = ibus_prop_list_new();
// Create items for the radio menu.
+ const commands::CompositionMode initial_mode = is_activated_ ?
+ original_composition_mode_ :
+ kMozcEnginePropertyIMEOffState->composition_mode;
string icon_path_for_panel;
const char *mode_symbol = NULL;
for (size_t i = 0; i < kMozcEnginePropertiesSize; ++i) {
@@ -140,7 +162,7 @@
IBusText *label = ibus_text_new_from_string(
translator_->MaybeTranslate(entry.label).c_str());
IBusPropState state = PROP_STATE_UNCHECKED;
- if (entry.composition_mode == kMozcEngineInitialCompositionMode) {
+ if (entry.composition_mode == initial_mode) {
state = PROP_STATE_CHECKED;
icon_path_for_panel = GetIconPath(entry.icon);
mode_symbol = entry.label_for_panel;
Only in unix/ibus: property_handler.cc.orig