[cros] Use LoginDisplayHost::GetNativeWindow() for status area on login screen.

Regression after http://codereview.chromium.org/8438064 since on login screen status area parent widget is small window.

Also remove keyboard_switch_menu.*

BUG=chromium-os:22929,chromium:99545
TEST=All dialogs initiated at login screen from status area are displayed in center.
TBR=stevenjb@chromium.org

Review URL: http://codereview.chromium.org/8513007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110672 0039d316-1c4b-4281-b951-d872f2087c98
parent c635a663
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/login/keyboard_switch_menu.h"
#include "base/i18n/rtl.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/chromeos/input_method/input_method_manager.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
#include "chrome/browser/chromeos/status/status_area_view_chromeos.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "views/controls/button/menu_button.h"
#include "views/widget/widget.h"
namespace chromeos {
KeyboardSwitchMenu::KeyboardSwitchMenu()
: InputMethodMenu(NULL /* pref_service */,
StatusAreaViewChromeos::LOGIN_MODE_VIEWS,
true /* for_out_of_box_experience_dialog */) {
}
////////////////////////////////////////////////////////////////////////////////
// InputMethodMenu::InputMethodMenuHost implementation.
void KeyboardSwitchMenu::UpdateUI(const std::string& input_method_id,
const string16& name,
const string16& tooltip,
size_t num_active_input_methods) {
// Update all view hierarchies so that the new input method name is shown in
// the menu button.
views::Widget::NotifyLocaleChanged();
}
bool KeyboardSwitchMenu::ShouldSupportConfigUI() {
return false;
}
////////////////////////////////////////////////////////////////////////////////
// views::ViewMenuDelegate implementation.
void KeyboardSwitchMenu::RunMenu(views::View* source, const gfx::Point& pt) {
gfx::Point new_pt(pt);
views::MenuButton* button = static_cast<views::MenuButton*>(source);
// Keyboard switch menu is aligned on left by default. MenuButton passes
// in pt the lower left corner for RTL and the lower right corner for
// non-RTL (with menu_offset applied).
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);
}
set_menu_alignment(views::MenuItemView::TOPLEFT);
InputMethodMenu::RunMenu(source, new_pt);
}
string16 KeyboardSwitchMenu::GetCurrentKeyboardName() const {
const int count = GetItemCount();
for (int i = 0; i < count; ++i) {
if (IsItemCheckedAt(i))
return GetLabelAt(i);
}
VLOG(1) << "The input method menu is not ready yet. Show the display "
<< "name of the current input method";
input_method::InputMethodManager* manager =
input_method::InputMethodManager::GetInstance();
return UTF8ToUTF16(
manager->GetInputMethodUtil()->GetInputMethodDisplayNameFromId(
manager->current_input_method().id()));
}
} // namespace chromeos
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_KEYBOARD_SWITCH_MENU_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_KEYBOARD_SWITCH_MENU_H_
#pragma once
#include <string>
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/chromeos/status/input_method_menu.h"
namespace chromeos {
// A class for the button in the OOBE network configuration screen which expands
// a dropdown menu for switching keyboard layout. Note that the InputMethodMenu
// class implements the views::ViewMenuDelegate interface.
class KeyboardSwitchMenu : public InputMethodMenu {
public:
KeyboardSwitchMenu();
virtual ~KeyboardSwitchMenu() {}
// InputMethodMenu::InputMethodMenuHost implementation.
virtual void UpdateUI(const std::string& input_method_id,
const string16& name,
const string16& tooltip,
size_t num_active_input_methods) OVERRIDE;
virtual bool ShouldSupportConfigUI() OVERRIDE;
virtual void OpenConfigUI() OVERRIDE {}
// views::ViewMenuDelegate implementation which overrides the implementation
// in InputMethodMenu.
virtual void RunMenu(views::View* source, const gfx::Point& pt);
// Returns current keyboard name to be placed on the keyboard menu-button.
string16 GetCurrentKeyboardName() const;
private:
DISALLOW_COPY_AND_ASSIGN(KeyboardSwitchMenu);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_KEYBOARD_SWITCH_MENU_H_
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "base/task.h" #include "base/task.h"
#include "base/timer.h" #include "base/timer.h"
#include "chrome/browser/chromeos/cros/network_library.h" #include "chrome/browser/chromeos/cros/network_library.h"
#include "chrome/browser/chromeos/login/keyboard_switch_menu.h"
#include "chrome/browser/chromeos/login/language_switch_menu.h" #include "chrome/browser/chromeos/login/language_switch_menu.h"
#include "chrome/browser/chromeos/login/message_bubble.h" #include "chrome/browser/chromeos/login/message_bubble.h"
#include "chrome/browser/chromeos/login/network_screen_actor.h" #include "chrome/browser/chromeos/login/network_screen_actor.h"
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "base/utf_string_conversions.h" #include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/cros_library.h" #include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/login/base_login_display_host.h"
#include "chrome/browser/chromeos/login/helper.h" #include "chrome/browser/chromeos/login/helper.h"
#include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/options/network_config_view.h" #include "chrome/browser/chromeos/options/network_config_view.h"
...@@ -197,8 +198,14 @@ views::MenuButton* NetworkMenuButton::GetMenuButton() { ...@@ -197,8 +198,14 @@ views::MenuButton* NetworkMenuButton::GetMenuButton() {
} }
gfx::NativeWindow NetworkMenuButton::GetNativeWindow() const { gfx::NativeWindow NetworkMenuButton::GetNativeWindow() const {
// This must always have a parent, which must have a widget ancestor. if (BaseLoginDisplayHost::default_host()) {
return parent()->GetWidget()->GetNativeWindow(); // When not in browser mode i.e. login screen, status area is hosted in
// a separate widget.
return BaseLoginDisplayHost::default_host()->GetNativeWindow();
} else {
// This must always have a parent, which must have a widget ancestor.
return parent()->GetWidget()->GetNativeWindow();
}
} }
void NetworkMenuButton::OpenButtonOptions() { void NetworkMenuButton::OpenButtonOptions() {
......
...@@ -569,8 +569,6 @@ ...@@ -569,8 +569,6 @@
'browser/chromeos/login/image_downloader.h', 'browser/chromeos/login/image_downloader.h',
'browser/chromeos/login/issue_response_handler.cc', 'browser/chromeos/login/issue_response_handler.cc',
'browser/chromeos/login/issue_response_handler.h', 'browser/chromeos/login/issue_response_handler.h',
'browser/chromeos/login/keyboard_switch_menu.cc',
'browser/chromeos/login/keyboard_switch_menu.h',
'browser/chromeos/login/language_list.cc', 'browser/chromeos/login/language_list.cc',
'browser/chromeos/login/language_list.h', 'browser/chromeos/login/language_list.h',
'browser/chromeos/login/language_switch_menu.cc', 'browser/chromeos/login/language_switch_menu.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment