diff options
author | suzhe@chromium.org <suzhe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 23:07:48 +0000 |
---|---|---|
committer | suzhe@chromium.org <suzhe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 23:07:48 +0000 |
commit | ccbb7b6ec086e614efa111ecb5e51cb0ef1730ed (patch) | |
tree | 8b460140e85bd82af24f8b6a8ddbe334098cd2ae /views/controls | |
parent | 9d3fd748881fc6b4000efea6471b90aead6b5eb1 (diff) | |
download | chromium_src-ccbb7b6ec086e614efa111ecb5e51cb0ef1730ed.zip chromium_src-ccbb7b6ec086e614efa111ecb5e51cb0ef1730ed.tar.gz chromium_src-ccbb7b6ec086e614efa111ecb5e51cb0ef1730ed.tar.bz2 |
[Linux Views]Handle focus traversing correctly.
This CL adds a wrapper window class on top of GtkWindow to intercept its
move_focus method, so that we can handle focus traversing by ourselves.
BUG=49204: Chrome/views toolbar "tab" accessibility broken.
TEST=See bug report.
Review URL: http://codereview.chromium.org/3013006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53123 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/controls')
-rw-r--r-- | views/controls/menu/menu_controller.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/views/controls/menu/menu_controller.cc b/views/controls/menu/menu_controller.cc index 22540e3..3375a6e 100644 --- a/views/controls/menu/menu_controller.cc +++ b/views/controls/menu/menu_controller.cc @@ -813,10 +813,11 @@ bool MenuController::Dispatch(const MSG& msg) { #else bool MenuController::Dispatch(GdkEvent* event) { - gtk_main_do_event(event); - if (exit_type_ == EXIT_ALL || exit_type_ == EXIT_DESTROYED) + if (exit_type_ == EXIT_ALL || exit_type_ == EXIT_DESTROYED) { + gtk_main_do_event(event); return false; + } switch (event->type) { case GDK_KEY_PRESS: { @@ -836,10 +837,17 @@ bool MenuController::Dispatch(GdkEvent* event) { return true; } + case GDK_KEY_RELEASE: + return true; + default: break; } + // We don not want Gtk to handle keyboard events, otherwise if they get + // handled by Gtk, unexpected behavior may occur. For example Tab key + // may cause unexpected focus traversing. + gtk_main_do_event(event); return exit_type_ == EXIT_NONE; } #endif |