| 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() {
|
|
|