summaryrefslogtreecommitdiffstats
path: root/views/controls/button/button_dropdown.cc
diff options
context:
space:
mode:
Diffstat (limited to 'views/controls/button/button_dropdown.cc')
-rw-r--r--views/controls/button/button_dropdown.cc26
1 files changed, 14 insertions, 12 deletions
diff --git a/views/controls/button/button_dropdown.cc b/views/controls/button/button_dropdown.cc
index 16c0313..44b79d3 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