Index: chrome/browser/chromeos/notifications/balloon_view.cc |
diff --git a/chrome/browser/chromeos/notifications/balloon_view.cc b/chrome/browser/chromeos/notifications/balloon_view.cc |
index b6cf1abb706bab46083f6be36b6f73b1eb497fb7..82ecd302b60e1c2e69cf473f7d9c19a64d36b2ef 100644 |
--- a/chrome/browser/chromeos/notifications/balloon_view.cc |
+++ b/chrome/browser/chromeos/notifications/balloon_view.cc |
@@ -31,7 +31,8 @@ |
#include "views/controls/button/image_button.h" |
#include "views/controls/button/menu_button.h" |
#include "views/controls/label.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/controls/menu/view_menu_delegate.h" |
#include "views/widget/widget.h" |
@@ -61,7 +62,6 @@ class NotificationControlView : public views::View, |
: balloon_view_(view), |
close_button_(NULL), |
options_menu_contents_(NULL), |
- options_menu_menu_(NULL), |
options_menu_button_(NULL) { |
// TODO(oshima): make background transparent. |
set_background(views::Background::CreateSolidBackground(SK_ColorWHITE)); |
@@ -117,7 +117,21 @@ class NotificationControlView : public views::View, |
// views::ViewMenuDelegate implements. |
virtual void RunMenu(views::View* source, const gfx::Point& pt) { |
CreateOptionsMenu(); |
- options_menu_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); |
+ |
+ views::MenuModelAdapter menu_model_adapter(options_menu_contents_.get()); |
+ views::MenuItemView menu(&menu_model_adapter); |
+ menu_model_adapter.BuildMenu(&menu); |
oshima
2011/07/06 18:10:36
I felt this API a bit wired because you create men
rhashimoto
2011/07/06 18:27:33
I agree that it is a little strange. The model se
|
+ |
+ gfx::Point screen_location; |
+ views::View::ConvertPointToScreen(options_menu_button_, |
+ &screen_location); |
+ gfx::NativeWindow window = |
+ source->GetWidget()->GetTopLevelWidget()->GetNativeWindow(); |
+ menu.RunMenuAt(window, |
+ options_menu_button_, |
+ gfx::Rect(screen_location, options_menu_button_->size()), |
+ views::MenuItemView::TOPRIGHT, |
+ true); |
} |
// views::ButtonListener implements. |
@@ -167,8 +181,6 @@ class NotificationControlView : public views::View, |
// Figure out where to show the source info. |
options_menu_contents_->AddItem(kNoopCommand, source_label_text); |
options_menu_contents_->AddItem(kRevokePermissionCommand, label_text); |
- |
- options_menu_menu_.reset(new views::Menu2(options_menu_contents_.get())); |
} |
BalloonViewImpl* balloon_view_; |
@@ -177,7 +189,6 @@ class NotificationControlView : public views::View, |
// The options menu. |
scoped_ptr<ui::SimpleMenuModel> options_menu_contents_; |
- scoped_ptr<views::Menu2> options_menu_menu_; |
views::MenuButton* options_menu_button_; |
DISALLOW_COPY_AND_ASSIGN(NotificationControlView); |