From ca13d804c304a61711352044022971ec39f9d4f8 Mon Sep 17 00:00:00 2001 From: "jcampan@chromium.org" Date: Thu, 14 May 2009 04:28:07 +0000 Subject: Clean-up of the accelerator code. The View::CanProcessTabKeyEvents and View::ShouldLookUpAccelerator have both been replaced with a new method, SkipDefaultKeyEventProcessing. This new method provides for a view that has focus a way to prevent a key event from being processed for tab traversal or accelerators. Also, fixed a regression where the Ctrl-Tab accelerator was not working anymore when the omnibox was focused. BUG=11538 TEST=Thoroughly test accelerators, making sure they work when the page, the omnibox and the find-bar text-field have focus. Also test that tab traversal still work as expected in the browser and in the option dialog. Review URL: http://codereview.chromium.org/113307 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16037 0039d316-1c4b-4281-b951-d872f2087c98 --- views/controls/menu/chrome_menu.cc | 5 +++++ views/controls/menu/chrome_menu.h | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'views/controls/menu') diff --git a/views/controls/menu/chrome_menu.cc b/views/controls/menu/chrome_menu.cc index 203fb88..a1a6809 100644 --- a/views/controls/menu/chrome_menu.cc +++ b/views/controls/menu/chrome_menu.cc @@ -23,6 +23,7 @@ #include "skia/ext/skia_utils_win.h" #include "views/border.h" #include "views/drag_utils.h" +#include "views/focus/focus_manager.h" #include "views/view_constants.h" #include "views/widget/root_view.h" #include "views/widget/widget_win.h" @@ -998,6 +999,10 @@ void SubmenuView::ReleaseCapture() { host_->ReleaseCapture(); } +bool SubmenuView::SkipDefaultKeyEventProcessing(const views::KeyEvent& e) { + return views::FocusManager::IsTabTraversalKeyEvent(e); +} + void SubmenuView::SetDropMenuItem(MenuItemView* item, MenuDelegate::DropPosition position) { if (drop_item_ == item && drop_position_ == position) diff --git a/views/controls/menu/chrome_menu.h b/views/controls/menu/chrome_menu.h index f19af15..6bb25c7 100644 --- a/views/controls/menu/chrome_menu.h +++ b/views/controls/menu/chrome_menu.h @@ -16,6 +16,7 @@ #include "base/task.h" #include "third_party/skia/include/core/SkBitmap.h" #include "views/controls/menu/controller.h" +#include "views/event.h" #include "views/view.h" namespace views { @@ -553,12 +554,12 @@ class SubmenuView : public View { // not captured. void ReleaseCapture(); + // Overriden from View to prevent tab from doing anything. + virtual bool SkipDefaultKeyEventProcessing(const views::KeyEvent& e); + // Returns the parent menu item we're showing children for. MenuItemView* GetMenuItem() const { return parent_menu_item_; } - // Overriden to return true. This prevents tab from doing anything. - virtual bool CanProcessTabKeyEvents() { return true; } - // Set the drop item and position. void SetDropMenuItem(MenuItemView* item, MenuDelegate::DropPosition position); -- cgit v1.1