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

Unified Diff: chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.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: Nit 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/extension_toolbar_menu_view.cc
diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc
index e8a01e2c702ba00aa8a543baa18238ff35e56cb9..42f2f450813c1d4ecae4a6e1b0e8190ff0f518d5 100644
--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc
+++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc
@@ -7,6 +7,7 @@
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
+#include "chrome/browser/ui/views/toolbar/wrench_menu.h"
#include "ui/views/controls/menu/menu_item_view.h"
namespace {
@@ -18,15 +19,29 @@ const int kVerticalPadding = 8;
} // namespace
-ExtensionToolbarMenuView::ExtensionToolbarMenuView(Browser* browser)
- : browser_(browser) {
- BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
+ExtensionToolbarMenuView::ExtensionToolbarMenuView(Browser* browser,
+ WrenchMenu* wrench_menu)
+ : browser_(browser),
+ wrench_menu_(wrench_menu),
+ container_(NULL),
+ browser_actions_container_observer_(this),
+ weak_factory_(this) {
+ BrowserActionsContainer* main =
+ BrowserView::GetBrowserViewForBrowser(browser)
+ ->toolbar()->browser_actions();
container_ = new BrowserActionsContainer(
browser_,
NULL, // No owner view, means no extra keybindings are registered.
- browser_view->GetToolbarView()->browser_actions());
+ main);
container_->Init();
AddChildView(container_);
+
+ // If we were opened for a drop command, we have to wait for the drop to
+ // finish so we can close the wrench menu.
+ if (wrench_menu_->for_drop()) {
+ browser_actions_container_observer_.Add(container_);
+ browser_actions_container_observer_.Add(main);
+ }
}
ExtensionToolbarMenuView::~ExtensionToolbarMenuView() {
@@ -48,3 +63,18 @@ void ExtensionToolbarMenuView::Layout() {
SetBounds(views::MenuItemView::label_start(), 0, sz.width(), height);
container_->SetBounds(0, 0, sz.width(), height);
}
+
+void ExtensionToolbarMenuView::OnBrowserActionDragDone() {
+ DCHECK(wrench_menu_->for_drop());
+ // We have to post this in a message loop because it results in the menu being
+ // closed, which deletes this view. Since this is in an observer method, that
+ // could break the BrowserActionsContainer's observer list if done here.
sky 2014/07/18 19:36:53 observer list handles removal while notifying.
Devlin 2014/07/18 21:38:31 Oh, nifty. Coulda sworn it didn't... Done.
+ base::MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&ExtensionToolbarMenuView::CloseWrenchMenu,
+ weak_factory_.GetWeakPtr()));
+}
+
+void ExtensionToolbarMenuView::CloseWrenchMenu() {
+ wrench_menu_->CloseMenu();
+}

Powered by Google App Engine
This is Rietveld 408576698