Index: ui/base/ime/input_method_auralinux.cc |
diff --git a/ui/base/ime/input_method_auralinux.cc b/ui/base/ime/input_method_auralinux.cc |
index 08ec50bdc22f902b1eefda6d94da01f84343ec82..97ce8ea79b554a36abd06fcd7334d6028b734e52 100644 |
--- a/ui/base/ime/input_method_auralinux.cc |
+++ b/ui/base/ime/input_method_auralinux.cc |
@@ -104,16 +104,31 @@ void InputMethodAuraLinux::DispatchKeyEvent(ui::KeyEvent* event) { |
if (text_input_type_ != TEXT_INPUT_TYPE_PASSWORD && |
GetEngine() && GetEngine()->IsInterestedInKeyEvent() && |
(!filtered || NeedInsertChar())) { |
- ui::IMEEngineHandlerInterface::KeyEventDoneCallback callback = |
- base::Bind(&InputMethodAuraLinux::ProcessKeyEventDone, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Owned(new ui::KeyEvent(*event)), filtered); |
+ ui::IMEEngineHandlerInterface::KeyEventDoneCallback callback = base::Bind( |
+ &InputMethodAuraLinux::ProcessKeyEventByEngineDone, |
+ weak_ptr_factory_.GetWeakPtr(), base::Owned(new ui::KeyEvent(*event)), |
+ filtered, composition_changed_, |
+ base::Owned(new ui::CompositionText(composition_)), |
+ base::Owned(new base::string16(result_text_))); |
GetEngine()->ProcessKeyEvent(*event, callback); |
} else { |
ProcessKeyEventDone(event, filtered, false); |
} |
} |
+void InputMethodAuraLinux::ProcessKeyEventByEngineDone( |
+ ui::KeyEvent* event, |
+ bool filtered, |
+ bool composition_changed, |
+ ui::CompositionText* composition, |
+ base::string16* result_text, |
+ bool is_handled) { |
+ composition_changed_ = composition_changed; |
+ composition_.CopyFrom(*composition); |
+ result_text_ = *result_text; |
+ ProcessKeyEventDone(event, filtered, is_handled); |
+} |
+ |
void InputMethodAuraLinux::ProcessKeyEventDone(ui::KeyEvent* event, |
bool filtered, |
bool is_handled) { |