summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/focus_cycler.cc4
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc48
-rw-r--r--chrome/browser/chromeos/login/webui_login_view.cc13
-rw-r--r--chrome/browser/external_tab/external_tab_container_win.cc5
-rw-r--r--chrome/browser/ui/find_bar/find_bar_host_browsertest.cc2
-rw-r--r--chrome/browser/ui/views/avatar_menu_bubble_view.cc4
-rw-r--r--chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc2
-rw-r--r--chrome/browser/ui/views/chrome_to_mobile_bubble_view.cc2
-rw-r--r--chrome/browser/ui/views/constrained_window_views_browsertest.cc6
-rw-r--r--chrome/browser/ui/views/dropdown_bar_host.cc4
-rw-r--r--chrome/browser/ui/views/find_bar_host.cc4
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc19
-rw-r--r--chrome/browser/ui/views/fullscreen_exit_bubble_views.cc2
-rw-r--r--chrome/browser/ui/views/js_modal_dialog_views.cc2
-rw-r--r--chrome/browser/ui/views/tab_contents/render_view_context_menu_views.cc16
-rw-r--r--chrome/browser/ui/views/toolbar_view.cc11
-rw-r--r--chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc8
-rw-r--r--chrome/browser/ui/views/web_dialog_view.cc2
-rw-r--r--chrome/common/extensions/extension_commands.cc15
-rw-r--r--chrome/common/extensions/extension_commands_unittest.cc71
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event.cc23
-rw-r--r--content/content_browser.gypi1
-rw-r--r--content/public/browser/native_web_keyboard_event.h8
-rw-r--r--ui/base/events.h8
-rw-r--r--ui/base/win/events_win.cc11
-rw-r--r--ui/views/accessible_pane_view.cc10
-rw-r--r--ui/views/bubble/bubble_delegate.cc4
-rw-r--r--ui/views/controls/button/text_button.cc4
-rw-r--r--ui/views/controls/menu/menu_controller.cc2
-rw-r--r--ui/views/controls/menu/menu_win.cc2
-rw-r--r--ui/views/controls/menu/native_menu_win.cc2
-rw-r--r--ui/views/controls/tabbed_pane/tabbed_pane.cc7
-rw-r--r--ui/views/controls/textfield/native_textfield_win.cc6
-rw-r--r--ui/views/controls/tree/tree_view_win.cc5
-rw-r--r--ui/views/events/event.h4
-rw-r--r--ui/views/events/event_win.cc14
-rw-r--r--ui/views/focus/focus_manager.cc14
-rw-r--r--ui/views/focus/focus_manager_unittest.cc10
-rw-r--r--ui/views/focus/focus_manager_unittest_win.cc6
-rw-r--r--ui/views/view_unittest.cc8
-rw-r--r--ui/views/widget/native_widget_win.cc9
-rw-r--r--ui/views/window/dialog_client_view.cc7
42 files changed, 233 insertions, 172 deletions
diff --git a/ash/focus_cycler.cc b/ash/focus_cycler.cc
index aa9cf64..f0854c0 100644
--- a/ash/focus_cycler.cc
+++ b/ash/focus_cycler.cc
@@ -27,11 +27,11 @@ void FocusCycler::AddWidget(views::Widget* widget) {
widgets_.push_back(widget);
widget->GetFocusManager()->RegisterAccelerator(
- ui::Accelerator(ui::VKEY_F2, false, true, false),
+ ui::Accelerator(ui::VKEY_F2, ui::EF_CONTROL_DOWN),
ui::AcceleratorManager::kNormalPriority,
this);
widget->GetFocusManager()->RegisterAccelerator(
- ui::Accelerator(ui::VKEY_F1, false, true, false),
+ ui::Accelerator(ui::VKEY_F1, ui::EF_CONTROL_DOWN),
ui::AcceleratorManager::kNormalPriority,
this);
}
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
index 533c81d..b351619 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
@@ -640,24 +640,24 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
// Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs
// and keyboards are enabled.
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_CONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
// Do the same tests for Korean.
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_HANGUL, false, false, false)));
+ ui::Accelerator(ui::VKEY_HANGUL, ui::EF_NONE)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_SPACE, true, false, false)));
+ ui::Accelerator(ui::VKEY_SPACE, ui::EF_SHIFT_DOWN)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
}
@@ -667,17 +667,17 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) {
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
manager_->SwitchToPreviousInputMethod();
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
manager_->SwitchToPreviousInputMethod();
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
}
@@ -687,12 +687,12 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithKoLayout) {
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_HANGUL, false, false, false)));
+ ui::Accelerator(ui::VKEY_HANGUL, ui::EF_NONE)));
EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
manager_->SwitchToPreviousInputMethod();
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_SPACE, true, false, false)));
+ ui::Accelerator(ui::VKEY_SPACE, ui::EF_SHIFT_DOWN)));
EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
}
@@ -704,22 +704,22 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
EXPECT_TRUE(manager_->EnableInputMethods(ids));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("mozc-jp", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_CONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
EXPECT_EQ("mozc-jp", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_CONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
EXPECT_EQ("mozc-jp", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
// Add Dvorak.
@@ -727,10 +727,10 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
EXPECT_TRUE(manager_->EnableInputMethods(ids));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("mozc-jp", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, false, false, false)));
+ ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
}
@@ -742,10 +742,10 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithKoIme) {
EXPECT_TRUE(manager_->EnableInputMethods(ids));
EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_HANGUL, false, false, false)));
+ ui::Accelerator(ui::VKEY_HANGUL, ui::EF_NONE)));
EXPECT_EQ("mozc-hangul", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_HANGUL, false, false, false)));
+ ui::Accelerator(ui::VKEY_HANGUL, ui::EF_NONE)));
EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
// Add Dvorak.
@@ -753,10 +753,10 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithKoIme) {
EXPECT_TRUE(manager_->EnableInputMethods(ids));
EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_SPACE, true, false, false)));
+ ui::Accelerator(ui::VKEY_SPACE, ui::EF_SHIFT_DOWN)));
EXPECT_EQ("mozc-hangul", manager_->GetCurrentInputMethod().id());
EXPECT_TRUE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_SPACE, true, false, false)));
+ ui::Accelerator(ui::VKEY_SPACE, ui::EF_SHIFT_DOWN)));
EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
}
@@ -770,7 +770,7 @@ TEST_F(InputMethodManagerImplTest, TestEnableDisableHotkeys) {
EXPECT_FALSE(manager_->SwitchToPreviousInputMethod());
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
EXPECT_FALSE(manager_->SwitchInputMethod(
- ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
+ ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
manager_->EnableHotkeys();
EXPECT_TRUE(manager_->SwitchToNextInputMethod());
diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc
index 113b72e..68eb562 100644
--- a/chrome/browser/chromeos/login/webui_login_view.cc
+++ b/chrome/browser/chromeos/login/webui_login_view.cc
@@ -135,16 +135,19 @@ WebUILoginView::WebUILoginView()
// Make sure the singleton VirtualKeyboardManager object is created.
VirtualKeyboardManager::GetInstance();
#endif
- accel_map_[ui::Accelerator(ui::VKEY_Z, false, true, true)] =
+ accel_map_[ui::Accelerator(ui::VKEY_Z,
+ ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
kAccelNameAccessibility;
- accel_map_[ui::Accelerator(ui::VKEY_ESCAPE, false, false, false)] =
+ accel_map_[ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)] =
kAccelNameCancel;
- accel_map_[ui::Accelerator(ui::VKEY_E, false, true, true)] =
+ accel_map_[ui::Accelerator(ui::VKEY_E,
+ ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
kAccelNameEnrollment;
// This should be kept in sync with the IDC_EXIT accelerator.
- accel_map_[ui::Accelerator(ui::VKEY_Q, true, true, false)] =
+ accel_map_[ui::Accelerator(ui::VKEY_Q,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)] =
kAccelNameExit;
- accel_map_[ui::Accelerator(ui::VKEY_V, false, false, true)] =
+ accel_map_[ui::Accelerator(ui::VKEY_V, ui::EF_ALT_DOWN)] =
kAccelNameVersion;
for (AccelMap::iterator i(accel_map_.begin()); i != accel_map_.end(); ++i)
diff --git a/chrome/browser/external_tab/external_tab_container_win.cc b/chrome/browser/external_tab/external_tab_container_win.cc
index 7077637..ff4bb90 100644
--- a/chrome/browser/external_tab/external_tab_container_win.cc
+++ b/chrome/browser/external_tab/external_tab_container_win.cc
@@ -1107,12 +1107,9 @@ void ExternalTabContainer::LoadAccelerators() {
// Let's fill our own accelerator table.
for (int i = 0; i < count; ++i) {
- bool alt_down = (accelerators[i].fVirt & FALT) == FALT;
- bool ctrl_down = (accelerators[i].fVirt & FCONTROL) == FCONTROL;
- bool shift_down = (accelerators[i].fVirt & FSHIFT) == FSHIFT;
ui::Accelerator accelerator(
static_cast<ui::KeyboardCode>(accelerators[i].key),
- shift_down, ctrl_down, alt_down);
+ ui::GetModifiersFromACCEL(accelerators[i]));
accelerator_table_[accelerator] = accelerators[i].cmd;
// Also register with the focus manager.
diff --git a/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc b/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc
index feb061c..d79b6a4 100644
--- a/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc
+++ b/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc
@@ -835,7 +835,7 @@ IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, AcceleratorRestoring) {
views::FocusManager* focus_manager = widget->GetFocusManager();
// See where Escape is registered.
- ui::Accelerator escape(ui::VKEY_ESCAPE, false, false, false);
+ ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE);
ui::AcceleratorTarget* old_target =
focus_manager->GetCurrentTargetForAccelerator(escape);
EXPECT_TRUE(old_target != NULL);
diff --git a/chrome/browser/ui/views/avatar_menu_bubble_view.cc b/chrome/browser/ui/views/avatar_menu_bubble_view.cc
index e23d3ee..365cb26 100644
--- a/chrome/browser/ui/views/avatar_menu_bubble_view.cc
+++ b/chrome/browser/ui/views/avatar_menu_bubble_view.cc
@@ -474,8 +474,8 @@ gfx::Rect AvatarMenuBubbleView::GetAnchorRect() {
void AvatarMenuBubbleView::Init() {
// Build the menu for the first time.
OnAvatarMenuModelChanged(avatar_menu_model_.get());
- AddAccelerator(ui::Accelerator(ui::VKEY_DOWN, 0));
- AddAccelerator(ui::Accelerator(ui::VKEY_UP, 0));
+ AddAccelerator(ui::Accelerator(ui::VKEY_DOWN, ui::EF_NONE));
+ AddAccelerator(ui::Accelerator(ui::VKEY_UP, ui::EF_NONE));
}
void AvatarMenuBubbleView::OnAvatarMenuModelChanged(
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
index e64aab6..5bb2c23 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
@@ -236,7 +236,7 @@ void BookmarkBubbleView::Init() {
layout->AddView(edit_button_);
layout->AddView(close_button_);
- AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, 0));
+ AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
}
BookmarkBubbleView::BookmarkBubbleView(views::View* anchor_view,
diff --git a/chrome/browser/ui/views/chrome_to_mobile_bubble_view.cc b/chrome/browser/ui/views/chrome_to_mobile_bubble_view.cc
index 918f7e6..3a64c89 100644
--- a/chrome/browser/ui/views/chrome_to_mobile_bubble_view.cc
+++ b/chrome/browser/ui/views/chrome_to_mobile_bubble_view.cc
@@ -305,7 +305,7 @@ void ChromeToMobileBubbleView::Init() {
layout->AddView(send_);
layout->AddView(cancel_);
- AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, 0));
+ AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
}
ChromeToMobileBubbleView::ChromeToMobileBubbleView(views::View* anchor_view,
diff --git a/chrome/browser/ui/views/constrained_window_views_browsertest.cc b/chrome/browser/ui/views/constrained_window_views_browsertest.cc
index f2fedab..f5f5a76 100644
--- a/chrome/browser/ui/views/constrained_window_views_browsertest.cc
+++ b/chrome/browser/ui/views/constrained_window_views_browsertest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -139,7 +139,7 @@ IN_PROC_BROWSER_TEST_F(ConstrainedWindowViewTest, FocusTest) {
// Now send a VKEY_RETURN to the browser. This should result in closing
// test_dialog1.
EXPECT_TRUE(focus_manager->ProcessAccelerator(
- ui::Accelerator(ui::VKEY_RETURN, false, false, false)));
+ ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)));
ui_test_utils::RunAllPendingInMessageLoop();
EXPECT_TRUE(test_dialog1->done());
@@ -167,7 +167,7 @@ IN_PROC_BROWSER_TEST_F(ConstrainedWindowViewTest, FocusTest) {
// Send another VKEY_RETURN, closing test_dialog2
EXPECT_TRUE(focus_manager->ProcessAccelerator(
- ui::Accelerator(ui::VKEY_RETURN, false, false, false)));
+ ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)));
ui_test_utils::RunAllPendingInMessageLoop();
EXPECT_TRUE(test_dialog2->done());
EXPECT_EQ(0u, constrained_window_helper->constrained_window_count());
diff --git a/chrome/browser/ui/views/dropdown_bar_host.cc b/chrome/browser/ui/views/dropdown_bar_host.cc
index 1a2cb42..9961f3a3 100644
--- a/chrome/browser/ui/views/dropdown_bar_host.cc
+++ b/chrome/browser/ui/views/dropdown_bar_host.cc
@@ -334,7 +334,7 @@ void DropdownBarHost::UpdateWindowEdges(const gfx::Rect& new_pos) {
void DropdownBarHost::RegisterAccelerators() {
DCHECK(!esc_accel_target_registered_);
- ui::Accelerator escape(ui::VKEY_ESCAPE, false, false, false);
+ ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE);
focus_manager_->RegisterAccelerator(
escape, ui::AcceleratorManager::kNormalPriority, this);
esc_accel_target_registered_ = true;
@@ -342,7 +342,7 @@ void DropdownBarHost::RegisterAccelerators() {
void DropdownBarHost::UnregisterAccelerators() {
DCHECK(esc_accel_target_registered_);
- ui::Accelerator escape(ui::VKEY_ESCAPE, false, false, false);
+ ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE);
focus_manager_->UnregisterAccelerator(escape, this);
esc_accel_target_registered_ = false;
}
diff --git a/chrome/browser/ui/views/find_bar_host.cc b/chrome/browser/ui/views/find_bar_host.cc
index 7eb4651..2f58c0a 100644
--- a/chrome/browser/ui/views/find_bar_host.cc
+++ b/chrome/browser/ui/views/find_bar_host.cc
@@ -312,14 +312,14 @@ void FindBarHost::RegisterAccelerators() {
DropdownBarHost::RegisterAccelerators();
// Register for Ctrl+Return.
- ui::Accelerator escape(ui::VKEY_RETURN, false, true, false);
+ ui::Accelerator escape(ui::VKEY_RETURN, ui::EF_CONTROL_DOWN);
focus_manager()->RegisterAccelerator(
escape, ui::AcceleratorManager::kNormalPriority, this);
}
void FindBarHost::UnregisterAccelerators() {
// Unregister Ctrl+Return.
- ui::Accelerator escape(ui::VKEY_RETURN, false, true, false);
+ ui::Accelerator escape(ui::VKEY_RETURN, ui::EF_CONTROL_DOWN);
focus_manager()->UnregisterAccelerator(escape, this);
DropdownBarHost::UnregisterAccelerators();
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index f5fcbba..aa3a46f 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -68,6 +68,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/download_manager.h"
+#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/user_metrics.h"
@@ -469,13 +470,13 @@ bool BrowserView::GetAccelerator(int cmd_id, ui::Accelerator* accelerator) {
// anywhere so we need to check for them explicitly here.
switch (cmd_id) {
case IDC_CUT:
- *accelerator = ui::Accelerator(ui::VKEY_X, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN);
return true;
case IDC_COPY:
- *accelerator = ui::Accelerator(ui::VKEY_C, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN);
return true;
case IDC_PASTE:
- *accelerator = ui::Accelerator(ui::VKEY_V, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN);
return true;
}
// Else, we retrieve the accelerator information from the accelerator table.
@@ -1169,12 +1170,7 @@ bool BrowserView::PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
ui::Accelerator accelerator(
static_cast<ui::KeyboardCode>(event.windowsKeyCode),
- (event.modifiers & NativeWebKeyboardEvent::ShiftKey) ==
- NativeWebKeyboardEvent::ShiftKey,
- (event.modifiers & NativeWebKeyboardEvent::ControlKey) ==
- NativeWebKeyboardEvent::ControlKey,
- (event.modifiers & NativeWebKeyboardEvent::AltKey) ==
- NativeWebKeyboardEvent::AltKey);
+ content::GetModifiersFromNativeWebKeyboardEvent(event));
if (event.type == WebKit::WebInputEvent::KeyUp)
accelerator.set_type(ui::ET_KEY_RELEASED);
@@ -2148,12 +2144,9 @@ void BrowserView::LoadAccelerators() {
// Let's fill our own accelerator table.
for (int i = 0; i < count; ++i) {
- bool alt_down = (accelerators[i].fVirt & FALT) == FALT;
- bool ctrl_down = (accelerators[i].fVirt & FCONTROL) == FCONTROL;
- bool shift_down = (accelerators[i].fVirt & FSHIFT) == FSHIFT;
ui::Accelerator accelerator(
static_cast<ui::KeyboardCode>(accelerators[i].key),
- shift_down, ctrl_down, alt_down);
+ ui::GetModifiersFromACCEL(accelerators[i]));
accelerator_table_[accelerator] = accelerators[i].cmd;
// Also register with the focus manager.
diff --git a/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc b/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc
index 75c2fe0..8d34e70 100644
--- a/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc
+++ b/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc
@@ -255,7 +255,7 @@ FullscreenExitBubbleViews::FullscreenExitBubbleViews(
size_animation_->Reset(1);
// Create the contents view.
- ui::Accelerator accelerator(ui::VKEY_UNKNOWN, false, false, false);
+ ui::Accelerator accelerator(ui::VKEY_UNKNOWN, ui::EF_NONE);
bool got_accelerator = frame->GetAccelerator(IDC_FULLSCREEN, &accelerator);
DCHECK(got_accelerator);
view_ = new FullscreenExitView(
diff --git a/chrome/browser/ui/views/js_modal_dialog_views.cc b/chrome/browser/ui/views/js_modal_dialog_views.cc
index e3e1c5e..d0428c4 100644
--- a/chrome/browser/ui/views/js_modal_dialog_views.cc
+++ b/chrome/browser/ui/views/js_modal_dialog_views.cc
@@ -29,7 +29,7 @@ JSModalDialogViews::JSModalDialogViews(JavaScriptAppModalDialog* parent)
DCHECK(message_box_view_);
message_box_view_->AddAccelerator(
- ui::Accelerator(ui::VKEY_C, false, true, false));
+ ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN));
if (parent->display_suppress_checkbox()) {
message_box_view_->SetCheckBoxLabel(
l10n_util::GetStringUTF16(IDS_JAVASCRIPT_MESSAGEBOX_SUPPRESS_OPTION));
diff --git a/chrome/browser/ui/views/tab_contents/render_view_context_menu_views.cc b/chrome/browser/ui/views/tab_contents/render_view_context_menu_views.cc
index 561a374..056178d 100644
--- a/chrome/browser/ui/views/tab_contents/render_view_context_menu_views.cc
+++ b/chrome/browser/ui/views/tab_contents/render_view_context_menu_views.cc
@@ -73,32 +73,34 @@ bool RenderViewContextMenuViews::GetAcceleratorForCommandId(
// that Ctrl+C, Ctrl+V, Ctrl+X, Ctrl-A, etc do what they normally do.
switch (command_id) {
case IDC_CONTENT_CONTEXT_UNDO:
- *accel = ui::Accelerator(ui::VKEY_Z, false, true, false);
+ *accel = ui::Accelerator(ui::VKEY_Z, ui::EF_CONTROL_DOWN);
return true;
case IDC_CONTENT_CONTEXT_REDO:
// TODO(jcampan): should it be Ctrl-Y?
- *accel = ui::Accelerator(ui::VKEY_Z, true, true, false);
+ *accel = ui::Accelerator(ui::VKEY_Z,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
return true;
case IDC_CONTENT_CONTEXT_CUT:
- *accel = ui::Accelerator(ui::VKEY_X, false, true, false);
+ *accel = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN);
return true;
case IDC_CONTENT_CONTEXT_COPY:
- *accel = ui::Accelerator(ui::VKEY_C, false, true, false);
+ *accel = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN);
return true;
case IDC_CONTENT_CONTEXT_PASTE:
- *accel = ui::Accelerator(ui::VKEY_V, false, true, false);
+ *accel = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN);
return true;
case IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE:
- *accel = ui::Accelerator(ui::VKEY_V, true, true, false);
+ *accel = ui::Accelerator(ui::VKEY_V,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
return true;
case IDC_CONTENT_CONTEXT_SELECTALL:
- *accel = ui::Accelerator(ui::VKEY_A, false, true, false);
+ *accel = ui::Accelerator(ui::VKEY_A, ui::EF_CONTROL_DOWN);
return true;
default:
diff --git a/chrome/browser/ui/views/toolbar_view.cc b/chrome/browser/ui/views/toolbar_view.cc
index bdc2fe0..3c62d2a 100644
--- a/chrome/browser/ui/views/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar_view.cc
@@ -492,23 +492,24 @@ bool ToolbarView::GetAcceleratorForCommandId(int command_id,
// TODO(cpu) Bug 1109102. Query WebKit land for the actual bindings.
switch (command_id) {
case IDC_CUT:
- *accelerator = ui::Accelerator(ui::VKEY_X, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN);
return true;
case IDC_COPY:
- *accelerator = ui::Accelerator(ui::VKEY_C, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN);
return true;
case IDC_PASTE:
- *accelerator = ui::Accelerator(ui::VKEY_V, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN);
return true;
#if defined(USE_ASH)
// When USE_ASH is defined, IDC_NEW_WINDOW and IDC_NEW_INCOGNITO_WINDOW are
// handled outside Chrome, in ash/accelerators/accelerator_table.cc.
// crbug.com/120196
case IDC_NEW_WINDOW:
- *accelerator = ui::Accelerator(ui::VKEY_N, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_N, ui::EF_CONTROL_DOWN);
return true;
case IDC_NEW_INCOGNITO_WINDOW:
- *accelerator = ui::Accelerator(ui::VKEY_N, true, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_N,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
return true;
#endif
}
diff --git a/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc b/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc
index 8a6449e..726d68b 100644
--- a/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc
+++ b/chrome/browser/ui/views/unhandled_keyboard_event_handler_win.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/views/unhandled_keyboard_event_handler.h"
#include "base/logging.h"
+#include "content/public/browser/native_web_keyboard_event.h"
#include "ui/views/focus/focus_manager.h"
UnhandledKeyboardEventHandler::UnhandledKeyboardEventHandler() {
@@ -32,12 +33,7 @@ void UnhandledKeyboardEventHandler::HandleKeyboardEvent(
if (event.type == WebKit::WebInputEvent::RawKeyDown) {
ui::Accelerator accelerator(
static_cast<ui::KeyboardCode>(event.windowsKeyCode),
- (event.modifiers & NativeWebKeyboardEvent::ShiftKey) ==
- NativeWebKeyboardEvent::ShiftKey,
- (event.modifiers & NativeWebKeyboardEvent::ControlKey) ==
- NativeWebKeyboardEvent::ControlKey,
- (event.modifiers & NativeWebKeyboardEvent::AltKey) ==
- NativeWebKeyboardEvent::AltKey);
+ content::GetModifiersFromNativeWebKeyboardEvent(event));
// This is tricky: we want to set ignore_next_char_event_ if
// ProcessAccelerator returns true. But ProcessAccelerator might delete
diff --git a/chrome/browser/ui/views/web_dialog_view.cc b/chrome/browser/ui/views/web_dialog_view.cc
index 9fcc614..3496471 100644
--- a/chrome/browser/ui/views/web_dialog_view.cc
+++ b/chrome/browser/ui/views/web_dialog_view.cc
@@ -61,7 +61,7 @@ WebDialogView::WebDialogView(Profile* profile,
AddChildView(web_view_);
SetLayoutManager(new views::FillLayout);
// Pressing the ESC key will close the dialog.
- AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, false, false, false));
+ AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
}
WebDialogView::~WebDialogView() {
diff --git a/chrome/common/extensions/extension_commands.cc b/chrome/common/extensions/extension_commands.cc
index 0993d46..582bbcc 100644
--- a/chrome/common/extensions/extension_commands.cc
+++ b/chrome/common/extensions/extension_commands.cc
@@ -50,17 +50,15 @@ ui::Accelerator Command::ParseImpl(
}
// Now, parse it into an accelerator.
- bool ctrl = false;
- bool alt = false;
- bool shift = false;
+ int modifiers = ui::EF_NONE;
ui::KeyboardCode key = ui::VKEY_UNKNOWN;
for (size_t i = 0; i < tokens.size(); i++) {
if (tokens[i] == "Ctrl") {
- ctrl = true;
+ modifiers |= ui::EF_CONTROL_DOWN;
} else if (tokens[i] == "Alt") {
- alt = true;
+ modifiers |= ui::EF_ALT_DOWN;
} else if (tokens[i] == "Shift") {
- shift = true;
+ modifiers |= ui::EF_SHIFT_DOWN;
} else if (tokens[i] == "Command" && platform_key == "mac") {
// TODO(finnur): Implement for Mac.
} else if (tokens[i] == "Option" && platform_key == "mac") {
@@ -83,7 +81,8 @@ ui::Accelerator Command::ParseImpl(
return ui::Accelerator();
}
}
-
+ bool ctrl = (modifiers & ui::EF_CONTROL_DOWN) != 0;
+ bool alt = (modifiers & ui::EF_ALT_DOWN) != 0;
// We support Ctrl+foo, Alt+foo, Ctrl+Shift+foo, Alt+Shift+foo, but not
// Ctrl+Alt+foo. For a more detailed reason why we don't support Ctrl+Alt+foo:
// http://blogs.msdn.com/b/oldnewthing/archive/2004/03/29/101121.aspx.
@@ -96,7 +95,7 @@ ui::Accelerator Command::ParseImpl(
return ui::Accelerator();
}
- return ui::Accelerator(key, shift, ctrl, alt);
+ return ui::Accelerator(key, modifiers);
}
// static
diff --git a/chrome/common/extensions/extension_commands_unittest.cc b/chrome/common/extensions/extension_commands_unittest.cc
index 10bc67f..61b408a 100644
--- a/chrome/common/extensions/extension_commands_unittest.cc
+++ b/chrome/common/extensions/extension_commands_unittest.cc
@@ -13,17 +13,16 @@ class ExtensionCommandsTest : public testing::Test {
};
TEST(ExtensionCommandsTest, ExtensionCommandParsing) {
- const ui::Accelerator None = ui::Accelerator();
- const ui::Accelerator ShiftF =
- ui::Accelerator(ui::VKEY_F, true, false, false);
- const ui::Accelerator CtrlF =
- ui::Accelerator(ui::VKEY_F, false, true, false);
- const ui::Accelerator AltF =
- ui::Accelerator(ui::VKEY_F, false, false, true);
- const ui::Accelerator CtrlShiftF =
- ui::Accelerator(ui::VKEY_F, true, true, false);
- const ui::Accelerator AltShiftF =
- ui::Accelerator(ui::VKEY_F, true, false, true);
+ const ui::Accelerator none = ui::Accelerator();
+ const ui::Accelerator shift_f = ui::Accelerator(ui::VKEY_F,
+ ui::EF_SHIFT_DOWN);
+ const ui::Accelerator ctrl_f = ui::Accelerator(ui::VKEY_F,
+ ui::EF_CONTROL_DOWN);
+ const ui::Accelerator alt_f = ui::Accelerator(ui::VKEY_F, ui::EF_ALT_DOWN);
+ const ui::Accelerator ctrl_shift_f =
+ ui::Accelerator(ui::VKEY_F, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN);
+ const ui::Accelerator alt_shift_f =
+ ui::Accelerator(ui::VKEY_F, ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN);
const struct {
bool expected_result;
@@ -35,37 +34,37 @@ TEST(ExtensionCommandsTest, ExtensionCommandParsing) {
// Negative test (one or more missing required fields). We don't need to
// test |command_name| being blank as it is used as a key in the manifest,
// so it can't be blank (and we CHECK() when it is).
- { false, None, "command", "", "" },
- { false, None, "command", "Ctrl+f", "" },
- { false, None, "command", "", "description" },
+ { false, none, "command", "", "" },
+ { false, none, "command", "Ctrl+f", "" },
+ { false, none, "command", "", "description" },
// Ctrl+Alt is not permitted, see MSDN link in comments in Parse function.
- { false, None, "command", "Ctrl+Alt+F", "description" },
+ { false, none, "command", "Ctrl+Alt+F", "description" },
// Unsupported shortcuts/too many, or missing modifier.
- { false, None, "command", "A", "description" },
- { false, None, "command", "F10", "description" },
- { false, None, "command", "Ctrl+1", "description" },
- { false, None, "command", "Ctrl+F+G", "description" },
- { false, None, "command", "Ctrl+Alt+Shift+G", "description" },
+ { false, none, "command", "A", "description" },
+ { false, none, "command", "F10", "description" },
+ { false, none, "command", "Ctrl+1", "description" },
+ { false, none, "command", "Ctrl+F+G", "description" },
+ { false, none, "command", "Ctrl+Alt+Shift+G", "description" },
// Basic tests.
- { true, CtrlF, "command", "Ctrl+F", "description" },
- { true, ShiftF, "command", "Shift+F", "description" },
- { true, AltF, "command", "Alt+F", "description" },
- { true, CtrlShiftF, "command", "Ctrl+Shift+F", "description" },
- { true, AltShiftF, "command", "Alt+Shift+F", "description" },
+ { true, ctrl_f, "command", "Ctrl+F", "description" },
+ { true, shift_f, "command", "Shift+F", "description" },
+ { true, alt_f, "command", "Alt+F", "description" },
+ { true, ctrl_shift_f, "command", "Ctrl+Shift+F", "description" },
+ { true, alt_shift_f, "command", "Alt+Shift+F", "description" },
// Order tests.
- { true, CtrlF, "command", "F+Ctrl", "description" },
- { true, ShiftF, "command", "F+Shift", "description" },
- { true, AltF, "command", "F+Alt", "description" },
- { true, CtrlShiftF, "command", "F+Ctrl+Shift", "description" },
- { true, CtrlShiftF, "command", "F+Shift+Ctrl", "description" },
- { true, AltShiftF, "command", "F+Alt+Shift", "description" },
- { true, AltShiftF, "command", "F+Shift+Alt", "description" },
+ { true, ctrl_f, "command", "F+Ctrl", "description" },
+ { true, shift_f, "command", "F+Shift", "description" },
+ { true, alt_f, "command", "F+Alt", "description" },
+ { true, ctrl_shift_f, "command", "F+Ctrl+Shift", "description" },
+ { true, ctrl_shift_f, "command", "F+Shift+Ctrl", "description" },
+ { true, alt_shift_f, "command", "F+Alt+Shift", "description" },
+ { true, alt_shift_f, "command", "F+Shift+Alt", "description" },
// Case insensitivity is not OK.
- { false, CtrlF, "command", "Ctrl+f", "description" },
- { false, CtrlF, "command", "cTrL+F", "description" },
+ { false, ctrl_f, "command", "Ctrl+f", "description" },
+ { false, ctrl_f, "command", "cTrL+F", "description" },
// Skipping description is OK for browser- and pageActions.
- { true, CtrlF, "_execute_browser_action", "Ctrl+F", "" },
- { true, CtrlF, "_execute_page_action", "Ctrl+F", "" },
+ { true, ctrl_f, "_execute_browser_action", "Ctrl+F", "" },
+ { true, ctrl_f, "_execute_page_action", "Ctrl+F", "" },
};
// TODO(finnur): test Command/Options on Mac when implemented.
diff --git a/content/browser/renderer_host/native_web_keyboard_event.cc b/content/browser/renderer_host/native_web_keyboard_event.cc
new file mode 100644
index 0000000..4257415
--- /dev/null
+++ b/content/browser/renderer_host/native_web_keyboard_event.cc
@@ -0,0 +1,23 @@
+// Copyright (c) 2012 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 "content/public/browser/native_web_keyboard_event.h"
+
+#include "ui/base/events.h"
+
+namespace content {
+
+int GetModifiersFromNativeWebKeyboardEvent(
+ const NativeWebKeyboardEvent& event) {
+ int modifiers = ui::EF_NONE;
+ if (event.modifiers & NativeWebKeyboardEvent::ShiftKey)
+ modifiers |= ui::EF_SHIFT_DOWN;
+ if (event.modifiers & NativeWebKeyboardEvent::ControlKey)
+ modifiers |= ui::EF_CONTROL_DOWN;
+ if (event.modifiers & NativeWebKeyboardEvent::AltKey)
+ modifiers |= ui::EF_ALT_DOWN;
+ return modifiers;
+}
+
+} // namespace content
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 3ef8fff..3b96e9d 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -537,6 +537,7 @@
'browser/renderer_host/media/video_capture_host.h',
'browser/renderer_host/media/video_capture_manager.cc',
'browser/renderer_host/media/video_capture_manager.h',
+ 'browser/renderer_host/native_web_keyboard_event.cc',
'browser/renderer_host/native_web_keyboard_event_android.cc',
'browser/renderer_host/native_web_keyboard_event_aura.cc',
'browser/renderer_host/native_web_keyboard_event_gtk.cc',
diff --git a/content/public/browser/native_web_keyboard_event.h b/content/public/browser/native_web_keyboard_event.h
index 0d8c72d..6414c66 100644
--- a/content/public/browser/native_web_keyboard_event.h
+++ b/content/public/browser/native_web_keyboard_event.h
@@ -74,4 +74,12 @@ struct CONTENT_EXPORT NativeWebKeyboardEvent :
#endif
};
+namespace content {
+
+// Returns a bitmak of values from ui/base/events.h.
+CONTENT_EXPORT int GetModifiersFromNativeWebKeyboardEvent(
+ const NativeWebKeyboardEvent& event);
+
+} // namespace content
+
#endif // CONTENT_PUBLIC_BROWSER_NATIVE_WEB_KEYBOARD_EVENT_H_
diff --git a/ui/base/events.h b/ui/base/events.h
index 74cfd63..3408f4b 100644
--- a/ui/base/events.h
+++ b/ui/base/events.h
@@ -10,6 +10,10 @@
#include "ui/base/keycodes/keyboard_codes.h"
#include "ui/gfx/native_widget_types.h"
+#if defined(OS_WIN)
+#include <windows.h>
+#endif
+
namespace gfx {
class Point;
}
@@ -201,6 +205,10 @@ UI_EXPORT bool IsNoopEvent(const base::NativeEvent& event);
// Creates and returns no-op event.
UI_EXPORT base::NativeEvent CreateNoopEvent();
+#if defined(OS_WIN)
+int GetModifiersFromACCEL(const ACCEL& accel);
+#endif
+
} // namespace ui
#endif // UI_BASE_EVENTS_H_
diff --git a/ui/base/win/events_win.cc b/ui/base/win/events_win.cc
index 9f75b6f..a014ce0 100644
--- a/ui/base/win/events_win.cc
+++ b/ui/base/win/events_win.cc
@@ -300,4 +300,15 @@ base::NativeEvent CreateNoopEvent() {
return event;
}
+int GetModifiersFromACCEL(const ACCEL& accel) {
+ int modifiers = ui::EF_NONE;
+ if (accel.fVirt & FSHIFT)
+ modifiers |= ui::EF_SHIFT_DOWN;
+ if (accel.fVirt & FCONTROL)
+ modifiers |= ui::EF_CONTROL_DOWN;
+ if (accel.fVirt & FALT)
+ modifiers |= ui::EF_ALT_DOWN;
+ return modifiers;
+}
+
} // namespace ui
diff --git a/ui/views/accessible_pane_view.cc b/ui/views/accessible_pane_view.cc
index 0849c36..ab12435 100644
--- a/ui/views/accessible_pane_view.cc
+++ b/ui/views/accessible_pane_view.cc
@@ -16,11 +16,11 @@ AccessiblePaneView::AccessiblePaneView()
: pane_has_focus_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)),
focus_manager_(NULL),
- home_key_(ui::VKEY_HOME, false, false, false),
- end_key_(ui::VKEY_END, false, false, false),
- escape_key_(ui::VKEY_ESCAPE, false, false, false),
- left_key_(ui::VKEY_LEFT, false, false, false),
- right_key_(ui::VKEY_RIGHT, false, false, false) {
+ home_key_(ui::VKEY_HOME, ui::EF_NONE),
+ end_key_(ui::VKEY_END, ui::EF_NONE),
+ escape_key_(ui::VKEY_ESCAPE, ui::EF_NONE),
+ left_key_(ui::VKEY_LEFT, ui::EF_NONE),
+ right_key_(ui::VKEY_RIGHT, ui::EF_NONE) {
focus_search_.reset(new views::FocusSearch(this, true, true));
}
diff --git a/ui/views/bubble/bubble_delegate.cc b/ui/views/bubble/bubble_delegate.cc
index 92645a8..5dc3fcb 100644
--- a/ui/views/bubble/bubble_delegate.cc
+++ b/ui/views/bubble/bubble_delegate.cc
@@ -116,7 +116,7 @@ BubbleDelegateView::BubbleDelegateView()
use_focusless_(false),
parent_window_(NULL) {
set_background(views::Background::CreateSolidBackground(color_));
- AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, 0));
+ AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
}
BubbleDelegateView::BubbleDelegateView(
@@ -135,7 +135,7 @@ BubbleDelegateView::BubbleDelegateView(
use_focusless_(false),
parent_window_(NULL) {
set_background(views::Background::CreateSolidBackground(color_));
- AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, 0));
+ AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
}
BubbleDelegateView::~BubbleDelegateView() {}
diff --git a/ui/views/controls/button/text_button.cc b/ui/views/controls/button/text_button.cc
index 1e616da..c44b65e 100644
--- a/ui/views/controls/button/text_button.cc
+++ b/ui/views/controls/button/text_button.cc
@@ -285,9 +285,9 @@ void TextButtonBase::SetIsDefault(bool is_default) {
return;
is_default_ = is_default;
if (is_default_)
- AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, false, false, false));
+ AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
else
- RemoveAccelerator(ui::Accelerator(ui::VKEY_RETURN, false, false, false));
+ RemoveAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
SchedulePaint();
}
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc
index 05713b8..2fd1bb9 100644
--- a/ui/views/controls/menu/menu_controller.cc
+++ b/ui/views/controls/menu/menu_controller.cc
@@ -1061,7 +1061,7 @@ MenuController::SendAcceleratorResultType
if (!hot_view)
return ACCELERATOR_NOT_PROCESSED;
- ui::Accelerator accelerator(ui::VKEY_RETURN, false, false, false);
+ ui::Accelerator accelerator(ui::VKEY_RETURN, ui::EF_NONE);
hot_view->AcceleratorPressed(accelerator);
if (hot_view->GetClassName() == CustomButton::kViewClassName) {
CustomButton* button = static_cast<CustomButton*>(hot_view);
diff --git a/ui/views/controls/menu/menu_win.cc b/ui/views/controls/menu/menu_win.cc
index 6536ef1..564fd5c 100644
--- a/ui/views/controls/menu/menu_win.cc
+++ b/ui/views/controls/menu/menu_win.cc
@@ -440,7 +440,7 @@ void MenuWin::AddMenuItemInternal(int index,
string16 actual_label(label.empty() ? delegate()->GetLabel(item_id) : label);
// Find out if there is a shortcut we need to append to the label.
- ui::Accelerator accelerator(ui::VKEY_UNKNOWN, false, false, false);
+ ui::Accelerator accelerator(ui::VKEY_UNKNOWN, ui::EF_NONE);
if (delegate() && delegate()->GetAcceleratorInfo(item_id, &accelerator)) {
actual_label += L'\t';
actual_label += accelerator.GetShortcutText();
diff --git a/ui/views/controls/menu/native_menu_win.cc b/ui/views/controls/menu/native_menu_win.cc
index 8a9ab0c..2b4af01 100644
--- a/ui/views/controls/menu/native_menu_win.cc
+++ b/ui/views/controls/menu/native_menu_win.cc
@@ -691,7 +691,7 @@ void NativeMenuWin::UpdateMenuItemInfoForString(MENUITEMINFO* mii,
ReplaceSubstringsAfterOffset(&formatted, 0, L"\t", L" ");
if (type != ui::MenuModel::TYPE_SUBMENU) {
// Add accelerator details to the label if provided.
- ui::Accelerator accelerator(ui::VKEY_UNKNOWN, false, false, false);
+ ui::Accelerator accelerator(ui::VKEY_UNKNOWN, ui::EF_NONE);
if (model_->GetAcceleratorAt(model_index, &accelerator)) {
formatted += L"\t";
formatted += accelerator.GetShortcutText();
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane.cc b/ui/views/controls/tabbed_pane/tabbed_pane.cc
index 5e874f1..b5dc08d 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane.cc
+++ b/ui/views/controls/tabbed_pane/tabbed_pane.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -71,9 +71,10 @@ gfx::Size TabbedPane::GetPreferredSize() {
void TabbedPane::LoadAccelerators() {
// Ctrl+Shift+Tab
- AddAccelerator(ui::Accelerator(ui::VKEY_TAB, true, true, false));
+ AddAccelerator(ui::Accelerator(ui::VKEY_TAB,
+ ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN));
// Ctrl+Tab
- AddAccelerator(ui::Accelerator(ui::VKEY_TAB, false, true, false));
+ AddAccelerator(ui::Accelerator(ui::VKEY_TAB, ui::EF_CONTROL_DOWN));
}
void TabbedPane::Layout() {
diff --git a/ui/views/controls/textfield/native_textfield_win.cc b/ui/views/controls/textfield/native_textfield_win.cc
index f6119de7..3744d977 100644
--- a/ui/views/controls/textfield/native_textfield_win.cc
+++ b/ui/views/controls/textfield/native_textfield_win.cc
@@ -427,13 +427,13 @@ bool NativeTextfieldWin::GetAcceleratorForCommandId(int command_id,
// anywhere so we need to check for them explicitly here.
switch (command_id) {
case IDS_APP_CUT:
- *accelerator = ui::Accelerator(ui::VKEY_X, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN);
return true;
case IDS_APP_COPY:
- *accelerator = ui::Accelerator(ui::VKEY_C, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN);
return true;
case IDS_APP_PASTE:
- *accelerator = ui::Accelerator(ui::VKEY_V, false, true, false);
+ *accelerator = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN);
return true;
}
return container_view_->GetWidget()->GetAccelerator(command_id, accelerator);
diff --git a/ui/views/controls/tree/tree_view_win.cc b/ui/views/controls/tree/tree_view_win.cc
index 0547f6a..a878432 100644
--- a/ui/views/controls/tree/tree_view_win.cc
+++ b/ui/views/controls/tree/tree_view_win.cc
@@ -472,10 +472,7 @@ bool TreeView::OnKeyDown(ui::KeyboardCode virtual_key_code) {
} else if (virtual_key_code == ui::VKEY_RETURN && !process_enter_) {
Widget* widget = GetWidget();
DCHECK(widget);
- ui::Accelerator accelerator(ui::Accelerator(virtual_key_code,
- base::win::IsShiftPressed(),
- base::win::IsCtrlPressed(),
- base::win::IsAltPressed()));
+ ui::Accelerator accelerator(virtual_key_code, GetModifiersFromKeyState());
GetFocusManager()->ProcessAccelerator(accelerator);
return true;
}
diff --git a/ui/views/events/event.h b/ui/views/events/event.h
index 425bb1c..af4a06a 100644
--- a/ui/views/events/event.h
+++ b/ui/views/events/event.h
@@ -447,6 +447,10 @@ class VIEWS_EXPORT GestureEventForTest : public GestureEvent {
DISALLOW_COPY_AND_ASSIGN(GestureEventForTest);
};
+#if defined(OS_WIN)
+int GetModifiersFromKeyState();
+#endif
+
} // namespace views
#endif // UI_VIEWS_EVENTS_EVENT_H_
diff --git a/ui/views/events/event_win.cc b/ui/views/events/event_win.cc
index 82a83ed..4143f54 100644
--- a/ui/views/events/event_win.cc
+++ b/ui/views/events/event_win.cc
@@ -1,10 +1,11 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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 "ui/views/events/event.h"
#include "base/logging.h"
+#include "base/win/win_util.h"
#include "ui/base/keycodes/keyboard_code_conversion.h"
namespace views {
@@ -27,4 +28,15 @@ uint16 KeyEvent::GetUnmodifiedCharacter() const {
ui::GetCharacterFromKeyCode(key_code_, flags() & ui::EF_SHIFT_DOWN);
}
+int GetModifiersFromKeyState() {
+ int modifiers = ui::EF_NONE;
+ if (base::win::IsShiftPressed())
+ modifiers |= ui::EF_SHIFT_DOWN;
+ if (base::win::IsCtrlPressed())
+ modifiers |= ui::EF_CONTROL_DOWN;
+ if (base::win::IsAltPressed())
+ modifiers |= ui::EF_ALT_DOWN;
+ return modifiers;
+}
+
} // namespace views
diff --git a/ui/views/focus/focus_manager.cc b/ui/views/focus/focus_manager.cc
index 1799831..3c2c8d7 100644
--- a/ui/views/focus/focus_manager.cc
+++ b/ui/views/focus/focus_manager.cc
@@ -66,7 +66,7 @@ bool FocusManager::OnKeyEvent(const KeyEvent& event) {
(event.flags() & ~ui::EF_ALT_DOWN) == 0) {
// Trigger VKEY_MENU when only this key is pressed and released, and both
// press and release events are not handled by others.
- ui::Accelerator accelerator(ui::VKEY_MENU, false, false, false);
+ ui::Accelerator accelerator(ui::VKEY_MENU, ui::EF_NONE);
return ProcessAccelerator(accelerator);
} else if (event.type() != ui::ET_KEY_RELEASED) {
return false;
@@ -76,10 +76,14 @@ bool FocusManager::OnKeyEvent(const KeyEvent& event) {
return false;
#endif
- ui::Accelerator accelerator(event.key_code(),
- event.IsShiftDown(),
- event.IsControlDown(),
- event.IsAltDown());
+ int modifiers = ui::EF_NONE;
+ if (event.IsShiftDown())
+ modifiers |= ui::EF_SHIFT_DOWN;
+ if (event.IsControlDown())
+ modifiers |= ui::EF_CONTROL_DOWN;
+ if (event.IsAltDown())
+ modifiers |= ui::EF_ALT_DOWN;
+ ui::Accelerator accelerator(event.key_code(), modifiers);
accelerator.set_type(event.type());
if (event.type() == ui::ET_KEY_PRESSED) {
diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc
index 06b8448..b121e44 100644
--- a/ui/views/focus/focus_manager_unittest.cc
+++ b/ui/views/focus/focus_manager_unittest.cc
@@ -214,8 +214,8 @@ class TestAcceleratorTarget : public ui::AcceleratorTarget {
TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
FocusManager* focus_manager = GetFocusManager();
- ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
- ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, false, false, false);
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
+ ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE);
TestAcceleratorTarget return_target(true);
TestAcceleratorTarget escape_target(true);
@@ -314,7 +314,7 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
TEST_F(FocusManagerTest, HighPriorityHandlers) {
FocusManager* focus_manager = GetFocusManager();
- ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, false, false, false);
+ ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE);
TestAcceleratorTarget escape_target_high(true);
TestAcceleratorTarget escape_target_normal(true);
@@ -403,7 +403,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
TEST_F(FocusManagerTest, CallsEnabledAcceleratorTargetsOnly) {
FocusManager* focus_manager = GetFocusManager();
- ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
TestAcceleratorTarget return_target1(true);
TestAcceleratorTarget return_target2(true);
@@ -471,7 +471,7 @@ class SelfUnregisteringAcceleratorTarget : public ui::AcceleratorTarget {
TEST_F(FocusManagerTest, CallsSelfDeletingAcceleratorTarget) {
FocusManager* focus_manager = GetFocusManager();
- ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
SelfUnregisteringAcceleratorTarget target(return_accelerator, focus_manager);
EXPECT_EQ(target.accelerator_count(), 0);
EXPECT_EQ(NULL,
diff --git a/ui/views/focus/focus_manager_unittest_win.cc b/ui/views/focus/focus_manager_unittest_win.cc
index d6a9882..2a18e54 100644
--- a/ui/views/focus/focus_manager_unittest_win.cc
+++ b/ui/views/focus/focus_manager_unittest_win.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -206,8 +206,8 @@ TEST_F(FocusManagerTest, CreationForNativeRoot) {
TEST_F(FocusManagerTest, IgnoreKeyupForAccelerators) {
FocusManager* focus_manager = GetFocusManager();
MessageTrackingView* mtv = new MessageTrackingView();
- mtv->AddAccelerator(ui::Accelerator(ui::VKEY_0, false, false, false));
- mtv->AddAccelerator(ui::Accelerator(ui::VKEY_1, false, false, false));
+ mtv->AddAccelerator(ui::Accelerator(ui::VKEY_0, ui::EF_NONE));
+ mtv->AddAccelerator(ui::Accelerator(ui::VKEY_1, ui::EF_NONE));
GetContentsView()->AddChildView(mtv);
focus_manager->SetFocusedView(mtv);
diff --git a/ui/views/view_unittest.cc b/ui/views/view_unittest.cc
index 71b606f..3ebd39e 100644
--- a/ui/views/view_unittest.cc
+++ b/ui/views/view_unittest.cc
@@ -1129,7 +1129,7 @@ bool TestView::AcceleratorPressed(const ui::Accelerator& accelerator) {
#if defined(OS_WIN) && !defined(USE_AURA)
TEST_F(ViewTest, ActivateAccelerator) {
// Register a keyboard accelerator before the view is added to a window.
- ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
TestView* view = new TestView();
view->Reset();
view->AddAccelerator(return_accelerator);
@@ -1154,7 +1154,7 @@ TEST_F(ViewTest, ActivateAccelerator) {
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 1);
// Hit the escape key. Nothing should happen.
- ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, false, false, false);
+ ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE);
EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator));
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 1);
EXPECT_EQ(view->accelerator_count_map_[escape_accelerator], 0);
@@ -1195,7 +1195,7 @@ TEST_F(ViewTest, ActivateAccelerator) {
#if defined(OS_WIN) && !defined(USE_AURA)
TEST_F(ViewTest, HiddenViewWithAccelerator) {
- ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
TestView* view = new TestView();
view->Reset();
view->AddAccelerator(return_accelerator);
@@ -1225,7 +1225,7 @@ TEST_F(ViewTest, HiddenViewWithAccelerator) {
#if defined(OS_WIN) && !defined(USE_AURA)
TEST_F(ViewTest, ViewInHiddenWidgetWithAccelerator) {
- ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
TestView* view = new TestView();
view->Reset();
view->AddAccelerator(return_accelerator);
diff --git a/ui/views/widget/native_widget_win.cc b/ui/views/widget/native_widget_win.cc
index 7e53c8e..a5f9b9c 100644
--- a/ui/views/widget/native_widget_win.cc
+++ b/ui/views/widget/native_widget_win.cc
@@ -2025,12 +2025,15 @@ void NativeWidgetWin::OnSysCommand(UINT notification_code, CPoint click) {
// Handle SC_KEYMENU, which means that the user has pressed the ALT
// key and released it, so we should focus the menu bar.
if ((notification_code & sc_mask) == SC_KEYMENU && click.x == 0) {
+ int modifiers = ui::EF_NONE;
+ if (!!(GetKeyState(VK_SHIFT) & 0x8000))
+ modifiers |= ui::EF_SHIFT_DOWN;
+ if (!!(GetKeyState(VK_CONTROL) & 0x8000))
+ modifiers |= ui::EF_CONTROL_DOWN;
// Retrieve the status of shift and control keys to prevent consuming
// shift+alt keys, which are used by Windows to change input languages.
ui::Accelerator accelerator(ui::KeyboardCodeForWindowsKeyCode(VK_MENU),
- !!(GetKeyState(VK_SHIFT) & 0x8000),
- !!(GetKeyState(VK_CONTROL) & 0x8000),
- false);
+ modifiers);
GetWidget()->GetFocusManager()->ProcessAccelerator(accelerator);
return;
}
diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc
index 1cf1d670..c5c50cd 100644
--- a/ui/views/window/dialog_client_view.cc
+++ b/ui/views/window/dialog_client_view.cc
@@ -132,8 +132,7 @@ void DialogClientView::ShowDialogButtons() {
if (is_default_button)
default_button_ = ok_button_;
if (!(buttons & ui::DIALOG_BUTTON_CANCEL))
- ok_button_->AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE,
- false, false, false));
+ ok_button_->AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
AddChildView(ok_button_);
}
if (buttons & ui::DIALOG_BUTTON_CANCEL && !cancel_button_) {
@@ -156,7 +155,7 @@ void DialogClientView::ShowDialogButtons() {
is_default_button);
cancel_button_->SetGroup(kButtonGroup);
cancel_button_->AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE,
- false, false, false));
+ ui::EF_NONE));
if (is_default_button)
default_button_ = ok_button_;
AddChildView(cancel_button_);
@@ -164,7 +163,7 @@ void DialogClientView::ShowDialogButtons() {
if (!buttons) {
// Register the escape key as an accelerator which will close the window
// if there are no dialog buttons.
- AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, false, false, false));
+ AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
}
}