Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(680)

Unified Diff: ui/events/event.cc

Issue 536313002: Revert of Removing X11 native_event uses for key events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/events/event.h ('k') | ui/events/event_utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/event.cc
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 0ee17094c8d8b099da9d4585002163f312fe42b5..27de2a96b6a150891a4632df87890562f06a4eb0 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -7,7 +7,6 @@
#if defined(USE_X11)
#include <X11/extensions/XInput2.h>
#include <X11/Xlib.h>
-#include <X11/keysym.h>
#endif
#include <cmath>
@@ -592,11 +591,6 @@
#if defined(USE_X11)
NormalizeFlags();
#endif
-#if defined(OS_WIN)
- // Only Windows has native character events.
- if (is_char_)
- character_ = native_event.wParam;
-#endif
}
KeyEvent::KeyEvent(EventType type,
@@ -606,7 +600,7 @@
key_code_(key_code),
is_char_(false),
platform_keycode_(0),
- character_() {
+ character_(GetCharacterFromKeyCode(key_code, flags)) {
}
KeyEvent::KeyEvent(EventType type,
@@ -618,7 +612,7 @@
code_(code),
is_char_(false),
platform_keycode_(0),
- character_(0) {
+ character_(GetCharacterFromKeyCode(key_code, flags)) {
}
KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags)
@@ -663,21 +657,15 @@
}
base::char16 KeyEvent::GetCharacter() const {
- if (is_char_ || character_)
+ if (character_)
return character_;
- // TODO(kpschoedel): streamline these cases after settling Ozone
- // positional coding.
#if defined(OS_WIN)
- // Native Windows character events always have is_char_ == true,
- // so this is a synthetic or native keystroke event.
- character_ = GetCharacterFromKeyCode(key_code_, flags());
- return character_;
+ return (native_event().message == WM_CHAR) ? key_code_ :
+ GetCharacterFromKeyCode(key_code_, flags());
#elif defined(USE_X11)
- if (!native_event()) {
- character_ = GetCharacterFromKeyCode(key_code_, flags());
- return character_;
- }
+ if (!native_event())
+ return GetCharacterFromKeyCode(key_code_, flags());
DCHECK(native_event()->type == KeyPress ||
native_event()->type == KeyRelease ||
@@ -700,20 +688,6 @@
return GetCharacterFromKeyCode(key_code_, flags());
#endif
-}
-
-base::char16 KeyEvent::GetText() const {
- if ((flags() & EF_CONTROL_DOWN) != 0) {
- return GetControlCharacterForKeycode(key_code_,
- (flags() & EF_SHIFT_DOWN) != 0);
- }
- return GetUnmodifiedText();
-}
-
-base::char16 KeyEvent::GetUnmodifiedText() const {
- if (!is_char_ && (key_code_ == VKEY_RETURN))
- return '\r';
- return GetCharacter();
}
bool KeyEvent::IsUnicodeKeyCode() const {
@@ -789,83 +763,6 @@
}
}
-bool KeyEvent::IsRightSideKey() const {
- switch (key_code_) {
- case VKEY_CONTROL:
- case VKEY_SHIFT:
- case VKEY_MENU:
- case VKEY_LWIN:
-#if defined(USE_X11)
- // Under X11, setting code_ requires platform-dependent information, and
- // currently assumes that X keycodes are based on Linux evdev keycodes.
- // In certain test environments this is not the case, and code_ is not
- // set accurately, so we need a different mechanism. Fortunately X11 key
- // mapping preserves the left-right distinction, so testing keysyms works
- // if the value is available (as it is for all X11 native-based events).
- if (platform_keycode_) {
- return (platform_keycode_ == XK_Shift_R) ||
- (platform_keycode_ == XK_Control_R) ||
- (platform_keycode_ == XK_Alt_R) ||
- (platform_keycode_ == XK_Meta_R) ||
- (platform_keycode_ == XK_Super_R) ||
- (platform_keycode_ == XK_Hyper_R);
- }
- // Fall through to the generic code if we have no platform_keycode_.
- // Under X11, this must be a synthetic event, so we can require that
- // code_ be set correctly.
-#endif
- return ((code_.size() > 5) &&
- (code_.compare(code_.size() - 5, 5, "Right", 5)) == 0);
- default:
- return false;
- }
-}
-
-KeyboardCode KeyEvent::GetLocatedWindowsKeyboardCode() const {
- switch (key_code_) {
- case VKEY_SHIFT:
- return IsRightSideKey() ? VKEY_RSHIFT : VKEY_LSHIFT;
- case VKEY_CONTROL:
- return IsRightSideKey() ? VKEY_RCONTROL : VKEY_LCONTROL;
- case VKEY_MENU:
- return IsRightSideKey() ? VKEY_RMENU : VKEY_LMENU;
- case VKEY_LWIN:
- return IsRightSideKey() ? VKEY_RWIN : VKEY_LWIN;
- // TODO(kpschoedel): EF_NUMPAD_KEY is present only on X11. Currently this
- // function is only called on X11. Likely the tests here will be replaced
- // with a DOM-based code enumeration test in the course of Ozone
- // platform-indpendent key event work.
- case VKEY_0:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD0 : VKEY_0;
- case VKEY_1:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD1 : VKEY_1;
- case VKEY_2:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD2 : VKEY_2;
- case VKEY_3:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD3 : VKEY_3;
- case VKEY_4:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD4 : VKEY_4;
- case VKEY_5:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD5 : VKEY_5;
- case VKEY_6:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD6 : VKEY_6;
- case VKEY_7:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD7 : VKEY_7;
- case VKEY_8:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD8 : VKEY_8;
- case VKEY_9:
- return (flags() & EF_NUMPAD_KEY) ? VKEY_NUMPAD9 : VKEY_9;
- default:
- return key_code_;
- }
-}
-
-uint16 KeyEvent::GetConflatedWindowsKeyCode() const {
- if (is_char_)
- return character_;
- return key_code_;
-}
-
////////////////////////////////////////////////////////////////////////////////
// ScrollEvent
« no previous file with comments | « ui/events/event.h ('k') | ui/events/event_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698