| Index: views/controls/menu/native_menu_x.cc
|
| diff --git a/views/controls/menu/native_menu_x.cc b/views/controls/menu/native_menu_x.cc
|
| index eb960422d0a9cf4ba07f2340c8b429948a75ca94..b07389e4a3ffb56f117a6db941e1a6d5dd10b335 100644
|
| --- a/views/controls/menu/native_menu_x.cc
|
| +++ b/views/controls/menu/native_menu_x.cc
|
| @@ -9,13 +9,15 @@
|
| #include "ui/gfx/canvas_skia.h"
|
| #include "ui/gfx/skia_util.h"
|
| #include "views/controls/menu/menu_2.h"
|
| +#include "views/controls/menu/menu_runner.h"
|
| #include "views/controls/menu/submenu_view.h"
|
|
|
| namespace views {
|
|
|
| NativeMenuX::NativeMenuX(Menu2* menu)
|
| : model_(menu->model()),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(root_(new MenuItemView(this))) {
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(root_(new MenuItemView(this))),
|
| + menu_runner_(new MenuRunner(root_)) {
|
| }
|
|
|
| NativeMenuX::~NativeMenuX() {
|
| @@ -23,10 +25,13 @@ NativeMenuX::~NativeMenuX() {
|
|
|
| // MenuWrapper implementation:
|
| void NativeMenuX::RunMenuAt(const gfx::Point& point, int alignment) {
|
| + // TODO: this should really return the value from MenuRunner.
|
| UpdateStates();
|
| - root_->RunMenuAt(NULL, NULL, gfx::Rect(point, gfx::Size()),
|
| - alignment == Menu2::ALIGN_TOPLEFT ? MenuItemView::TOPLEFT :
|
| - MenuItemView::TOPRIGHT, true);
|
| + if (menu_runner_->RunMenuAt(NULL, NULL, gfx::Rect(point, gfx::Size()),
|
| + alignment == Menu2::ALIGN_TOPLEFT ? MenuItemView::TOPLEFT :
|
| + MenuItemView::TOPRIGHT, MenuRunner::HAS_MNEMONICS) ==
|
| + MenuRunner::MENU_DELETED)
|
| + return;
|
| }
|
|
|
| void NativeMenuX::CancelMenu() {
|
| @@ -34,10 +39,9 @@ void NativeMenuX::CancelMenu() {
|
| }
|
|
|
| void NativeMenuX::Rebuild() {
|
| - if (SubmenuView* submenu = root_->GetSubmenu()) {
|
| + if (SubmenuView* submenu = root_->GetSubmenu())
|
| submenu->RemoveAllChildViews(true);
|
| - }
|
| - AddMenuItemsFromModel(root_.get(), model_);
|
| + AddMenuItemsFromModel(root_, model_);
|
| }
|
|
|
| void NativeMenuX::UpdateStates() {
|
|
|