Index: chrome/browser/chromeos/status/clock_menu_button.cc |
diff --git a/chrome/browser/chromeos/status/clock_menu_button.cc b/chrome/browser/chromeos/status/clock_menu_button.cc |
index 5e1706610cefc80232d0a6d083e7877cee05b184..3b0384c605ed4dd1fe84136761e31a117737a21b 100644 |
--- a/chrome/browser/chromeos/status/clock_menu_button.cc |
+++ b/chrome/browser/chromeos/status/clock_menu_button.cc |
@@ -20,6 +20,7 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/font.h" |
+#include "views/controls/menu/menu_runner.h" |
#include "views/widget/widget.h" |
#include "unicode/datefmt.h" |
@@ -155,12 +156,11 @@ void ClockMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { |
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; |
} |
// ClockMenuButton, views::View implementation: |
@@ -170,23 +170,26 @@ void ClockMenuButton::OnLocaleChanged() { |
} |
void ClockMenuButton::EnsureMenu() { |
- if (!menu_.get()) { |
- menu_.reset(new views::MenuItemView(this)); |
- |
- // Text for this item will be set by GetLabel(). |
- menu_->AppendDelegateMenuItem(CLOCK_DISPLAY_ITEM); |
- |
- // If options dialog is unavailable, don't show a separator and configure |
- // menu item. |
- if (host_->ShouldOpenButtonOptions(this)) { |
- menu_->AppendSeparator(); |
- |
- const string16 clock_open_options_label = |
- l10n_util::GetStringUTF16(IDS_STATUSBAR_CLOCK_OPEN_OPTIONS_DIALOG); |
- menu_->AppendMenuItemWithLabel( |
- CLOCK_OPEN_OPTIONS_ITEM, |
- UTF16ToWide(clock_open_options_label)); |
- } |
+ if (menu_runner_.get()) |
+ return; |
+ |
+ views::MenuItemView* menu = new views::MenuItemView(this); |
+ // menu_runner_ takes ownership of menu. |
+ menu_runner_.reset(new views::MenuRunner(menu)); |
+ |
+ // Text for this item will be set by GetLabel(). |
+ menu->AppendDelegateMenuItem(CLOCK_DISPLAY_ITEM); |
+ |
+ // If options dialog is unavailable, don't show a separator and configure |
+ // menu item. |
+ if (host_->ShouldOpenButtonOptions(this)) { |
+ menu->AppendSeparator(); |
+ |
+ const string16 clock_open_options_label = |
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_CLOCK_OPEN_OPTIONS_DIALOG); |
+ menu->AppendMenuItemWithLabel( |
+ CLOCK_OPEN_OPTIONS_ITEM, |
+ UTF16ToWide(clock_open_options_label)); |
} |
} |