summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-17 08:47:50 +0000
committeryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-17 08:47:50 +0000
commit1d1b4a34f25746bb8d645051bf5aedff31781c0f (patch)
tree75366090a6f4c4f5782af027472f5b93bffe180f
parent5d30093dfcb030d02b5e3873ae77b30fe660d9de (diff)
downloadchromium_src-1d1b4a34f25746bb8d645051bf5aedff31781c0f.zip
chromium_src-1d1b4a34f25746bb8d645051bf5aedff31781c0f.tar.gz
chromium_src-1d1b4a34f25746bb8d645051bf5aedff31781c0f.tar.bz2
Do not use ui::GetCharacterFromXEvent when Control is pressed.
The function does not take into account the modifier. BUG=107837 TEST=see the bug Review URL: http://codereview.chromium.org/8964011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114916 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ui/base/ime/input_method_ibus.cc4
-rw-r--r--ui/base/ime/mock_input_method.cc7
2 files changed, 7 insertions, 4 deletions
diff --git a/ui/base/ime/input_method_ibus.cc b/ui/base/ime/input_method_ibus.cc
index 661495d..afc657e 100644
--- a/ui/base/ime/input_method_ibus.cc
+++ b/ui/base/ime/input_method_ibus.cc
@@ -653,7 +653,9 @@ void InputMethodIBus::ProcessUnfilteredKeyPressEvent(
const uint32 state =
EventFlagsFromXFlags(GetKeyEvent(native_event)->state);
- uint16 ch = ui::GetCharacterFromXEvent(native_event);
+ uint16 ch = 0;
+ if (!(state & ui::EF_CONTROL_DOWN))
+ ch = ui::GetCharacterFromXEvent(native_event);
if (!ch) {
ch = ui::GetCharacterFromKeyCode(
ui::KeyboardCodeFromNative(native_event), state);
diff --git a/ui/base/ime/mock_input_method.cc b/ui/base/ime/mock_input_method.cc
index 9d5c7dc..5087b98 100644
--- a/ui/base/ime/mock_input_method.cc
+++ b/ui/base/ime/mock_input_method.cc
@@ -62,8 +62,7 @@ void MockInputMethod::DispatchKeyEvent(const base::NativeEvent& native_event) {
// On key release, just dispatch it.
delegate_->DispatchKeyEventPostIME(native_event);
} else {
- const uint32 state =
- EventFlagsFromXFlags(reinterpret_cast<XKeyEvent*>(native_event)->state);
+ const uint32 state = EventFlagsFromXFlags(native_event->xkey.state);
if (consume_next_key_) {
// Send the VKEY_PROCESSKEY RawKeyDown event.
SendFakeProcessKeyEvent(true, state);
@@ -73,7 +72,9 @@ void MockInputMethod::DispatchKeyEvent(const base::NativeEvent& native_event) {
if (text_input_client_) {
// then send a Char event via ui::TextInputClient.
const KeyboardCode key_code = ui::KeyboardCodeFromNative(native_event);
- uint16 ch = ui::GetCharacterFromXEvent(native_event);
+ uint16 ch = 0;
+ if (!(state & ui::EF_CONTROL_DOWN))
+ ch = ui::GetCharacterFromXEvent(native_event);
if (!ch)
ch = ui::GetCharacterFromKeyCode(key_code, state);
if (ch)