Index: chrome/browser/ui/views/toolbar/wrench_menu.cc |
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.cc b/chrome/browser/ui/views/toolbar/wrench_menu.cc |
index 026ea2a1783f90ed800e3a0858aa351d14b29584..398efaeb1b33bffcd49768a4de7c14ff2f9dc2ca 100644 |
--- a/chrome/browser/ui/views/toolbar/wrench_menu.cc |
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc |
@@ -572,7 +572,7 @@ class WrenchMenu::CutCopyPasteView : public WrenchMenuView { |
copy_index); |
InMenuButton* paste = CreateAndConfigureButton( |
IDS_PASTE, |
- menu->use_new_menu() && menu->supports_new_separators_ ? |
+ menu->use_new_menu() && menu->supports_new_separators() ? |
InMenuButtonBackground::CENTER_BUTTON : |
InMenuButtonBackground::RIGHT_BUTTON, |
paste_index); |
@@ -654,7 +654,7 @@ class WrenchMenu::ZoomView : public WrenchMenuView { |
zoom_label_->SetHorizontalAlignment(gfx::ALIGN_RIGHT); |
InMenuButtonBackground* center_bg = new InMenuButtonBackground( |
- menu->use_new_menu() && menu->supports_new_separators_ ? |
+ menu->use_new_menu() && menu->supports_new_separators() ? |
InMenuButtonBackground::RIGHT_BUTTON : |
InMenuButtonBackground::CENTER_BUTTON, |
menu->use_new_menu()); |
@@ -946,17 +946,14 @@ class WrenchMenu::RecentTabsMenuModelDelegate : public ui::MenuModelDelegate { |
// WrenchMenu ------------------------------------------------------------------ |
-WrenchMenu::WrenchMenu(Browser* browser, |
- bool use_new_menu, |
- bool supports_new_separators) |
+WrenchMenu::WrenchMenu(Browser* browser, int run_flags) |
: root_(NULL), |
browser_(browser), |
selected_menu_model_(NULL), |
selected_index_(0), |
bookmark_menu_(NULL), |
feedback_menu_item_(NULL), |
- use_new_menu_(use_new_menu), |
- supports_new_separators_(supports_new_separators) { |
+ run_flags_(run_flags) { |
registrar_.Add(this, chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED, |
content::Source<Profile>(browser_->profile())); |
} |
@@ -985,8 +982,14 @@ void WrenchMenu::Init(ui::MenuModel* model) { |
DCHECK(command_id_to_entry_.find(i) == command_id_to_entry_.end()); |
#endif // defined(DEBUG) |
- menu_runner_.reset( |
- new views::MenuRunner(root_, views::MenuRunner::HAS_MNEMONICS)); |
+ int32 types = views::MenuRunner::HAS_MNEMONICS; |
+ if (for_drop()) { |
+ // We add NESTED_DRAG since currently the only operation to open the wrench |
+ // menu for is an extension action drag, which is controlled by the child |
+ // BrowserActionsContainer view. |
+ types |= views::MenuRunner::FOR_DROP | views::MenuRunner::NESTED_DRAG; |
+ } |
+ menu_runner_.reset(new views::MenuRunner(root_, types)); |
} |
void WrenchMenu::RunMenu(views::MenuButton* host) { |
@@ -1011,6 +1014,11 @@ void WrenchMenu::RunMenu(views::MenuButton* host) { |
selected_menu_model_->ActivatedAt(selected_index_); |
} |
+void WrenchMenu::CloseMenu() { |
+ if (menu_runner_.get()) |
+ menu_runner_->Cancel(); |
+} |
+ |
bool WrenchMenu::IsShowing() { |
return menu_runner_.get() && menu_runner_->IsRunning(); |
} |
@@ -1252,14 +1260,15 @@ void WrenchMenu::PopulateMenu(MenuItemView* parent, |
// The button container menu items have a special height which we have to |
// use instead of the normal height. |
int height = 0; |
- if (use_new_menu_ && |
+ if (use_new_menu() && |
(model->GetCommandIdAt(i) == IDC_CUT || |
model->GetCommandIdAt(i) == IDC_ZOOM_MINUS)) |
height = kMenuItemContainingButtonsHeight; |
scoped_ptr<ExtensionToolbarMenuView> extension_toolbar_menu_view; |
if (model->GetCommandIdAt(i) == IDC_EXTENSIONS_OVERFLOW_MENU) { |
- extension_toolbar_menu_view.reset(new ExtensionToolbarMenuView(browser_)); |
+ extension_toolbar_menu_view.reset( |
+ new ExtensionToolbarMenuView(browser_, this)); |
height = extension_toolbar_menu_view->GetPreferredSize().height(); |
} |
@@ -1363,7 +1372,7 @@ MenuItemView* WrenchMenu::AddMenuItem(MenuItemView* parent, |
if (menu_item) { |
// Flush all buttons to the right side of the menu for the new menu type. |
- menu_item->set_use_right_margin(!use_new_menu_); |
+ menu_item->set_use_right_margin(!use_new_menu()); |
menu_item->SetVisible(model->IsVisibleAt(model_index)); |
if (menu_type == MenuModel::TYPE_COMMAND && model->HasIcons()) { |