summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-29 00:33:35 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-29 00:33:35 +0000
commitbc1407f95bae3d7472ee0c85ef83ee10610b3f1f (patch)
treeeeb1e01423fefc13afe5738d809df200b5e50623 /views
parent62525634a6f5727216828f8e05a4f563be90dfeb (diff)
downloadchromium_src-bc1407f95bae3d7472ee0c85ef83ee10610b3f1f.zip
chromium_src-bc1407f95bae3d7472ee0c85ef83ee10610b3f1f.tar.gz
chromium_src-bc1407f95bae3d7472ee0c85ef83ee10610b3f1f.tar.bz2
Relanding keyboard code refactoring:
http://codereview.chromium.org/248010/show Changing the KeyboardEvent to use a KeyboardCode instead of a w_char. Led to several places where I had to switch from VK_ to VKEY_. Also cleaned-up the table view OnKeyDown method. Since TableView is a NativeControl it can use the NativeControl::OnKeyDown directly. BUG=None TEST=Make sure short-cuts works as expected, especially in the omnibox. Review URL: http://codereview.chromium.org/251020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r--views/accelerator.h7
-rw-r--r--views/controls/button/custom_button.cc6
-rw-r--r--views/controls/button/menu_button.cc3
-rw-r--r--views/controls/button/native_button.cc10
-rw-r--r--views/controls/combobox/combobox.cc4
-rw-r--r--views/controls/link.cc8
-rw-r--r--views/controls/menu/menu_win.cc3
-rw-r--r--views/controls/menu/native_menu_gtk.cc3
-rw-r--r--views/controls/menu/native_menu_win.cc3
-rw-r--r--views/controls/native_control.cc5
-rw-r--r--views/controls/native_control.h3
-rw-r--r--views/controls/scrollbar/bitmap_scroll_bar.cc19
-rw-r--r--views/controls/scrollbar/native_scroll_bar_win.cc19
-rw-r--r--views/controls/table/group_table_view.cc25
-rw-r--r--views/controls/table/group_table_view.h2
-rw-r--r--views/controls/table/table_view.cc12
-rw-r--r--views/controls/table/table_view.h6
-rw-r--r--views/controls/table/table_view_observer.h2
-rw-r--r--views/controls/textfield/native_textfield_win.cc7
-rw-r--r--views/controls/textfield/textfield.cc9
-rw-r--r--views/controls/tree/tree_view.cc7
-rw-r--r--views/controls/tree/tree_view.h3
-rw-r--r--views/event.h12
-rw-r--r--views/event_gtk.cc2
-rw-r--r--views/event_win.cc7
-rw-r--r--views/focus/accelerator_handler_win.cc4
-rw-r--r--views/focus/focus_manager.cc6
-rw-r--r--views/view_unittest.cc6
-rw-r--r--views/widget/root_view.cc4
-rw-r--r--views/widget/widget_win.cc6
30 files changed, 113 insertions, 100 deletions
diff --git a/views/accelerator.h b/views/accelerator.h
index bb8f91f..1848c98 100644
--- a/views/accelerator.h
+++ b/views/accelerator.h
@@ -13,13 +13,14 @@
#include <string>
+#include "base/keyboard_codes.h"
#include "views/event.h"
namespace views {
class Accelerator {
public:
- Accelerator(int keycode,
+ Accelerator(base::KeyboardCode keycode,
bool shift_pressed, bool ctrl_pressed, bool alt_pressed)
: key_code_(keycode) {
modifiers_ = 0;
@@ -74,7 +75,7 @@ class Accelerator {
return (modifiers_ & Event::EF_ALT_DOWN) == Event::EF_ALT_DOWN;
}
- int GetKeyCode() const {
+ base::KeyboardCode GetKeyCode() const {
return key_code_;
}
@@ -83,7 +84,7 @@ class Accelerator {
private:
// The window keycode (VK_...).
- int key_code_;
+ base::KeyboardCode key_code_;
// The state of the Shift/Ctrl/Alt keys (see event.h).
int modifiers_;
diff --git a/views/controls/button/custom_button.cc b/views/controls/button/custom_button.cc
index e507d93..348e527 100644
--- a/views/controls/button/custom_button.cc
+++ b/views/controls/button/custom_button.cc
@@ -175,10 +175,10 @@ bool CustomButton::OnKeyPressed(const KeyEvent& e) {
// Space sets button state to pushed. Enter clicks the button. This matches
// the Windows native behavior of buttons, where Space clicks the button
// on KeyRelease and Enter clicks the button on KeyPressed.
- if (e.GetCharacter() == base::VKEY_SPACE) {
+ if (e.GetKeyCode() == base::VKEY_SPACE) {
SetState(BS_PUSHED);
return true;
- } else if (e.GetCharacter() == base::VKEY_RETURN) {
+ } else if (e.GetKeyCode() == base::VKEY_RETURN) {
SetState(BS_NORMAL);
NotifyClick(e);
return true;
@@ -189,7 +189,7 @@ bool CustomButton::OnKeyPressed(const KeyEvent& e) {
bool CustomButton::OnKeyReleased(const KeyEvent& e) {
if (state_ != BS_DISABLED) {
- if (e.GetCharacter() == base::VKEY_SPACE) {
+ if (e.GetKeyCode() == base::VKEY_SPACE) {
SetState(BS_NORMAL);
NotifyClick(e);
return true;
diff --git a/views/controls/button/menu_button.cc b/views/controls/button/menu_button.cc
index 25a415d..5b353f3 100644
--- a/views/controls/button/menu_button.cc
+++ b/views/controls/button/menu_button.cc
@@ -214,7 +214,8 @@ void MenuButton::OnMouseReleased(const MouseEvent& e,
// When the space bar or the enter key is pressed we need to show the menu.
bool MenuButton::OnKeyReleased(const KeyEvent& e) {
#if defined(OS_WIN)
- if ((e.GetCharacter() == VK_SPACE) || (e.GetCharacter() == VK_RETURN)) {
+ if ((e.GetKeyCode() == base::VKEY_SPACE) ||
+ (e.GetKeyCode() == base::VKEY_RETURN)) {
return Activate();
}
#else
diff --git a/views/controls/button/native_button.cc b/views/controls/button/native_button.cc
index e36719c..811fb56 100644
--- a/views/controls/button/native_button.cc
+++ b/views/controls/button/native_button.cc
@@ -10,6 +10,7 @@
#endif
#include "app/l10n_util.h"
+#include "base/keyboard_codes.h"
#include "base/logging.h"
namespace views {
@@ -73,17 +74,12 @@ void NativeButton::SetLabel(const std::wstring& label) {
}
void NativeButton::SetIsDefault(bool is_default) {
-#if defined(OS_WIN)
- int return_code = VK_RETURN;
-#else
- int return_code = GDK_Return;
-#endif
if (is_default == is_default_)
return;
if (is_default)
- AddAccelerator(Accelerator(return_code, false, false, false));
+ AddAccelerator(Accelerator(base::VKEY_RETURN, false, false, false));
else
- RemoveAccelerator(Accelerator(return_code, false, false, false));
+ RemoveAccelerator(Accelerator(base::VKEY_RETURN, false, false, false));
SetAppearsAsDefault(is_default);
}
diff --git a/views/controls/combobox/combobox.cc b/views/controls/combobox/combobox.cc
index 5c5596f..e184dcb 100644
--- a/views/controls/combobox/combobox.cc
+++ b/views/controls/combobox/combobox.cc
@@ -69,10 +69,10 @@ void Combobox::SetEnabled(bool flag) {
native_wrapper_->UpdateEnabled();
}
-// VK_ESCAPE should be handled by this view when the drop down list is active.
+// VKEY_ESCAPE should be handled by this view when the drop down list is active.
// In other words, the list should be closed instead of the dialog.
bool Combobox::SkipDefaultKeyEventProcessing(const KeyEvent& e) {
- if (e.GetCharacter() != base::VKEY_ESCAPE ||
+ if (e.GetKeyCode() != base::VKEY_ESCAPE ||
e.IsShiftDown() || e.IsControlDown() || e.IsAltDown()) {
return false;
}
diff --git a/views/controls/link.cc b/views/controls/link.cc
index f2887e0..6619568 100644
--- a/views/controls/link.cc
+++ b/views/controls/link.cc
@@ -10,6 +10,7 @@
#include "app/gfx/color_utils.h"
#include "app/gfx/font.h"
+#include "base/keyboard_codes.h"
#include "base/logging.h"
#include "views/event.h"
@@ -123,8 +124,8 @@ void Link::OnMouseReleased(const MouseEvent& e, bool canceled) {
bool Link::OnKeyPressed(const KeyEvent& e) {
#if defined(OS_WIN)
- bool activate = ((e.GetCharacter() == VK_SPACE) ||
- (e.GetCharacter() == VK_RETURN));
+ bool activate = ((e.GetKeyCode() == base::VKEY_SPACE) ||
+ (e.GetKeyCode() == base::VKEY_RETURN));
#else
bool activate = false;
NOTIMPLEMENTED();
@@ -146,7 +147,8 @@ bool Link::OnKeyPressed(const KeyEvent& e) {
bool Link::SkipDefaultKeyEventProcessing(const KeyEvent& e) {
#if defined(OS_WIN)
// Make sure we don't process space or enter as accelerators.
- return (e.GetCharacter() == VK_SPACE) || (e.GetCharacter() == VK_RETURN);
+ return (e.GetKeyCode() == base::VKEY_SPACE) ||
+ (e.GetKeyCode() == base::VKEY_RETURN);
#else
NOTIMPLEMENTED();
return false;
diff --git a/views/controls/menu/menu_win.cc b/views/controls/menu/menu_win.cc
index 68cc8ff..852304f 100644
--- a/views/controls/menu/menu_win.cc
+++ b/views/controls/menu/menu_win.cc
@@ -11,6 +11,7 @@
#include "app/l10n_util.h"
#include "app/l10n_util_win.h"
#include "base/gfx/rect.h"
+#include "base/keyboard_codes.h"
#include "base/logging.h"
#include "base/stl_util-inl.h"
#include "base/string_util.h"
@@ -441,7 +442,7 @@ void MenuWin::AddMenuItemInternal(int index,
delegate()->GetLabel(item_id) : label);
// Find out if there is a shortcut we need to append to the label.
- views::Accelerator accelerator(0, false, false, false);
+ views::Accelerator accelerator(base::VKEY_UNKNOWN, false, false, false);
if (delegate() && delegate()->GetAcceleratorInfo(item_id, &accelerator)) {
actual_label += L'\t';
actual_label += accelerator.GetShortcutText();
diff --git a/views/controls/menu/native_menu_gtk.cc b/views/controls/menu/native_menu_gtk.cc
index 55e10ae..7bcb7b9 100644
--- a/views/controls/menu/native_menu_gtk.cc
+++ b/views/controls/menu/native_menu_gtk.cc
@@ -7,6 +7,7 @@
#include <string>
#include "base/gfx/gtk_util.h"
+#include "base/keyboard_codes.h"
#include "base/string_util.h"
#include "base/time.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -162,7 +163,7 @@ void NativeMenuGtk::AddMenuItemAt(int index,
submenu->GetNativeMenu());
}
- views::Accelerator accelerator(0, false, false, false);
+ views::Accelerator accelerator(base::VKEY_UNKNOWN, false, false, false);
if (model_->GetAcceleratorAt(index, &accelerator)) {
// TODO(beng): accelerators w/gtk_widget_add_accelerator.
}
diff --git a/views/controls/menu/native_menu_win.cc b/views/controls/menu/native_menu_win.cc
index f078d71..0af8a9af 100644
--- a/views/controls/menu/native_menu_win.cc
+++ b/views/controls/menu/native_menu_win.cc
@@ -8,6 +8,7 @@
#include "app/gfx/font.h"
#include "app/l10n_util.h"
#include "app/l10n_util_win.h"
+#include "base/keyboard_codes.h"
#include "base/logging.h"
#include "base/stl_util-inl.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -458,7 +459,7 @@ void NativeMenuWin::UpdateMenuItemInfoForString(
Menu2Model::ItemType type = model_->GetTypeAt(model_index);
if (type != Menu2Model::TYPE_SUBMENU) {
// Add accelerator details to the label if provided.
- views::Accelerator accelerator(0, false, false, false);
+ views::Accelerator accelerator(base::VKEY_UNKNOWN, false, false, false);
if (model_->GetAcceleratorAt(model_index, &accelerator)) {
formatted += L"\t";
formatted += accelerator.GetShortcutText();
diff --git a/views/controls/native_control.cc b/views/controls/native_control.cc
index 0c89664..700da66 100644
--- a/views/controls/native_control.cc
+++ b/views/controls/native_control.cc
@@ -11,6 +11,7 @@
#include <atlmisc.h>
#include "app/l10n_util_win.h"
+#include "base/keyboard_codes.h"
#include "base/logging.h"
#include "base/win_util.h"
#include "views/background.h"
@@ -363,8 +364,8 @@ LRESULT CALLBACK NativeControl::NativeControlWndProc(HWND window, UINT message,
DCHECK(native_control);
if (message == WM_KEYDOWN &&
- native_control->OnKeyDown(static_cast<int>(w_param))) {
- return 0;
+ native_control->OnKeyDown(win_util::WinToKeyboardCode(w_param))) {
+ return 0;
} else if (message == WM_SETFOCUS) {
// Let the focus manager know that the focus changed.
FocusManager* focus_manager = native_control->GetFocusManager();
diff --git a/views/controls/native_control.h b/views/controls/native_control.h
index 972ef36..ed565e6 100644
--- a/views/controls/native_control.h
+++ b/views/controls/native_control.h
@@ -7,6 +7,7 @@
#include <windows.h>
+#include "base/keyboard_codes.h"
#include "views/view.h"
namespace views {
@@ -79,7 +80,7 @@ class NativeControl : public View {
// Invoked when a key is pressed on the control.
// Should return true if the key message was processed, false otherwise.
- virtual bool OnKeyDown(int virtual_key_code) { return false; }
+ virtual bool OnKeyDown(base::KeyboardCode virtual_key_code) { return false; }
// Returns additional extended style flags. When subclasses call
// CreateWindowEx in order to create the underlying control, they must OR the
diff --git a/views/controls/scrollbar/bitmap_scroll_bar.cc b/views/controls/scrollbar/bitmap_scroll_bar.cc
index b04e0b0..98a95ff 100644
--- a/views/controls/scrollbar/bitmap_scroll_bar.cc
+++ b/views/controls/scrollbar/bitmap_scroll_bar.cc
@@ -11,6 +11,7 @@
#include "app/gfx/canvas.h"
#include "app/l10n_util.h"
#include "base/compiler_specific.h"
+#include "base/keyboard_codes.h"
#include "base/message_loop.h"
#include "grit/app_strings.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -494,33 +495,33 @@ bool BitmapScrollBar::OnMouseWheel(const MouseWheelEvent& event) {
bool BitmapScrollBar::OnKeyPressed(const KeyEvent& event) {
ScrollAmount amount = SCROLL_NONE;
- switch (event.GetCharacter()) {
- case VK_UP:
+ switch (event.GetKeyCode()) {
+ case base::VKEY_UP:
if (!IsHorizontal())
amount = SCROLL_PREV_LINE;
break;
- case VK_DOWN:
+ case base::VKEY_DOWN:
if (!IsHorizontal())
amount = SCROLL_NEXT_LINE;
break;
- case VK_LEFT:
+ case base::VKEY_LEFT:
if (IsHorizontal())
amount = SCROLL_PREV_LINE;
break;
- case VK_RIGHT:
+ case base::VKEY_RIGHT:
if (IsHorizontal())
amount = SCROLL_NEXT_LINE;
break;
- case VK_PRIOR:
+ case base::VKEY_PRIOR:
amount = SCROLL_PREV_PAGE;
break;
- case VK_NEXT:
+ case base::VKEY_NEXT:
amount = SCROLL_NEXT_PAGE;
break;
- case VK_HOME:
+ case base::VKEY_HOME:
amount = SCROLL_START;
break;
- case VK_END:
+ case base::VKEY_END:
amount = SCROLL_END;
break;
}
diff --git a/views/controls/scrollbar/native_scroll_bar_win.cc b/views/controls/scrollbar/native_scroll_bar_win.cc
index b15be33..00b3b8c 100644
--- a/views/controls/scrollbar/native_scroll_bar_win.cc
+++ b/views/controls/scrollbar/native_scroll_bar_win.cc
@@ -7,6 +7,7 @@
#include <algorithm>
#include <string>
+#include "base/keyboard_codes.h"
#include "base/message_loop.h"
#include "base/window_impl.h"
#include "views/controls/scrollbar/native_scroll_bar.h"
@@ -229,32 +230,32 @@ bool NativeScrollBarWin::OnKeyPressed(const KeyEvent& event) {
if (!sb_container_)
return false;
int code = -1;
- switch (event.GetCharacter()) {
- case VK_UP:
+ switch (event.GetKeyCode()) {
+ case base::VKEY_UP:
if (!native_scroll_bar_->IsHorizontal())
code = SB_LINEUP;
break;
- case VK_PRIOR:
+ case base::VKEY_PRIOR:
code = SB_PAGEUP;
break;
- case VK_NEXT:
+ case base::VKEY_NEXT:
code = SB_PAGEDOWN;
break;
- case VK_DOWN:
+ case base::VKEY_DOWN:
if (!native_scroll_bar_->IsHorizontal())
code = SB_LINEDOWN;
break;
- case VK_HOME:
+ case base::VKEY_HOME:
code = SB_TOP;
break;
- case VK_END:
+ case base::VKEY_END:
code = SB_BOTTOM;
break;
- case VK_LEFT:
+ case base::VKEY_LEFT:
if (native_scroll_bar_->IsHorizontal())
code = SB_LINELEFT;
break;
- case VK_RIGHT:
+ case base::VKEY_RIGHT:
if (native_scroll_bar_->IsHorizontal())
code = SB_LINERIGHT;
break;
diff --git a/views/controls/table/group_table_view.cc b/views/controls/table/group_table_view.cc
index 5f26756..a70515d 100644
--- a/views/controls/table/group_table_view.cc
+++ b/views/controls/table/group_table_view.cc
@@ -61,7 +61,7 @@ void GroupTableView::SyncSelection() {
}
}
-void GroupTableView::OnKeyDown(unsigned short virtual_keycode) {
+bool GroupTableView::OnKeyDown(base::KeyboardCode virtual_keycode) {
// In a list view, multiple items can be selected but only one item has the
// focus. This creates a problem when the arrow keys are used for navigating
// between items in the list view. An example will make this more clear:
@@ -87,9 +87,9 @@ void GroupTableView::OnKeyDown(unsigned short virtual_keycode) {
// detect that one of the arrow keys is pressed. Thus, when it comes time
// for the list view control to actually switch the focus, the right item
// will be selected.
- if ((virtual_keycode != VK_UP) && (virtual_keycode != VK_DOWN)) {
- TableView::OnKeyDown(virtual_keycode);
- return;
+ if ((virtual_keycode != base::VKEY_UP) &&
+ (virtual_keycode != base::VKEY_DOWN)) {
+ return TableView::OnKeyDown(virtual_keycode);
}
// We start by finding the index of the item with the focus. If no item
@@ -102,27 +102,28 @@ void GroupTableView::OnKeyDown(unsigned short virtual_keycode) {
}
}
- if (focused_index == row_count) {
- return;
- }
+ if (focused_index == row_count)
+ return false;
+
DCHECK_LT(focused_index, row_count);
// Nothing to do if the item which has the focus is not part of a group.
GroupRange group_range;
model_->GetGroupRangeForItem(focused_index, &group_range);
- if (group_range.length == 1) {
- return;
- }
+ if (group_range.length == 1)
+ return false;
// If the user pressed the UP key, then the focus should be set to the
// topmost element in the group. If the user pressed the DOWN key, the focus
// should be set to the bottommost element.
- if (virtual_keycode == VK_UP) {
+ if (virtual_keycode == base::VKEY_UP) {
SetFocusOnItem(group_range.start);
} else {
- DCHECK_EQ(virtual_keycode, VK_DOWN);
+ DCHECK_EQ(virtual_keycode, base::VKEY_DOWN);
SetFocusOnItem(group_range.start + group_range.length - 1);
}
+
+ return false;
}
void GroupTableView::PrepareForSort() {
diff --git a/views/controls/table/group_table_view.h b/views/controls/table/group_table_view.h
index 640776e..b137083 100644
--- a/views/controls/table/group_table_view.h
+++ b/views/controls/table/group_table_view.h
@@ -55,7 +55,7 @@ class GroupTableView : public TableView {
// keys), we must take action when an arrow key is pressed. The reason we
// need to process this message has to do with the manner in which the focus
// needs to be set on a group item when a group is selected.
- virtual void OnKeyDown(unsigned short virtual_keycode);
+ virtual bool OnKeyDown(base::KeyboardCode virtual_keycode);
// Overriden to make sure rows in the same group stay grouped together.
virtual int CompareRows(int model_row1, int model_row2);
diff --git a/views/controls/table/table_view.cc b/views/controls/table/table_view.cc
index 303d458..114019f 100644
--- a/views/controls/table/table_view.cc
+++ b/views/controls/table/table_view.cc
@@ -1057,15 +1057,6 @@ LRESULT TableView::OnNotify(int w_param, LPNMHDR hdr) {
OnDoubleClick();
break;
- // If we see a key down message, we need to invoke the OnKeyDown handler
- // in order to give our class (or any subclass) and opportunity to perform
- // a key down triggered action, if such action is necessary.
- case LVN_KEYDOWN: {
- NMLVKEYDOWN* key_down_message = reinterpret_cast<NMLVKEYDOWN*>(hdr);
- OnKeyDown(key_down_message->wVKey);
- break;
- }
-
case LVN_COLUMNCLICK: {
const TableColumn& column = GetColumnAtPosition(
reinterpret_cast<NMLISTVIEW*>(hdr)->iSubItem);
@@ -1459,10 +1450,11 @@ void TableView::OnSelectedStateChanged() {
}
}
-void TableView::OnKeyDown(unsigned short virtual_keycode) {
+bool TableView::OnKeyDown(base::KeyboardCode virtual_keycode) {
if (!ignore_listview_change_ && table_view_observer_) {
table_view_observer_->OnKeyDown(virtual_keycode);
}
+ return false; // Let the key event be processed as ususal.
}
void TableView::OnCheckedStateChanged(int model_row, bool is_checked) {
diff --git a/views/controls/table/table_view.h b/views/controls/table/table_view.h
index b8bda67..a1cce45d 100644
--- a/views/controls/table/table_view.h
+++ b/views/controls/table/table_view.h
@@ -16,6 +16,7 @@ typedef struct tagNMLVCUSTOMDRAW NMLVCUSTOMDRAW;
#include <vector>
#include "app/table_model_observer.h"
+#include "base/keyboard_codes.h"
#include "third_party/skia/include/core/SkColor.h"
#if defined(OS_WIN)
// TODO(port): remove the ifdef when native_control.h is ported.
@@ -250,9 +251,8 @@ class TableView : public NativeControl,
// Notification from the ListView that the user middle clicked the table.
virtual void OnMiddleClick();
- // Subclasses can implement this method if they need to be notified of a key
- // press event. Other wise, it appeals to table_view_observer_
- virtual void OnKeyDown(unsigned short virtual_keycode);
+ // Overridden from NativeControl. Notifies the observer.
+ virtual bool OnKeyDown(base::KeyboardCode virtual_keycode);
// Invoked to customize the colors or font at a particular cell. If you
// change the colors or font, return true. This is only invoked if
diff --git a/views/controls/table/table_view_observer.h b/views/controls/table/table_view_observer.h
index c88cb21..6b8bef2 100644
--- a/views/controls/table/table_view_observer.h
+++ b/views/controls/table/table_view_observer.h
@@ -24,7 +24,7 @@ class TableViewObserver {
virtual void OnMiddleClick() {}
// Optional method invoked when the user hits a key with the table in focus.
- virtual void OnKeyDown(unsigned short virtual_keycode) {}
+ virtual void OnKeyDown(base::KeyboardCode virtual_keycode) {}
// Invoked when the user presses the delete key.
virtual void OnTableViewDelete(TableView* table_view) {}
diff --git a/views/controls/textfield/native_textfield_win.cc b/views/controls/textfield/native_textfield_win.cc
index 1872492..d027156 100644
--- a/views/controls/textfield/native_textfield_win.cc
+++ b/views/controls/textfield/native_textfield_win.cc
@@ -9,6 +9,7 @@
#include "app/win_util.h"
#include "base/clipboard.h"
#include "base/gfx/native_theme.h"
+#include "base/keyboard_codes.h"
#include "base/scoped_clipboard_writer.h"
#include "base/string_util.h"
#include "base/win_util.h"
@@ -252,13 +253,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 = views::Accelerator(L'X', false, true, false);
+ *accelerator = views::Accelerator(base::VKEY_X, false, true, false);
return true;
case IDS_APP_COPY:
- *accelerator = views::Accelerator(L'C', false, true, false);
+ *accelerator = views::Accelerator(base::VKEY_C, false, true, false);
return true;
case IDS_APP_PASTE:
- *accelerator = views::Accelerator(L'V', false, true, false);
+ *accelerator = views::Accelerator(base::VKEY_V, false, true, false);
return true;
}
return container_view_->GetWidget()->GetAccelerator(command_id, accelerator);
diff --git a/views/controls/textfield/textfield.cc b/views/controls/textfield/textfield.cc
index 368e7fd..bf12e42 100644
--- a/views/controls/textfield/textfield.cc
+++ b/views/controls/textfield/textfield.cc
@@ -14,6 +14,7 @@
#include "base/win_util.h"
#endif
+#include "base/keyboard_codes.h"
#include "base/string_util.h"
#include "views/controls/textfield/native_textfield_wrapper.h"
#include "views/widget/widget.h"
@@ -221,14 +222,14 @@ bool Textfield::SkipDefaultKeyEventProcessing(const KeyEvent& e) {
#if defined(OS_WIN)
// TODO(hamaji): Figure out which keyboard combinations we need to add here,
// similar to LocationBarView::SkipDefaultKeyEventProcessing.
- const int c = e.GetCharacter();
- if (c == VK_BACK)
+ base::KeyboardCode key = e.GetKeyCode();
+ if (key == base::VKEY_BACK)
return true; // We'll handle BackSpace ourselves.
// We don't translate accelerators for ALT + NumPad digit, they are used for
// entering special characters. We do translate alt-home.
- if (e.IsAltDown() && (c != VK_HOME) &&
- win_util::IsNumPadDigit(c, e.IsExtendedKey()))
+ if (e.IsAltDown() && (key != base::VKEY_HOME) &&
+ win_util::IsNumPadDigit(key, e.IsExtendedKey()))
return true;
#endif
return false;
diff --git a/views/controls/tree/tree_view.cc b/views/controls/tree/tree_view.cc
index 196e773..c84ef8b 100644
--- a/views/controls/tree/tree_view.cc
+++ b/views/controls/tree/tree_view.cc
@@ -12,6 +12,7 @@
#include "app/l10n_util_win.h"
#include "app/resource_bundle.h"
#include "base/gfx/point.h"
+#include "base/keyboard_codes.h"
#include "base/stl_util-inl.h"
#include "base/win_util.h"
#include "grit/app_resources.h"
@@ -459,7 +460,7 @@ LRESULT TreeView::OnNotify(int w_param, LPNMHDR l_param) {
return 0;
}
-bool TreeView::OnKeyDown(int virtual_key_code) {
+bool TreeView::OnKeyDown(base::KeyboardCode virtual_key_code) {
if (virtual_key_code == VK_F2) {
if (!GetEditingNode()) {
TreeModelNode* selected_node = GetSelectedNode();
@@ -467,10 +468,10 @@ bool TreeView::OnKeyDown(int virtual_key_code) {
StartEditing(selected_node);
}
return true;
- } else if (virtual_key_code == VK_RETURN && !process_enter_) {
+ } else if (virtual_key_code == base::VKEY_RETURN && !process_enter_) {
Widget* widget = GetWidget();
DCHECK(widget);
- Accelerator accelerator(Accelerator(static_cast<int>(virtual_key_code),
+ Accelerator accelerator(Accelerator(virtual_key_code,
win_util::IsShiftPressed(),
win_util::IsCtrlPressed(),
win_util::IsAltPressed()));
diff --git a/views/controls/tree/tree_view.h b/views/controls/tree/tree_view.h
index 72667bf..0011835 100644
--- a/views/controls/tree/tree_view.h
+++ b/views/controls/tree/tree_view.h
@@ -12,6 +12,7 @@
#include "app/tree_model.h"
#include "base/basictypes.h"
+#include "base/keyboard_codes.h"
#include "base/logging.h"
#include "views/controls/native_control.h"
@@ -159,7 +160,7 @@ class TreeView : public NativeControl, TreeModelObserver {
// We pay attention to key down for two reasons: to circumvent VK_ENTER from
// toggling the expaned state when processes_enter_ is false, and to have F2
// start editting.
- virtual bool OnKeyDown(int virtual_key_code);
+ virtual bool OnKeyDown(base::KeyboardCode virtual_key_code);
virtual void OnContextMenu(const POINT& location);
diff --git a/views/event.h b/views/event.h
index 5a6efd9..138327d 100644
--- a/views/event.h
+++ b/views/event.h
@@ -7,6 +7,7 @@
#include "base/basictypes.h"
#include "base/gfx/point.h"
+#include "base/keyboard_codes.h"
#if defined(OS_LINUX)
typedef struct _GdkEventKey GdkEventKey;
@@ -242,7 +243,10 @@ class KeyEvent : public Event {
public:
#if defined(OS_WIN)
// Create a new key event
- KeyEvent(EventType type, int ch, int repeat_count, int message_flags);
+ KeyEvent(EventType type,
+ base::KeyboardCode key_code,
+ int repeat_count,
+ int message_flags);
#elif defined(OS_LINUX)
explicit KeyEvent(GdkEventKey* event);
#endif
@@ -251,8 +255,8 @@ class KeyEvent : public Event {
// the Windows value.
// On GTK, you can use the methods in keyboard_code_conversion_gtk.cc to
// convert this value back to a GDK value if needed.
- int GetCharacter() const {
- return character_;
+ base::KeyboardCode GetKeyCode() const {
+ return key_code_;
}
#if defined(OS_WIN)
@@ -268,7 +272,7 @@ class KeyEvent : public Event {
int GetKeyStateFlags() const;
#endif
- int character_;
+ base::KeyboardCode key_code_;
int repeat_count_;
int message_flags_;
diff --git a/views/event_gtk.cc b/views/event_gtk.cc
index 71fd056..c5970b7 100644
--- a/views/event_gtk.cc
+++ b/views/event_gtk.cc
@@ -18,7 +18,7 @@ KeyEvent::KeyEvent(GdkEventKey* event)
Event::ET_KEY_PRESSED : Event::ET_KEY_RELEASED,
GetFlagsFromGdkState(event->state)),
// TODO(erg): All these values are iffy.
- character_(base::WindowsKeyCodeForGdkKeyCode(event->keyval)),
+ key_code_(base::WindowsKeyCodeForGdkKeyCode(event->keyval)),
repeat_count_(0),
message_flags_(0) {
}
diff --git a/views/event_win.cc b/views/event_win.cc
index 28d1330..da6457e 100644
--- a/views/event_win.cc
+++ b/views/event_win.cc
@@ -37,12 +37,13 @@ int Event::ConvertWindowsFlags(UINT win_flags) {
return r;
}
-KeyEvent::KeyEvent(EventType type, int ch, int repeat_count, int message_flags)
+KeyEvent::KeyEvent(EventType type, base::KeyboardCode key_code,
+ int repeat_count, int message_flags)
: Event(type, GetKeyStateFlags()),
- character_(ch),
+ key_code_(key_code),
repeat_count_(repeat_count),
message_flags_(message_flags) {
- }
+}
int KeyEvent::GetKeyStateFlags() const {
// Windows Keyboard messages don't come with control key state as parameters
diff --git a/views/focus/accelerator_handler_win.cc b/views/focus/accelerator_handler_win.cc
index eb8bfb9..8363928 100644
--- a/views/focus/accelerator_handler_win.cc
+++ b/views/focus/accelerator_handler_win.cc
@@ -4,6 +4,8 @@
#include "views/focus/accelerator_handler.h"
+#include "base/keyboard_codes.h"
+#include "base/win_util.h"
#include "views/event.h"
#include "views/focus/focus_manager.h"
@@ -23,7 +25,7 @@ bool AcceleratorHandler::Dispatch(const MSG& msg) {
case WM_KEYDOWN:
case WM_SYSKEYDOWN: {
KeyEvent event(Event::ET_KEY_PRESSED,
- msg.wParam,
+ win_util::WinToKeyboardCode(msg.wParam),
msg.lParam & 0xFFFF,
(msg.lParam & 0xFFFF0000) >> 16);
process_message = focus_manager->OnKeyEvent(event);
diff --git a/views/focus/focus_manager.cc b/views/focus/focus_manager.cc
index dffb392..aca418b 100644
--- a/views/focus/focus_manager.cc
+++ b/views/focus/focus_manager.cc
@@ -63,7 +63,7 @@ bool FocusManager::OnKeyEvent(const KeyEvent& event) {
#endif
// Intercept arrow key messages to switch between grouped views.
- int key_code = event.GetCharacter();
+ base::KeyboardCode key_code = event.GetKeyCode();
if (focused_view_ && focused_view_->GetGroup() != -1 &&
(key_code == base::VKEY_UP || key_code == base::VKEY_DOWN ||
key_code == base::VKEY_LEFT || key_code == base::VKEY_RIGHT)) {
@@ -89,7 +89,7 @@ bool FocusManager::OnKeyEvent(const KeyEvent& event) {
// Process keyboard accelerators.
// If the key combination matches an accelerator, the accelerator is
// triggered, otherwise the key event is proceed as usual.
- Accelerator accelerator(event.GetCharacter(),
+ Accelerator accelerator(event.GetKeyCode(),
event.IsShiftDown(),
event.IsControlDown(),
event.IsAltDown());
@@ -405,7 +405,7 @@ AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator(
// static
bool FocusManager::IsTabTraversalKeyEvent(const KeyEvent& key_event) {
- return key_event.GetCharacter() == base::VKEY_TAB &&
+ return key_event.GetKeyCode() == base::VKEY_TAB &&
!key_event.IsControlDown();
}
diff --git a/views/view_unittest.cc b/views/view_unittest.cc
index bad592b..b15b101 100644
--- a/views/view_unittest.cc
+++ b/views/view_unittest.cc
@@ -817,7 +817,7 @@ bool TestView::AcceleratorPressed(const Accelerator& accelerator) {
#if defined(OS_WIN)
TEST_F(ViewTest, ActivateAccelerator) {
// Register a keyboard accelerator before the view is added to a window.
- views::Accelerator return_accelerator(VK_RETURN, false, false, false);
+ views::Accelerator return_accelerator(base::VKEY_RETURN, false, false, false);
TestView* view = new TestView();
view->Reset();
view->AddAccelerator(return_accelerator);
@@ -841,7 +841,7 @@ TEST_F(ViewTest, ActivateAccelerator) {
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 1);
// Hit the escape key. Nothing should happen.
- views::Accelerator escape_accelerator(VK_ESCAPE, false, false, false);
+ views::Accelerator escape_accelerator(base::VKEY_ESCAPE, false, false, false);
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);
@@ -1097,7 +1097,7 @@ class DefaultButtonTest : public ViewTest {
void SimularePressingEnterAndCheckDefaultButton(ButtonID button_id) {
#if defined(OS_WIN)
- KeyEvent event(Event::ET_KEY_PRESSED, VK_RETURN, 0, 0);
+ KeyEvent event(Event::ET_KEY_PRESSED, base::VKEY_RETURN, 0, 0);
focus_manager_->OnKeyEvent(event);
#else
// TODO(platform)
diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc
index 8baca07..09c1909 100644
--- a/views/widget/root_view.cc
+++ b/views/widget/root_view.cc
@@ -782,8 +782,8 @@ bool RootView::ProcessKeyEvent(const KeyEvent& event) {
View* v = GetFocusedView();
// Special case to handle right-click context menus triggered by the
// keyboard.
- if (v && v->IsEnabled() && ((event.GetCharacter() == base::VKEY_APPS) ||
- (event.GetCharacter() == base::VKEY_F10 && event.IsShiftDown()))) {
+ if (v && v->IsEnabled() && ((event.GetKeyCode() == base::VKEY_APPS) ||
+ (event.GetKeyCode() == base::VKEY_F10 && event.IsShiftDown()))) {
gfx::Point screen_loc = v->GetKeyboardContextMenuLocation();
v->ShowContextMenu(screen_loc.x(), screen_loc.y(), false);
return true;
diff --git a/views/widget/widget_win.cc b/views/widget/widget_win.cc
index d975ef9..3017e05 100644
--- a/views/widget/widget_win.cc
+++ b/views/widget/widget_win.cc
@@ -571,12 +571,14 @@ void WidgetWin::OnInitMenuPopup(HMENU menu,
}
void WidgetWin::OnKeyDown(TCHAR c, UINT rep_cnt, UINT flags) {
- KeyEvent event(Event::ET_KEY_PRESSED, c, rep_cnt, flags);
+ KeyEvent event(Event::ET_KEY_PRESSED,
+ win_util::WinToKeyboardCode(c), rep_cnt, flags);
SetMsgHandled(root_view_->ProcessKeyEvent(event));
}
void WidgetWin::OnKeyUp(TCHAR c, UINT rep_cnt, UINT flags) {
- KeyEvent event(Event::ET_KEY_RELEASED, c, rep_cnt, flags);
+ KeyEvent event(Event::ET_KEY_RELEASED,
+ win_util::WinToKeyboardCode(c), rep_cnt, flags);
SetMsgHandled(root_view_->ProcessKeyEvent(event));
}