| Index: ui/events/x/events_x.cc
|
| diff --git a/ui/events/x/events_x.cc b/ui/events/x/events_x.cc
|
| index bf8b04ee58b0cde6d9036d3d5840b84869b8672a..a540690797bfec0fc33021cfb2ea818e9bba797c 100644
|
| --- a/ui/events/x/events_x.cc
|
| +++ b/ui/events/x/events_x.cc
|
| @@ -9,6 +9,7 @@
|
| #include <X11/extensions/XInput.h>
|
| #include <X11/extensions/XInput2.h>
|
| #include <X11/Xlib.h>
|
| +#include <X11/Xutil.h>
|
|
|
| #include "base/logging.h"
|
| #include "base/memory/singleton.h"
|
| @@ -148,6 +149,11 @@ int GetEventFlagsFromXState(unsigned int state) {
|
| return flags;
|
| }
|
|
|
| +int GetEventFlagsFromXKeyEvent(XEvent* xevent) {
|
| + return GetEventFlagsFromXState(xevent->xkey.state) |
|
| + (IsKeypadKey(XLookupKeysym(&xevent->xkey, 0)) ? ui::EF_NUMPAD_KEY : 0);
|
| +}
|
| +
|
| // Get the event flag for the button in XButtonEvent. During a ButtonPress
|
| // event, |state| in XButtonEvent does not include the button that has just been
|
| // pressed. Instead |state| contains flags for the buttons (if any) that had
|
| @@ -328,7 +334,7 @@ int EventFlagsFromNative(const base::NativeEvent& native_event) {
|
| case KeyPress:
|
| case KeyRelease: {
|
| XModifierStateWatcher::GetInstance()->UpdateStateFromEvent(native_event);
|
| - return GetEventFlagsFromXState(native_event->xkey.state);
|
| + return GetEventFlagsFromXKeyEvent(native_event);
|
| }
|
| case ButtonPress:
|
| case ButtonRelease: {
|
|
|