Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8380)

Unified Diff: chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc

Issue 7720012: Moves ownership of MenuItemView to MenuRunner as well as responbility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
index d6f5e81b45af0d2f7de64d3314e4149ffc424ca2..964bc6f6f192c4b5d6b2f0fb850a5934b03b8db4 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
@@ -24,6 +24,7 @@
#include "ui/base/dragdrop/os_exchange_data.h"
#include "ui/base/resource/resource_bundle.h"
#include "views/controls/button/menu_button.h"
+#include "views/controls/menu/menu_runner.h"
#include "views/widget/widget.h"
using views::MenuItemView;
@@ -40,6 +41,7 @@ BookmarkMenuController::BookmarkMenuController(Profile* profile,
bookmark_bar_(NULL) {
menu_delegate_->Init(this, NULL, node, start_child_index,
BookmarkMenuDelegate::HIDE_OTHER_FOLDER);
+ menu_runner_.reset(new views::MenuRunner(menu_delegate_->menu()));
}
void BookmarkMenuController::RunMenuAt(BookmarkBarView* bookmark_bar,
@@ -49,27 +51,19 @@ void BookmarkMenuController::RunMenuAt(BookmarkBarView* bookmark_bar,
DCHECK(menu_button);
MenuItemView::AnchorPosition anchor;
bookmark_bar_->GetAnchorPositionForButton(menu_button, &anchor);
- RunMenuAt(menu_button, anchor, for_drop);
-}
-
-void BookmarkMenuController::RunMenuAt(
- views::MenuButton* button,
- MenuItemView::AnchorPosition position,
- bool for_drop) {
gfx::Point screen_loc;
- views::View::ConvertPointToScreen(button, &screen_loc);
+ views::View::ConvertPointToScreen(menu_button, &screen_loc);
// Subtract 1 from the height to make the popup flush with the button border.
- gfx::Rect bounds(screen_loc.x(), screen_loc.y(), button->width(),
- button->height() - 1);
+ gfx::Rect bounds(screen_loc.x(), screen_loc.y(), menu_button->width(),
+ menu_button->height() - 1);
for_drop_ = for_drop;
menu_delegate_->profile()->GetBookmarkModel()->AddObserver(this);
- if (for_drop) {
- menu()->RunMenuForDropAt(menu_delegate_->parent(), bounds, position);
- } else {
- menu()->RunMenuAt(menu_delegate_->parent(), button, bounds, position,
- false);
+ // We only delete ourself after the menu completes, so we can safely ignore
+ // the return value.
+ ignore_result(menu_runner_->RunMenuAt(menu_delegate_->parent(), menu_button,
+ bounds, anchor, for_drop ? views::MenuRunner::FOR_DROP : 0));
+ if (!for_drop)
delete this;
- }
}
void BookmarkMenuController::Cancel() {

Powered by Google App Engine
This is Rietveld 408576698