summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authorukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-30 07:04:53 +0000
committerukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-30 07:04:53 +0000
commitea1d9fa94c09ed23455f62ea224c70b4e255e430 (patch)
treeb7fe7030c106c5e3e9f21ae35e03c5b76acc0ca0 /webkit/glue
parent09b91f40ffe39969f5d46bc407a5688ad51b2cb0 (diff)
downloadchromium_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.cc27
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())