diff options
author | cpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-19 18:26:41 +0000 |
---|---|---|
committer | cpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-19 18:26:41 +0000 |
commit | 3386fbc89c9cf88be15bec171dd63019938876bf (patch) | |
tree | 8522e490298b4007d2f7e79087e493fdf437fc6f /ui | |
parent | 4cf87e323247b338bee12f9356c5ba4e5c780774 (diff) | |
download | chromium_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.cc | 5 | ||||
-rw-r--r-- | ui/base/ime/input_method.h | 2 | ||||
-rw-r--r-- | ui/base/ime/input_method_ibus.cc | 3 | ||||
-rw-r--r-- | ui/base/ime/input_method_ibus.h | 1 | ||||
-rw-r--r-- | ui/base/ime/mock_input_method.cc | 9 | ||||
-rw-r--r-- | ui/base/ime/mock_input_method.h | 2 | ||||
-rw-r--r-- | ui/base/test/dummy_input_method.cc | 8 | ||||
-rw-r--r-- | ui/base/test/dummy_input_method.h | 4 |
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; |