summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-14 18:44:26 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-14 18:44:26 +0000
commit75a4bc04c277520b6771ff7621ae731ddc527115 (patch)
treef087fdb4c12e7cc41765d09ff0d351fc4231c281
parentcddc00ce69bd923f8d1afa677bd0d637d0de6f8a (diff)
downloadchromium_src-75a4bc04c277520b6771ff7621ae731ddc527115.zip
chromium_src-75a4bc04c277520b6771ff7621ae731ddc527115.tar.gz
chromium_src-75a4bc04c277520b6771ff7621ae731ddc527115.tar.bz2
Revert 89033 - Convert LanguageSwitchMenu from Menu2 to MenuItemView.
This conversion is part of GTK removal required. BUG=chromium-os:13887 TEST=none Review URL: http://codereview.chromium.org/6982054 TBR=rhashimoto@chromium.org Review URL: http://codereview.chromium.org/7146023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89035 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/login/language_switch_menu.cc76
-rw-r--r--chrome/browser/chromeos/login/language_switch_menu.h31
-rw-r--r--chrome/browser/chromeos/login/views_network_screen_actor.cc1
3 files changed, 61 insertions, 47 deletions
diff --git a/chrome/browser/chromeos/login/language_switch_menu.cc b/chrome/browser/chromeos/login/language_switch_menu.cc
index f8499a6..2625703 100644
--- a/chrome/browser/chromeos/login/language_switch_menu.cc
+++ b/chrome/browser/chromeos/login/language_switch_menu.cc
@@ -21,10 +21,7 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/platform_font_gtk.h"
#include "views/controls/button/menu_button.h"
-#include "views/controls/menu/menu_item_view.h"
-#include "views/controls/menu/submenu_view.h"
#include "views/widget/widget.h"
-#include "views/window/window.h"
namespace {
@@ -38,7 +35,9 @@ const int kMoreLanguagesSubMenu = 200;
namespace chromeos {
LanguageSwitchMenu::LanguageSwitchMenu()
- : ALLOW_THIS_IN_INITIALIZER_LIST(menu_(new views::MenuItemView(this))) {
+ : ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_(this)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_submenu_(this)),
+ menu_alignment_(views::Menu2::ALIGN_TOPRIGHT) {
}
LanguageSwitchMenu::~LanguageSwitchMenu() {}
@@ -49,32 +48,25 @@ void LanguageSwitchMenu::InitLanguageMenu() {
language_list_->CopySpecifiedLanguagesUp(kLanguagesTopped);
// Clear older menu items.
- if (menu_->HasSubmenu()) {
- const int old_count = menu_->GetSubmenu()->child_count();
- for (int i = 0; i < old_count; ++i)
- menu_->RemoveMenuItemAt(0);
- }
+ menu_model_.Clear();
+ menu_model_submenu_.Clear();
// Fill menu items with updated items.
for (int line = 0; line != kLanguageMainMenuSize; line++) {
- menu_->AppendMenuItemWithLabel(
- line,
- UTF16ToWide(language_list_->GetLanguageNameAt(line)));
+ menu_model_.AddItem(line, language_list_->GetLanguageNameAt(line));
}
-
- menu_->AppendSeparator();
- views::MenuItemView* submenu = menu_->AppendSubMenu(
- kMoreLanguagesSubMenu,
- UTF16ToWide(l10n_util::GetStringUTF16(IDS_LANGUAGES_MORE)));
-
+ menu_model_.AddSeparator();
+ menu_model_.AddSubMenuWithStringId(kMoreLanguagesSubMenu,
+ IDS_LANGUAGES_MORE,
+ &menu_model_submenu_);
for (int line = kLanguageMainMenuSize;
line != language_list_->get_languages_count(); line++) {
- submenu->AppendMenuItemWithLabel(
- line,
- UTF16ToWide(language_list_->GetLanguageNameAt(line)));
+ menu_model_submenu_.AddItem(
+ line, language_list_->GetLanguageNameAt(line));
}
- menu_->ChildrenChanged();
+ // Initialize menu here so it appears fast when called.
+ menu_.reset(new views::Menu2(&menu_model_));
}
string16 LanguageSwitchMenu::GetCurrentLocaleName() const {
@@ -87,8 +79,7 @@ string16 LanguageSwitchMenu::GetCurrentLocaleName() const {
void LanguageSwitchMenu::SetFirstLevelMenuWidth(int width) {
DCHECK(menu_ != NULL);
-
- menu_->GetSubmenu()->set_minimum_preferred_width(width);
+ menu_->SetMinimumWidth(width);
}
// static
@@ -160,23 +151,34 @@ void LanguageSwitchMenu::SwitchLanguageAndEnableKeyboardLayouts(
void LanguageSwitchMenu::RunMenu(views::View* source, const gfx::Point& pt) {
DCHECK(menu_ != NULL);
views::MenuButton* button = static_cast<views::MenuButton*>(source);
-
- // We align on the left edge of the button for non RTL case.
- // MenuButton passes in pt the lower left corner for RTL and the
- // lower right corner for non-RTL (with menu_offset applied).
- const int reverse_offset = button->width() + button->menu_offset().x() * 2;
+ // We align the on left edge of the button for non RTL case.
gfx::Point new_pt(pt);
- if (base::i18n::IsRTL())
- new_pt.set_x(pt.x() + reverse_offset);
- else
- new_pt.set_x(pt.x() - reverse_offset);
-
- menu_->RunMenuAt(button->GetWidget()->GetNativeWindow(), button,
- gfx::Rect(new_pt, gfx::Size()), views::MenuItemView::TOPLEFT, true);
+ if (menu_alignment_ == views::Menu2::ALIGN_TOPLEFT) {
+ int reverse_offset = button->width() + button->menu_offset().x() * 2;
+ if (base::i18n::IsRTL()) {
+ new_pt.set_x(pt.x() + reverse_offset);
+ } else {
+ new_pt.set_x(pt.x() - reverse_offset);
+ }
+ }
+ menu_->RunMenuAt(new_pt, menu_alignment_);
}
////////////////////////////////////////////////////////////////////////////////
-// views::MenuDelegate implementation.
+// ui::SimpleMenuModel::Delegate implementation.
+
+bool LanguageSwitchMenu::IsCommandIdChecked(int command_id) const {
+ return false;
+}
+
+bool LanguageSwitchMenu::IsCommandIdEnabled(int command_id) const {
+ return true;
+}
+
+bool LanguageSwitchMenu::GetAcceleratorForCommandId(
+ int command_id, ui::Accelerator* accelerator) {
+ return false;
+}
void LanguageSwitchMenu::ExecuteCommand(int command_id) {
const std::string locale = language_list_->GetLocaleFromIndex(command_id);
diff --git a/chrome/browser/chromeos/login/language_switch_menu.h b/chrome/browser/chromeos/login/language_switch_menu.h
index 8920a7e..39c6c38 100644
--- a/chrome/browser/chromeos/login/language_switch_menu.h
+++ b/chrome/browser/chromeos/login/language_switch_menu.h
@@ -11,22 +11,19 @@
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/language_combobox_model.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
-#include "views/controls/menu/menu_delegate.h"
+#include "ui/base/models/simple_menu_model.h"
+#include "views/controls/menu/menu_2.h"
#include "views/controls/menu/view_menu_delegate.h"
#include "views/view.h"
class WizardControllerTest_SwitchLanguage_Test;
-namespace views {
-class MenuItemView;
-} // namespace views
-
namespace chromeos {
class ScreenObserver;
class LanguageSwitchMenu : public views::ViewMenuDelegate,
- public views::MenuDelegate {
+ public ui::SimpleMenuModel::Delegate {
public:
LanguageSwitchMenu();
virtual ~LanguageSwitchMenu();
@@ -34,6 +31,11 @@ class LanguageSwitchMenu : public views::ViewMenuDelegate,
// Initializes language selection menu contents.
void InitLanguageMenu();
+ // Sets menu's alignment.
+ void set_menu_alignment(views::Menu2::Alignment alignment) {
+ menu_alignment_ = alignment;
+ }
+
// Returns current locale name to be placed on the language menu-button.
string16 GetCurrentLocaleName() const;
@@ -53,17 +55,26 @@ class LanguageSwitchMenu : public views::ViewMenuDelegate,
static void LoadFontsForCurrentLocale();
// views::ViewMenuDelegate implementation.
- virtual void RunMenu(views::View* source, const gfx::Point& pt) OVERRIDE;
+ virtual void RunMenu(views::View* source, const gfx::Point& pt);
- // views::MenuDelegate implementation.
- virtual void ExecuteCommand(int command_id) OVERRIDE;
+ // ui::SimpleMenuModel::Delegate implementation.
+ virtual bool IsCommandIdChecked(int command_id) const;
+ virtual bool IsCommandIdEnabled(int command_id) const;
+ virtual bool GetAcceleratorForCommandId(int command_id,
+ ui::Accelerator* accelerator);
+ virtual void ExecuteCommand(int command_id);
// Dialog controls that we own ourselves.
- scoped_ptr<views::MenuItemView> menu_;
+ ui::SimpleMenuModel menu_model_;
+ ui::SimpleMenuModel menu_model_submenu_;
+ scoped_ptr<views::Menu2> menu_;
// Language locale name storage.
scoped_ptr<LanguageList> language_list_;
+ // Menu alignment.
+ views::Menu2::Alignment menu_alignment_;
+
FRIEND_TEST(::WizardControllerTest, SwitchLanguage);
DISALLOW_COPY_AND_ASSIGN(LanguageSwitchMenu);
};
diff --git a/chrome/browser/chromeos/login/views_network_screen_actor.cc b/chrome/browser/chromeos/login/views_network_screen_actor.cc
index 2f6172a..3194652 100644
--- a/chrome/browser/chromeos/login/views_network_screen_actor.cc
+++ b/chrome/browser/chromeos/login/views_network_screen_actor.cc
@@ -44,6 +44,7 @@ ViewsNetworkScreenActor::ViewsNetworkScreenActor(
kWelcomeScreenHeight),
bubble_(NULL),
screen_(NULL) {
+ language_switch_menu_.set_menu_alignment(views::Menu2::ALIGN_TOPLEFT);
}
ViewsNetworkScreenActor::~ViewsNetworkScreenActor() {