Index: chrome/browser/ui/views/browser_actions_container.cc |
diff --git a/chrome/browser/ui/views/browser_actions_container.cc b/chrome/browser/ui/views/browser_actions_container.cc |
index ebec34e192426c13b7b424c7f8ae04ec582eebb6..96f759cc00146d9fdfdec5cb050d18a36f1bf69a 100644 |
--- a/chrome/browser/ui/views/browser_actions_container.cc |
+++ b/chrome/browser/ui/views/browser_actions_container.cc |
@@ -42,7 +42,8 @@ |
#include "ui/gfx/canvas_skia.h" |
#include "views/controls/button/menu_button.h" |
#include "views/controls/button/text_button.h" |
-#include "views/controls/menu/menu_2.h" |
+#include "views/controls/menu/menu_item_view.h" |
+#include "views/controls/menu/menu_model_adapter.h" |
#include "views/drag_utils.h" |
#include "views/metrics.h" |
#include "views/window/window.h" |
@@ -67,7 +68,8 @@ BrowserActionButton::BrowserActionButton(const Extension* extension, |
extension_(extension), |
ALLOW_THIS_IN_INITIALIZER_LIST(tracker_(this)), |
showing_context_menu_(false), |
- panel_(panel) { |
+ panel_(panel), |
+ context_menu_menu_(NULL) { |
set_border(NULL); |
set_alignment(TextButton::ALIGN_CENTER); |
@@ -80,7 +82,7 @@ BrowserActionButton::BrowserActionButton(const Extension* extension, |
void BrowserActionButton::Destroy() { |
if (showing_context_menu_) { |
- context_menu_menu_->CancelMenu(); |
+ context_menu_menu_->Cancel(); |
MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
} else { |
delete this; |
@@ -215,14 +217,7 @@ bool BrowserActionButton::OnMousePressed(const views::MouseEvent& event) { |
MenuButton::OnMousePressed(event) : TextButton::OnMousePressed(event); |
} |
- // Get the top left point of this button in screen coordinates. |
- gfx::Point point = gfx::Point(0, 0); |
- ConvertPointToScreen(this, &point); |
- |
- // Make the menu appear below the button. |
- point.Offset(0, height()); |
- |
- ShowContextMenu(point, true); |
+ ShowContextMenu(gfx::Point(), true); |
return false; |
} |
@@ -259,11 +254,19 @@ void BrowserActionButton::ShowContextMenu(const gfx::Point& p, |
// Reconstructs the menu every time because the menu's contents are dynamic. |
context_menu_contents_ = |
new ExtensionContextMenuModel(extension(), panel_->browser(), panel_); |
- context_menu_menu_.reset(new views::Menu2(context_menu_contents_.get())); |
- context_menu_menu_->RunContextMenuAt(p); |
+ views::MenuModelAdapter menu_model_adapter(context_menu_contents_.get()); |
+ context_menu_menu_ = new views::MenuItemView(&menu_model_adapter); |
Peter Kasting
2011/06/09 00:39:09
Nit: Safer against leaks would be to stack-allocat
|
+ menu_model_adapter.BuildMenu(context_menu_menu_); |
+ |
+ gfx::Point screen_loc; |
+ views::View::ConvertPointToScreen(this, &screen_loc); |
+ context_menu_menu_->RunMenuAt(GetWindow()->GetNativeWindow(), NULL, |
+ gfx::Rect(screen_loc, size()), views::MenuItemView::TOPLEFT, true); |
SetButtonNotPushed(); |
showing_context_menu_ = false; |
+ delete context_menu_menu_; |
+ context_menu_menu_ = NULL; |
} |
void BrowserActionButton::SetButtonPushed() { |