summaryrefslogtreecommitdiffstats
path: root/views/controls
diff options
context:
space:
mode:
authorsuzhe@chromium.org <suzhe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-20 23:07:48 +0000
committersuzhe@chromium.org <suzhe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-20 23:07:48 +0000
commitccbb7b6ec086e614efa111ecb5e51cb0ef1730ed (patch)
tree8b460140e85bd82af24f8b6a8ddbe334098cd2ae /views/controls
parent9d3fd748881fc6b4000efea6471b90aead6b5eb1 (diff)
downloadchromium_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.cc12
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