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

Unified Diff: chrome/browser/ui/views/tabs/browser_tab_strip_controller.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/tabs/browser_tab_strip_controller.cc
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
index 7bca14723a9975450bd1707ca323aa5f8dec34ec..1a9ab98717bd9ac1a82ff74f47397a6b71428719 100644
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
@@ -24,6 +24,7 @@
#include "content/common/notification_service.h"
#include "views/controls/menu/menu_item_view.h"
#include "views/controls/menu/menu_model_adapter.h"
+#include "views/controls/menu/menu_runner.h"
#include "views/widget/widget.h"
static TabRendererData::NetworkState TabContentsNetworkState(
@@ -40,19 +41,18 @@ class BrowserTabStripController::TabContextMenuContents
public:
TabContextMenuContents(BaseTab* tab,
BrowserTabStripController* controller)
- : ALLOW_THIS_IN_INITIALIZER_LIST(
- model_(this,
- controller->model_,
- controller->tabstrip_->GetModelIndexOfBaseTab(tab))),
- menu_model_adapter_(&model_),
- menu_(&menu_model_adapter_),
- tab_(tab),
+ : tab_(tab),
controller_(controller),
last_command_(TabStripModel::CommandFirst) {
- menu_model_adapter_.BuildMenu(&menu_);
+ model_.reset(new TabMenuModel(
+ this, controller->model_,
+ controller->tabstrip_->GetModelIndexOfBaseTab(tab)));
+ menu_model_adapter_.reset(new views::MenuModelAdapter(model_.get()));
+ menu_runner_.reset(
+ new views::MenuRunner(menu_model_adapter_->CreateMenu()));
}
+
virtual ~TabContextMenuContents() {
- menu_.Cancel();
if (controller_)
controller_->tabstrip_->StopAllHighlighting();
}
@@ -62,9 +62,11 @@ class BrowserTabStripController::TabContextMenuContents
}
void RunMenuAt(const gfx::Point& point) {
- menu_.RunMenuAt(tab_->GetWidget(), NULL, gfx::Rect(point, gfx::Size()),
- views::MenuItemView::TOPLEFT, true);
- // We could be gone now. Assume |this| is junk!
+ if (menu_runner_->RunMenuAt(
+ tab_->GetWidget(), NULL, gfx::Rect(point, gfx::Size()),
+ views::MenuItemView::TOPLEFT, views::MenuRunner::HAS_MNEMONICS) ==
+ views::MenuRunner::MENU_DELETED)
+ return;
}
// Overridden from ui::SimpleMenuModel::Delegate:
@@ -109,9 +111,9 @@ class BrowserTabStripController::TabContextMenuContents
}
private:
- TabMenuModel model_;
- views::MenuModelAdapter menu_model_adapter_;
- views::MenuItemView menu_;
+ scoped_ptr<TabMenuModel> model_;
+ scoped_ptr<views::MenuModelAdapter> menu_model_adapter_;
+ scoped_ptr<views::MenuRunner> menu_runner_;
// The tab we're showing a menu for.
BaseTab* tab_;

Powered by Google App Engine
This is Rietveld 408576698