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..49e4ec823d74ddfe9550a889f21684fe2974ece0 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,28 @@ 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) { |
+ 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 +62,8 @@ 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()); |
+ wrench_menu_->CloseMenu(); |
+} |