summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorcpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-19 18:26:41 +0000
committercpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-19 18:26:41 +0000
commit3386fbc89c9cf88be15bec171dd63019938876bf (patch)
tree8522e490298b4007d2f7e79087e493fdf437fc6f /ui
parent4cf87e323247b338bee12f9356c5ba4e5c780774 (diff)
downloadchromium_src-3386fbc89c9cf88be15bec171dd63019938876bf.zip
chromium_src-3386fbc89c9cf88be15bec171dd63019938876bf.tar.gz
chromium_src-3386fbc89c9cf88be15bec171dd63019938876bf.tar.bz2
Changes on the Input method for metro ash
With this change and http://codereview.chromium.org/11194044/ you get some keyboard love in metro ash, like delete and tab work but no regular text input. BUG=151718 TEST=see bug Review URL: https://codereview.chromium.org/11183049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163030 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r--ui/aura/shared/input_method_event_filter.cc5
-rw-r--r--ui/base/ime/input_method.h2
-rw-r--r--ui/base/ime/input_method_ibus.cc3
-rw-r--r--ui/base/ime/input_method_ibus.h1
-rw-r--r--ui/base/ime/mock_input_method.cc9
-rw-r--r--ui/base/ime/mock_input_method.h2
-rw-r--r--ui/base/test/dummy_input_method.cc8
-rw-r--r--ui/base/test/dummy_input_method.h4
8 files changed, 28 insertions, 6 deletions
diff --git a/ui/aura/shared/input_method_event_filter.cc b/ui/aura/shared/input_method_event_filter.cc
index d41dacc..44e7a85 100644
--- a/ui/aura/shared/input_method_event_filter.cc
+++ b/ui/aura/shared/input_method_event_filter.cc
@@ -51,7 +51,10 @@ bool InputMethodEventFilter::PreHandleKeyEvent(aura::Window* target,
// discarded so it's safe to update the target_root_window_ here.
target_root_window_ = target->GetRootWindow();
DCHECK(target_root_window_);
- input_method_->DispatchKeyEvent(event->native_event());
+ if (event->HasNativeEvent())
+ input_method_->DispatchKeyEvent(event->native_event());
+ else
+ input_method_->DispatchFabricatedKeyEvent(*event);
return true;
}
}
diff --git a/ui/base/ime/input_method.h b/ui/base/ime/input_method.h
index d06b0be..c7d93cc 100644
--- a/ui/base/ime/input_method.h
+++ b/ui/base/ime/input_method.h
@@ -20,6 +20,7 @@ namespace internal {
class InputMethodDelegate;
} // namespace internal
+class KeyEvent;
class TextInputClient;
// An interface implemented by an object that encapsulates a native input method
@@ -79,6 +80,7 @@ class InputMethod {
virtual void DispatchKeyEvent(const base::NativeEvent& native_key_event) = 0;
// TODO(yusukes): Add DispatchFabricatedKeyEvent to support virtual keyboards.
+ virtual void DispatchFabricatedKeyEvent(const ui::KeyEvent& event) = 0;
// Called by the focused client whenever its text input type is changed.
// Before calling this method, the focused client must confirm or clear
diff --git a/ui/base/ime/input_method_ibus.cc b/ui/base/ime/input_method_ibus.cc
index 3183d99..495eb52 100644
--- a/ui/base/ime/input_method_ibus.cc
+++ b/ui/base/ime/input_method_ibus.cc
@@ -197,6 +197,9 @@ void InputMethodIBus::DispatchKeyEvent(const base::NativeEvent& native_event) {
suppress_next_result_ = false;
}
+void InputMethodIBus::DispatchFabricatedKeyEvent(const ui::KeyEvent& event) {
+}
+
void InputMethodIBus::OnTextInputTypeChanged(const TextInputClient* client) {
if (IsContextReady() && IsTextInputClientFocused(client)) {
ResetContext();
diff --git a/ui/base/ime/input_method_ibus.h b/ui/base/ime/input_method_ibus.h
index 730a1cc..c708995 100644
--- a/ui/base/ime/input_method_ibus.h
+++ b/ui/base/ime/input_method_ibus.h
@@ -40,6 +40,7 @@ class UI_EXPORT InputMethodIBus : public InputMethodBase {
virtual void Init(bool focused) OVERRIDE;
virtual void DispatchKeyEvent(
const base::NativeEvent& native_key_event) OVERRIDE;
+ virtual void DispatchFabricatedKeyEvent(const ui::KeyEvent& event) OVERRIDE;
virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE;
virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE;
virtual void CancelComposition(const TextInputClient* client) OVERRIDE;
diff --git a/ui/base/ime/mock_input_method.cc b/ui/base/ime/mock_input_method.cc
index 2c22606..800163f 100644
--- a/ui/base/ime/mock_input_method.cc
+++ b/ui/base/ime/mock_input_method.cc
@@ -6,6 +6,7 @@
#include "base/logging.h"
#include "base/string16.h"
+#include "ui/base/events/event.h"
#include "ui/base/events/event_constants.h"
#include "ui/base/glib/glib_integers.h"
#include "ui/base/ime/input_method_delegate.h"
@@ -92,6 +93,14 @@ void MockInputMethod::DispatchKeyEvent(const base::NativeEvent& native_event) {
#endif
}
+void MockInputMethod::DispatchFabricatedKeyEvent(const ui::KeyEvent& event) {
+#if defined(OS_WIN)
+ delegate_->DispatchFabricatedKeyEventPostIME(event.type(),
+ event.key_code(),
+ event.flags());
+#endif
+}
+
void MockInputMethod::Init(bool focused) {}
void MockInputMethod::OnFocus() {}
void MockInputMethod::OnBlur() {}
diff --git a/ui/base/ime/mock_input_method.h b/ui/base/ime/mock_input_method.h
index bafd868..abfe55f 100644
--- a/ui/base/ime/mock_input_method.h
+++ b/ui/base/ime/mock_input_method.h
@@ -14,6 +14,7 @@
namespace ui {
+class KeyEvent;
class TextInputClient;
// A mock ui::InputMethod implementation for minimum input support.
@@ -30,6 +31,7 @@ class UI_EXPORT MockInputMethod : NON_EXPORTED_BASE(public InputMethod) {
virtual void SetFocusedTextInputClient(TextInputClient* client) OVERRIDE;
virtual TextInputClient* GetTextInputClient() const OVERRIDE;
virtual void DispatchKeyEvent(const base::NativeEvent& native_event) OVERRIDE;
+ virtual void DispatchFabricatedKeyEvent(const ui::KeyEvent& event) OVERRIDE;
virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE;
virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE;
virtual void CancelComposition(const TextInputClient* client) OVERRIDE;
diff --git a/ui/base/test/dummy_input_method.cc b/ui/base/test/dummy_input_method.cc
index 34bdc36..d4d1c1b 100644
--- a/ui/base/test/dummy_input_method.cc
+++ b/ui/base/test/dummy_input_method.cc
@@ -32,8 +32,10 @@ TextInputClient* DummyInputMethod::GetTextInputClient() const {
return NULL;
}
-void DummyInputMethod::DispatchKeyEvent(
- const base::NativeEvent& native_key_event) {
+void DummyInputMethod::DispatchKeyEvent(const base::NativeEvent& event) {
+}
+
+void DummyInputMethod::DispatchFabricatedKeyEvent(const ui::KeyEvent& event) {
}
void DummyInputMethod::OnTextInputTypeChanged(const TextInputClient* client) {
@@ -46,7 +48,7 @@ void DummyInputMethod::CancelComposition(const TextInputClient* client) {
}
std::string DummyInputMethod::GetInputLocale() {
- return "";
+ return std::string();
}
base::i18n::TextDirection DummyInputMethod::GetInputTextDirection() {
diff --git a/ui/base/test/dummy_input_method.h b/ui/base/test/dummy_input_method.h
index bb32566..3f1b9c5 100644
--- a/ui/base/test/dummy_input_method.h
+++ b/ui/base/test/dummy_input_method.h
@@ -23,8 +23,8 @@ class DummyInputMethod : public InputMethod {
virtual void OnBlur() OVERRIDE;
virtual void SetFocusedTextInputClient(TextInputClient* client) OVERRIDE;
virtual TextInputClient* GetTextInputClient() const OVERRIDE;
- virtual void DispatchKeyEvent(
- const base::NativeEvent& native_key_event) OVERRIDE;
+ virtual void DispatchKeyEvent(const base::NativeEvent& event) OVERRIDE;
+ virtual void DispatchFabricatedKeyEvent(const ui::KeyEvent& event) OVERRIDE;
virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE;
virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE;
virtual void CancelComposition(const TextInputClient* client) OVERRIDE;