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 94adeb1244953afc78f2fb0e638595674f5bb20c..cd3596c507135cc545d1a503b528f991e0407c33 100644 |
--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc |
+++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc |
@@ -4,6 +4,9 @@ |
#include "chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h" |
+#include "base/bind.h" |
+#include "base/message_loop/message_loop.h" |
+#include "base/time/time.h" |
#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" |
@@ -15,7 +18,8 @@ ExtensionToolbarMenuView::ExtensionToolbarMenuView(Browser* browser, |
: browser_(browser), |
wrench_menu_(wrench_menu), |
container_(NULL), |
- browser_actions_container_observer_(this) { |
+ browser_actions_container_observer_(this), |
+ weak_factory_(this) { |
BrowserActionsContainer* main = |
BrowserView::GetBrowserViewForBrowser(browser_) |
->toolbar()->browser_actions(); |
@@ -49,6 +53,18 @@ void ExtensionToolbarMenuView::Layout() { |
} |
void ExtensionToolbarMenuView::OnBrowserActionDragDone() { |
+ // The delay before we close the wrench menu if this was opened for a drop so |
+ // that the user can see a browser action if one was moved. |
+ static const int kCloseMenuDelay = 300; |
+ |
DCHECK(wrench_menu_->for_drop()); |
+ base::MessageLoop::current()->PostDelayedTask( |
+ FROM_HERE, |
+ base::Bind(&ExtensionToolbarMenuView::CloseWrenchMenu, |
+ weak_factory_.GetWeakPtr()), |
+ base::TimeDelta::FromMilliseconds(kCloseMenuDelay)); |
+} |
+ |
+void ExtensionToolbarMenuView::CloseWrenchMenu() { |
wrench_menu_->CloseMenu(); |
} |