Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(723)

Unified Diff: views/controls/button/button_dropdown.cc

Issue 7720012: Moves ownership of MenuItemView to MenuRunner as well as responbility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: views/controls/button/button_dropdown.cc
diff --git a/views/controls/button/button_dropdown.cc b/views/controls/button/button_dropdown.cc
index 16c03133962a33169646663af4dbe80e5e256aac..44b79d394fda844d75a008a23f96d29fcc7e14fc 100644
--- a/views/controls/button/button_dropdown.cc
+++ b/views/controls/button/button_dropdown.cc
@@ -13,6 +13,7 @@
#include "ui/base/models/menu_model.h"
#include "views/controls/menu/menu_item_view.h"
#include "views/controls/menu/menu_model_adapter.h"
+#include "views/controls/menu/menu_runner.h"
#include "views/widget/widget.h"
namespace views {
@@ -155,20 +156,21 @@ void ButtonDropDown::ShowDropDownMenu(gfx::NativeView window) {
if (model_) {
MenuModelAdapter menu_delegate(model_);
menu_delegate.set_triggerable_event_flags(triggerable_event_flags());
- MenuItemView menu(&menu_delegate);
- menu_delegate.BuildMenu(&menu);
-
- menu.RunMenuAt(GetWidget(), NULL,
- gfx::Rect(menu_position, gfx::Size(0, 0)),
- views::MenuItemView::TOPLEFT,
- true);
+ MenuRunner runner(menu_delegate.CreateMenu());
+ if (runner.RunMenuAt(GetWidget(), NULL,
+ gfx::Rect(menu_position, gfx::Size(0, 0)),
+ MenuItemView::TOPLEFT,
+ MenuRunner::HAS_MNEMONICS) == MenuRunner::MENU_DELETED)
+ return;
} else {
MenuDelegate menu_delegate;
- MenuItemView menu(&menu_delegate);
- menu.RunMenuAt(GetWidget(), NULL,
- gfx::Rect(menu_position, gfx::Size(0, 0)),
- views::MenuItemView::TOPLEFT,
- true);
+ MenuItemView* menu = new MenuItemView(&menu_delegate);
+ MenuRunner runner(menu);
+ if (runner.RunMenuAt(GetWidget(), NULL,
+ gfx::Rect(menu_position, gfx::Size(0, 0)),
+ views::MenuItemView::TOPLEFT,
+ MenuRunner::HAS_MNEMONICS) == MenuRunner::MENU_DELETED)
+ return;
}
// Need to explicitly clear mouse handler so that events get sent

Powered by Google App Engine
This is Rietveld 408576698