| 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..fb6eeb900eb6eaacb02184bbbb2eb29081c6d055 100644
|
| --- a/chrome/browser/ui/views/toolbar/wrench_menu.cc
|
| +++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc
|
| @@ -948,7 +948,8 @@ class WrenchMenu::RecentTabsMenuModelDelegate : public ui::MenuModelDelegate {
|
|
|
| WrenchMenu::WrenchMenu(Browser* browser,
|
| bool use_new_menu,
|
| - bool supports_new_separators)
|
| + bool supports_new_separators,
|
| + bool for_drop)
|
| : root_(NULL),
|
| browser_(browser),
|
| selected_menu_model_(NULL),
|
| @@ -956,7 +957,8 @@ WrenchMenu::WrenchMenu(Browser* browser,
|
| bookmark_menu_(NULL),
|
| feedback_menu_item_(NULL),
|
| use_new_menu_(use_new_menu),
|
| - supports_new_separators_(supports_new_separators) {
|
| + supports_new_separators_(supports_new_separators),
|
| + for_drop_(for_drop) {
|
| registrar_.Add(this, chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED,
|
| content::Source<Profile>(browser_->profile()));
|
| }
|
| @@ -985,8 +987,9 @@ 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 |
|
| + (for_drop_ ? views::MenuRunner::FOR_DROP : 0);
|
| + 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();
|
| }
|
| @@ -1225,6 +1233,12 @@ bool WrenchMenu::ShouldCloseOnDragComplete() {
|
| return false;
|
| }
|
|
|
| +bool WrenchMenu::InNestedDrag() {
|
| + // We're only in a nested drag (that our MenuController wouldn't know about)
|
| + // if the menu was opened specifically for a drag-and-drop operation.
|
| + return for_drop_;
|
| +}
|
| +
|
| void WrenchMenu::BookmarkModelChanged() {
|
| DCHECK(bookmark_menu_delegate_.get());
|
| if (!bookmark_menu_delegate_->is_mutating_model())
|
| @@ -1259,7 +1273,8 @@ void WrenchMenu::PopulateMenu(MenuItemView* parent,
|
|
|
| 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();
|
| }
|
|
|
|
|