Index: chrome/browser/ui/views/task_manager_view.cc |
diff --git a/chrome/browser/ui/views/task_manager_view.cc b/chrome/browser/ui/views/task_manager_view.cc |
index f59a3f18ad5b17e9baa64005a40dcf3d751e2fa6..e957da8a853724ce1b6c0e976202f3c2e1c00683 100644 |
--- a/chrome/browser/ui/views/task_manager_view.cc |
+++ b/chrome/browser/ui/views/task_manager_view.cc |
@@ -253,22 +253,19 @@ void TaskManagerView::OnKeyDown(ui::KeyboardCode keycode) { |
void TaskManagerView::ShowContextMenuForView(views::View* source, |
const gfx::Point& point, |
ui::MenuSourceType source_type) { |
- ui::SimpleMenuModel menu_model(this); |
+ menu_model_.reset(new ui::SimpleMenuModel(this)); |
for (const auto& table_column : columns_) { |
- menu_model.AddCheckItem(table_column.id, |
- l10n_util::GetStringUTF16(table_column.id)); |
+ menu_model_->AddCheckItem(table_column.id, |
+ l10n_util::GetStringUTF16(table_column.id)); |
} |
- menu_runner_.reset( |
- new views::MenuRunner(&menu_model, views::MenuRunner::CONTEXT_MENU)); |
+ menu_runner_.reset(new views::MenuRunner( |
+ menu_model_.get(), |
+ views::MenuRunner::CONTEXT_MENU | views::MenuRunner::ASYNC)); |
- if (menu_runner_->RunMenuAt(GetWidget(), nullptr, |
- gfx::Rect(point, gfx::Size()), |
- views::MENU_ANCHOR_TOPLEFT, |
- source_type) == views::MenuRunner::MENU_DELETED) { |
- return; |
- } |
+ menu_runner_->RunMenuAt(GetWidget(), nullptr, gfx::Rect(point, gfx::Size()), |
+ views::MENU_ANCHOR_TOPLEFT, source_type); |
} |
bool TaskManagerView::IsCommandIdChecked(int id) const { |
@@ -283,6 +280,11 @@ void TaskManagerView::ExecuteCommand(int id, int event_flags) { |
table_model_->ToggleColumnVisibility(id); |
} |
+void TaskManagerView::MenuClosed(ui::SimpleMenuModel* source) { |
+ menu_model_.reset(); |
+ menu_runner_.reset(); |
+} |
+ |
TaskManagerView::TaskManagerView() |
: tab_table_(nullptr), |
tab_table_parent_(nullptr), |