Index: chrome/browser/ui/views/avatar_menu_button.cc |
diff --git a/chrome/browser/ui/views/avatar_menu_button.cc b/chrome/browser/ui/views/avatar_menu_button.cc |
index 252063fba6931968b3146a2ef6ea02260e41172f..171c417e4f8e2a9212768f42505254b738bb7883 100644 |
--- a/chrome/browser/ui/views/avatar_menu_button.cc |
+++ b/chrome/browser/ui/views/avatar_menu_button.cc |
@@ -4,21 +4,20 @@ |
#include "chrome/browser/ui/views/avatar_menu_button.h" |
+#include "chrome/browser/ui/views/avatar_menu.h" |
#include "ui/gfx/canvas_skia.h" |
#include "views/controls/menu/menu_model_adapter.h" |
#include "views/widget/widget.h" |
-// Menu should display below the image on the frame. This |
-// offset size depends on whether the frame is in glass or opaque mode. |
-const int kMenuDisplayOffset = 5; |
- |
static inline int Round(double x) { |
return static_cast<int>(x + 0.5); |
} |
AvatarMenuButton::AvatarMenuButton(const std::wstring& text, |
- ui::MenuModel* menu_model) |
+ ui::MenuModel* menu_model, |
+ Browser* browser) |
: MenuButton(NULL, text, this, false), |
+ browser_(browser), |
menu_model_(menu_model) { |
// In RTL mode, the avatar icon should be looking the opposite direction. |
EnableCanvasFlippingForRTLUI(true); |
@@ -58,13 +57,7 @@ void AvatarMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { |
if (!menu_model_.get()) |
return; |
- views::MenuModelAdapter menu_model_adapter(menu_model_.get()); |
- views::MenuItemView menu(&menu_model_adapter); |
- menu_model_adapter.BuildMenu(&menu); |
- |
- gfx::Point menu_point(pt.x(), pt.y() + kMenuDisplayOffset); |
- menu.RunMenuAt(source->GetWidget()->GetNativeWindow(), NULL, |
- gfx::Rect(pt, gfx::Size(0, 0)), |
- views::MenuItemView::TOPRIGHT, |
- true); |
+ AvatarMenu* avatar_menu = new AvatarMenu(browser_); |
+ avatar_menu->Init(menu_model_.get()); |
+ avatar_menu->RunMenu(this); |
sky
2011/07/08 21:01:44
Add a comment that AvatarMenu deletes itself.
sail
2011/07/08 21:53:57
Done.
|
} |