Index: ui/base/events/event.cc |
diff --git a/ui/base/events/event.cc b/ui/base/events/event.cc |
index be76b7067e70d31d6357dcf8d433d9391a0ae923..a8d49a576b16fa995645cd15dd0eaa91c8e5887a 100644 |
--- a/ui/base/events/event.cc |
+++ b/ui/base/events/event.cc |
@@ -20,14 +20,23 @@ |
#include "ui/gfx/transform.h" |
#include "ui/gfx/transform_util.h" |
-#if defined(USE_X11) |
+#if defined(USE_WAYLAND) |
+#include "base/wayland/wayland_event.h" |
+#include "ui/base/keycodes/keyboard_code_conversion_wayland.h" |
+#elif defined(USE_X11) |
#include "ui/base/keycodes/keyboard_code_conversion_x.h" |
#endif |
namespace { |
base::NativeEvent CopyNativeEvent(const base::NativeEvent& event) { |
-#if defined(USE_X11) |
+#if defined(USE_WAYLAND) |
+ if (!event) |
+ return NULL; |
+ base::wayland::WaylandEvent* copy = new base::wayland::WaylandEvent; |
+ *copy = *event; |
+ return copy; |
+#elif defined(USE_X11) |
if (!event || event->type == GenericEvent) |
return NULL; |
XEvent* copy = new XEvent; |
@@ -105,7 +114,9 @@ std::string EventTypeName(ui::EventType type) { |
} |
bool IsX11SendEventTrue(const base::NativeEvent& event) { |
-#if defined(USE_X11) |
+#if defined(USE_WAYLAND) |
+ return false; |
+#elif defined(USE_X11) |
if (event && event->xany.send_event) |
return true; |
#endif |
@@ -509,6 +520,14 @@ uint16 KeyEvent::GetCharacter() const { |
#if defined(OS_WIN) |
return (native_event().message == WM_CHAR) ? key_code_ : |
GetCharacterFromKeyCode(key_code_, flags()); |
+#elif defined(USE_WAYLAND) |
+ if (!native_event()) |
+ return ui::GetCharacterFromKeyCode(key_code_, flags()); |
+ |
+ uint16 ch = 0; |
+ if (!IsControlDown()) |
+ ch = ui::GetCharacterFromWaylandEvent(native_event()); |
+ return ch ? ch : ui::GetCharacterFromKeyCode(key_code_, flags()); |
#elif defined(USE_X11) |
if (!native_event()) |
return GetCharacterFromKeyCode(key_code_, flags()); |
@@ -534,6 +553,13 @@ uint16 KeyEvent::GetUnmodifiedCharacter() const { |
// Looks like there is no way to get unmodified character on Windows. |
return (native_event().message == WM_CHAR) ? key_code_ : |
GetCharacterFromKeyCode(key_code_, flags() & EF_SHIFT_DOWN); |
+#elif defined(USE_WAYLAND) |
+ if (!native_event()) |
+ return ui::GetCharacterFromKeyCode(key_code_, flags() & ui::EF_SHIFT_DOWN); |
+ |
+ uint16 ch = ui::GetCharacterFromWaylandEvent(native_event()); |
+ return ch ? ch : |
+ ui::GetCharacterFromKeyCode(key_code_, flags() & ui::EF_SHIFT_DOWN); |
#elif defined(USE_X11) |
if (!native_event()) |
return GetCharacterFromKeyCode(key_code_, flags() & EF_SHIFT_DOWN); |