Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(671)

Unified Diff: chrome/browser/ui/views/toolbar/wrench_menu.cc

Issue 399143004: Open the WrenchMenu on mouseover when dragging a browser action (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for drag/drop not in menu Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}

Powered by Google App Engine
This is Rietveld 408576698