diff options
author | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-30 07:04:53 +0000 |
---|---|---|
committer | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-30 07:04:53 +0000 |
commit | ea1d9fa94c09ed23455f62ea224c70b4e255e430 (patch) | |
tree | b7fe7030c106c5e3e9f21ae35e03c5b76acc0ca0 /webkit/glue | |
parent | 09b91f40ffe39969f5d46bc407a5688ad51b2cb0 (diff) | |
download | chromium_src-ea1d9fa94c09ed23455f62ea224c70b4e255e430.zip chromium_src-ea1d9fa94c09ed23455f62ea224c70b4e255e430.tar.gz chromium_src-ea1d9fa94c09ed23455f62ea224c70b4e255e430.tar.bz2 |
Workaround fix for Alt-Gr case.
On Windows, "Alt" key will set both alt and meta is on (issue 2215).
But Alt-Gr is used to insert alternate character.
BUG=10846
Review URL: http://codereview.chromium.org/99216
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14932 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/editor_client_impl.cc | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/webkit/glue/editor_client_impl.cc b/webkit/glue/editor_client_impl.cc index 6f27d16..517ad6a 100644 --- a/webkit/glue/editor_client_impl.cc +++ b/webkit/glue/editor_client_impl.cc @@ -613,16 +613,20 @@ bool EditorClientImpl::handleEditingKeyboardEvent( // Here we need to filter key events. // On Gtk/Linux, it emits key events with ASCII text and ctrl on for ctrl-<x>. - // In Webkit, EditorClient::handleKeyboardEvent in + // In Webkit, EditorClient::handleKeyboardEvent in // WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp drop such events. // On Mac, it emits key events with ASCII text and meta on for Command-<x>. // These key events should not emit text insert event. // Alt key would be used to insert alternative character, so we should let - // through. Also note that Ctrl-Alt combination equals to AltGr key which is + // through. Also note that Ctrl-Alt combination equals to AltGr key which is // also used to insert alternative character. // http://code.google.com/p/chromium/issues/detail?id=10846 - // In summary, we can't think of a scenario where you'd use control w/o alt or - // meta to do insertion of a ASCII character. + // Windows sets both alt and meta are on when "Alt" key pressed. + // http://code.google.com/p/chromium/issues/detail?id=2215 + // Also, we should not rely on an assumption that keyboards don't + // send ASCII characters when pressing a control key on Windows, + // which may be configured to do it so by user. + // See also http://en.wikipedia.org/wiki/Keyboard_Layout // TODO(ukai): investigate more detail for various keyboard layout. if (evt->keyEvent()->text().length() == 1) { UChar ch = evt->keyEvent()->text()[0U]; @@ -631,11 +635,18 @@ bool EditorClientImpl::handleEditingKeyboardEvent( // unexpected behaviour if (ch < ' ') return false; +#if !defined(OS_WIN) // Don't insert ASCII character if ctrl w/o alt or meta is on. - if (ch < 0x80 && - ((evt->keyEvent()->ctrlKey() && !evt->keyEvent()->altKey()) || - evt->keyEvent()->metaKey())) - return false; + // On Mac, we should ignore events when meta is on (Command-<x>). + if (ch < 0x80) { + if (evt->keyEvent()->ctrlKey() && !evt->keyEvent()->altKey()) + return false; +#if defined(OS_MACOSX) + if (evt->keyEvent()->metaKey()) + return false; +#endif + } +#endif } if (!frame->editor()->canEdit()) |