diff options
author | yoichio@chromium.org <yoichio@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-14 17:24:08 +0000 |
---|---|---|
committer | yoichio@chromium.org <yoichio@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-14 17:24:08 +0000 |
commit | c4bf51469712fc583dc73d9a02019f3411216e85 (patch) | |
tree | dd5d95b7eb05bcf87e14819cc618353257befac5 /ui/views | |
parent | 1fd257aa8a206d829eee69eb6bfd76702b357980 (diff) | |
download | chromium_src-c4bf51469712fc583dc73d9a02019f3411216e85.zip chromium_src-c4bf51469712fc583dc73d9a02019f3411216e85.tar.gz chromium_src-c4bf51469712fc583dc73d9a02019f3411216e85.tar.bz2 |
bookmarks: Show context menu on empty bookmark folder.
BUG=110939
TEST=interactive_ui_tests
Review URL: https://chromiumcodereview.appspot.com/12558006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188110 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views')
-rw-r--r-- | ui/views/controls/menu/menu_controller.cc | 14 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_host_root_view.cc | 11 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_host_root_view.h | 3 |
3 files changed, 24 insertions, 4 deletions
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index c4e19f0..d9887bf 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc @@ -462,9 +462,17 @@ void MenuController::OnMouseReleased(SubmenuView* source, possible_drag_ = false; DCHECK(blocking_run_); MenuPart part = GetMenuPart(source, event.location()); - if (event.IsRightMouseButton() && (part.type == MenuPart::MENU_ITEM && - part.menu)) { - if (ShowContextMenu(part.menu, source, event)) + if (event.IsRightMouseButton() && part.type == MenuPart::MENU_ITEM) { + MenuItemView* menu = part.menu; + // |menu| is NULL means this event is from an empty menu or a separator. + // If it is from an empty menu, use parent context menu instead of that. + if (menu == NULL && + part.submenu->child_count() == 1 && + part.submenu->child_at(0)->id() + == views::MenuItemView::kEmptyMenuItemViewID) + menu = part.parent; + + if (menu != NULL && ShowContextMenu(menu, source, event)) return; } diff --git a/ui/views/controls/menu/menu_host_root_view.cc b/ui/views/controls/menu/menu_host_root_view.cc index fd165a8..0d903dc 100644 --- a/ui/views/controls/menu/menu_host_root_view.cc +++ b/ui/views/controls/menu/menu_host_root_view.cc @@ -5,6 +5,7 @@ #include "ui/views/controls/menu/menu_host_root_view.h" #include "ui/views/controls/menu/menu_controller.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/submenu_view.h" namespace views { @@ -19,7 +20,9 @@ MenuHostRootView::MenuHostRootView(Widget* widget, bool MenuHostRootView::OnMousePressed(const ui::MouseEvent& event) { forward_drag_to_menu_controller_ = !GetLocalBounds().Contains(event.location()) || - !RootView::OnMousePressed(event); + !RootView::OnMousePressed(event) || + DoesEventTargetEmptyMenuItem(event); + if (forward_drag_to_menu_controller_ && GetMenuController()) GetMenuController()->OnMousePressed(submenu_, event); return true; @@ -77,4 +80,10 @@ MenuController* MenuHostRootView::GetMenuController() { return submenu_ ? submenu_->GetMenuItem()->GetMenuController() : NULL; } +bool MenuHostRootView::DoesEventTargetEmptyMenuItem( + const ui::MouseEvent& event) { + View* view = GetEventHandlerForPoint(event.location()); + return view && view->id() == MenuItemView::kEmptyMenuItemViewID; +} + } // namespace views diff --git a/ui/views/controls/menu/menu_host_root_view.h b/ui/views/controls/menu/menu_host_root_view.h index 2b8d6ba5..16f59ef 100644 --- a/ui/views/controls/menu/menu_host_root_view.h +++ b/ui/views/controls/menu/menu_host_root_view.h @@ -38,6 +38,9 @@ class MenuHostRootView : public internal::RootView { // Returns the MenuController for this MenuHostRootView. MenuController* GetMenuController(); + // Returns true if event targets EmptyMenu. + bool DoesEventTargetEmptyMenuItem(const ui::MouseEvent& event); + // The SubmenuView we contain. SubmenuView* submenu_; |