Index: ui/base/ime/remote_input_method_win.cc |
diff --git a/ui/base/ime/remote_input_method_win.cc b/ui/base/ime/remote_input_method_win.cc |
index 1a589bb0668f6b235b24f755093c2812abd512fb..65838ee17490a0b0fbc8e863d552b9deb858e6af 100644 |
--- a/ui/base/ime/remote_input_method_win.cc |
+++ b/ui/base/ime/remote_input_method_win.cc |
@@ -200,8 +200,17 @@ class RemoteInputMethodWin : public InputMethod, |
event->StopPropagation(); |
return; |
} |
- if (delegate_) |
+ if (delegate_) { |
ignore_result(delegate_->DispatchKeyEventPostIME(event)); |
+ if (text_input_client_ && pending_char_events_.size()) { |
+ for (size_t i = 0; i < pending_char_events_.size(); ++i) { |
+ text_input_client_->InsertChar( |
+ pending_char_events_[i], event->flags()); |
+ } |
+ event->StopPropagation(); |
+ } |
+ } |
+ pending_char_events_.clear(); |
} |
void OnTextInputTypeChanged(const TextInputClient* client) override { |
@@ -326,6 +335,10 @@ class RemoteInputMethodWin : public InputMethod, |
text_input_client_->InsertText(text); |
} |
+ void OnCharForNextKeyEvent(base::char16 ch) override { |
+ pending_char_events_.push_back(ch); |
+ } |
+ |
bool CanSendRemoteNotification( |
const TextInputClient* text_input_client) const { |
return text_input_client_ && |
@@ -344,6 +357,7 @@ class RemoteInputMethodWin : public InputMethod, |
bool is_candidate_popup_open_; |
bool is_ime_; |
LANGID langid_; |
+ std::vector<base::char16> pending_char_events_; |
DISALLOW_COPY_AND_ASSIGN(RemoteInputMethodWin); |
}; |