| Index: chrome/browser/chromeos/status/memory_menu_button.cc
|
| diff --git a/chrome/browser/chromeos/status/memory_menu_button.cc b/chrome/browser/chromeos/status/memory_menu_button.cc
|
| index 02f3495cde1920af5e290368b7ba1fdc3b832b2b..291fa6742f6444822080444b92f8e9f937d27060 100644
|
| --- a/chrome/browser/chromeos/status/memory_menu_button.cc
|
| +++ b/chrome/browser/chromeos/status/memory_menu_button.cc
|
| @@ -15,6 +15,7 @@
|
| #include "content/common/notification_service.h"
|
| #include "grit/generated_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| +#include "views/controls/menu/menu_runner.h"
|
| #include "views/widget/widget.h"
|
|
|
| #if defined(USE_TCMALLOC)
|
| @@ -211,38 +212,35 @@ void MemoryMenuButton::RunMenu(views::View* source, const gfx::Point& pt) {
|
| // View passed in must be a views::MenuButton, i.e. the MemoryMenuButton.
|
| DCHECK_EQ(source, this);
|
|
|
| - EnsureMenu();
|
| -
|
| + views::MenuRunner menu_runner(CreateMenu());
|
| gfx::Point screen_location;
|
| views::View::ConvertPointToScreen(source, &screen_location);
|
| gfx::Rect bounds(screen_location, source->size());
|
| - menu_->RunMenuAt(
|
| - source->GetWidget()->GetTopLevelWidget(),
|
| - this,
|
| - bounds,
|
| - views::MenuItemView::TOPRIGHT,
|
| - true);
|
| + if (menu_runner.RunMenuAt(
|
| + source->GetWidget()->GetTopLevelWidget(), this, bounds,
|
| + views::MenuItemView::TOPRIGHT, views::MenuRunner::HAS_MNEMONICS) ==
|
| + views::MenuRunner::MENU_DELETED)
|
| + return;
|
| }
|
|
|
| -// MemoryMenuButton, views::View implementation:
|
| -
|
| -void MemoryMenuButton::EnsureMenu() {
|
| +views::MenuItemView* MemoryMenuButton::CreateMenu() {
|
| // Just rebuild the menu each time to ensure the labels are up-to-date.
|
| - menu_.reset(new views::MenuItemView(this));
|
| + views::MenuItemView* menu = new views::MenuItemView(this);
|
| // Text for these items will be set by GetLabel().
|
| - menu_->AppendDelegateMenuItem(MEM_TOTAL_ITEM);
|
| - menu_->AppendDelegateMenuItem(MEM_FREE_ITEM);
|
| - menu_->AppendDelegateMenuItem(MEM_BUFFERS_ITEM);
|
| - menu_->AppendDelegateMenuItem(MEM_CACHE_ITEM);
|
| - menu_->AppendDelegateMenuItem(SHMEM_ITEM);
|
| - menu_->AppendSeparator();
|
| - menu_->AppendDelegateMenuItem(PURGE_MEMORY_ITEM);
|
| + menu->AppendDelegateMenuItem(MEM_TOTAL_ITEM);
|
| + menu->AppendDelegateMenuItem(MEM_FREE_ITEM);
|
| + menu->AppendDelegateMenuItem(MEM_BUFFERS_ITEM);
|
| + menu->AppendDelegateMenuItem(MEM_CACHE_ITEM);
|
| + menu->AppendDelegateMenuItem(SHMEM_ITEM);
|
| + menu->AppendSeparator();
|
| + menu->AppendDelegateMenuItem(PURGE_MEMORY_ITEM);
|
| #if defined(USE_TCMALLOC)
|
| - menu_->AppendSeparator();
|
| - menu_->AppendDelegateMenuItem(TOGGLE_PROFILING_ITEM);
|
| + menu->AppendSeparator();
|
| + menu->AppendDelegateMenuItem(TOGGLE_PROFILING_ITEM);
|
| if (IsHeapProfilerRunning())
|
| - menu_->AppendDelegateMenuItem(DUMP_PROFILING_ITEM);
|
| + menu->AppendDelegateMenuItem(DUMP_PROFILING_ITEM);
|
| #endif
|
| + return menu;
|
| }
|
|
|
| /////////////////////////////////////////////////////////////////////////////
|
|
|