summaryrefslogtreecommitdiffstats
path: root/chromium/ui/base/ime/input_method_base.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/base/ime/input_method_base.cc')
-rw-r--r--chromium/ui/base/ime/input_method_base.cc30
1 files changed, 19 insertions, 11 deletions
diff --git a/chromium/ui/base/ime/input_method_base.cc b/chromium/ui/base/ime/input_method_base.cc
index d88fccfc6ff..ed347670ef3 100644
--- a/chromium/ui/base/ime/input_method_base.cc
+++ b/chromium/ui/base/ime/input_method_base.cc
@@ -10,6 +10,8 @@
#include "ui/base/ime/input_method_delegate.h"
#include "ui/base/ime/input_method_observer.h"
#include "ui/base/ime/text_input_client.h"
+#include "ui/base/ime/text_input_focus_manager.h"
+#include "ui/base/ui_base_switches_util.h"
#include "ui/events/event.h"
namespace ui {
@@ -56,6 +58,9 @@ void InputMethodBase::DetachTextInputClient(TextInputClient* client) {
}
TextInputClient* InputMethodBase::GetTextInputClient() const {
+ if (switches::IsTextInputFocusManagerEnabled())
+ return TextInputFocusManager::GetInstance()->GetFocusedTextInputClient();
+
return system_toplevel_window_focused_ ? text_input_client_ : NULL;
}
@@ -80,6 +85,10 @@ bool InputMethodBase::CanComposeInline() const {
return client ? client->CanComposeInline() : true;
}
+void InputMethodBase::ShowImeIfNeeded() {
+ FOR_EACH_OBSERVER(InputMethodObserver, observer_list_, OnShowImeIfNeeded());
+}
+
void InputMethodBase::AddObserver(InputMethodObserver* observer) {
observer_list_.AddObserver(observer);
}
@@ -107,11 +116,7 @@ bool InputMethodBase::DispatchKeyEventPostIME(
if (!delegate_)
return false;
- if (!event.HasNativeEvent())
- return delegate_->DispatchFabricatedKeyEventPostIME(
- event.type(), event.key_code(), event.flags());
-
- return delegate_->DispatchKeyEventPostIME(event.native_event());
+ return delegate_->DispatchKeyEventPostIME(event);
}
void InputMethodBase::NotifyTextInputStateChanged(
@@ -123,6 +128,9 @@ void InputMethodBase::NotifyTextInputStateChanged(
void InputMethodBase::SetFocusedTextInputClientInternal(
TextInputClient* client) {
+ if (switches::IsTextInputFocusManagerEnabled())
+ return;
+
TextInputClient* old = text_input_client_;
if (old == client)
return;
@@ -152,18 +160,18 @@ void InputMethodBase::OnCandidateWindowHidden() {
}
void InputMethodBase::CandidateWindowShownCallback() {
- if (text_input_client_)
- text_input_client_->OnCandidateWindowShown();
+ if (TextInputClient* text_input_client = GetTextInputClient())
+ text_input_client->OnCandidateWindowShown();
}
void InputMethodBase::CandidateWindowUpdatedCallback() {
- if (text_input_client_)
- text_input_client_->OnCandidateWindowUpdated();
+ if (TextInputClient* text_input_client = GetTextInputClient())
+ text_input_client->OnCandidateWindowUpdated();
}
void InputMethodBase::CandidateWindowHiddenCallback() {
- if (text_input_client_)
- text_input_client_->OnCandidateWindowHidden();
+ if (TextInputClient* text_input_client = GetTextInputClient())
+ text_input_client->OnCandidateWindowHidden();
}
} // namespace ui