Chromium Code Reviews| Index: chrome/browser/chromeos/status/network_menu.cc |
| diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc |
| index 7aeb2db934dcdcbe2df41f99e3f0f5a7b78e0291..61901df37e58864713d7f9d36159f9e6ba30ea86 100644 |
| --- a/chrome/browser/chromeos/status/network_menu.cc |
| +++ b/chrome/browser/chromeos/status/network_menu.cc |
| @@ -37,6 +37,7 @@ |
| #include "ui/gfx/skbitmap_operations.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/controls/menu/submenu_view.h" |
| #include "views/widget/widget.h" |
| @@ -1029,11 +1030,12 @@ NetworkMenu::NetworkMenu(Delegate* delegate, bool is_browser_mode) |
| : delegate_(delegate), |
| is_browser_mode_(is_browser_mode), |
| refreshing_menu_(false), |
| + menu_item_view_(NULL), |
| min_width_(kDefaultMinimumWidth) { |
| main_menu_model_.reset(new MainMenuModel(this)); |
| menu_model_adapter_.reset( |
| new views::MenuModelAdapter(main_menu_model_.get())); |
| - menu_item_view_.reset(new views::MenuItemView(menu_model_adapter_.get())); |
| + menu_item_view_ = new views::MenuItemView(menu_model_adapter_.get()); |
| menu_item_view_->set_has_icons(true); |
| menu_item_view_->set_menu_position( |
| views::MenuItemView::POSITION_BELOW_BOUNDS); |
| @@ -1047,7 +1049,7 @@ ui::MenuModel* NetworkMenu::GetMenuModel() { |
| } |
| void NetworkMenu::CancelMenu() { |
| - menu_item_view_->Cancel(); |
| + menu_runner_->Cancel(); |
| } |
| void NetworkMenu::UpdateMenu() { |
| @@ -1057,8 +1059,8 @@ void NetworkMenu::UpdateMenu() { |
| main_menu_model_->InitMenuItems( |
| is_browser_mode(), delegate_->ShouldOpenButtonOptions()); |
| - menu_model_adapter_->BuildMenu(menu_item_view_.get()); |
| - SetMenuMargins(menu_item_view_.get(), kTopMargin, kBottomMargin); |
| + menu_model_adapter_->BuildMenu(menu_item_view_); |
| + SetMenuMargins(menu_item_view_, kTopMargin, kBottomMargin); |
| menu_item_view_->ChildrenChanged(); |
| refreshing_menu_ = false; |
| @@ -1074,9 +1076,10 @@ void NetworkMenu::RunMenu(views::View* source) { |
| views::View::ConvertPointToScreen(source, &screen_location); |
| gfx::Rect bounds(screen_location, source->size()); |
| menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_); |
| - menu_item_view_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), |
| - delegate_->GetMenuButton(), bounds, |
| - views::MenuItemView::TOPRIGHT, true); |
| + if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), |
|
Dmitry Polukhin
2011/08/25 09:01:45
It looks like menu_runner_ is not set to initializ
|
| + delegate_->GetMenuButton(), bounds, views::MenuItemView::TOPRIGHT, |
| + views::MenuRunner::HAS_MNEMONICS) == views::MenuRunner::MENU_DELETED) |
| + return; |
| } |
| void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const { |