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 |