| Index: ui/aura/root_window_host_linux.cc
|
| diff --git a/ui/aura/root_window_host_linux.cc b/ui/aura/root_window_host_linux.cc
|
| index 5901e5f713c6d1c2b2e985a6534b7373ea93c3a9..a2c4a731a11e4153a0c838c901de236f53c38814 100644
|
| --- a/ui/aura/root_window_host_linux.cc
|
| +++ b/ui/aura/root_window_host_linux.cc
|
| @@ -39,6 +39,7 @@ void CheckXEventForConsistency(XEvent* xevent) {
|
| static bool expect_master_event = false;
|
| static XIDeviceEvent slave_event;
|
| static gfx::Point slave_location;
|
| + static int slave_button;
|
|
|
| // Note: If an event comes from a slave pointer device, then it will be
|
| // followed by the same event, but reported from its master pointer device.
|
| @@ -62,6 +63,7 @@ void CheckXEventForConsistency(XEvent* xevent) {
|
| if (xievent->sourceid == xievent->deviceid) {
|
| slave_event = *xievent;
|
| slave_location = ui::EventLocationFromNative(xevent);
|
| + slave_button = ui::EventButtonFromNative(xevent);
|
| expect_master_event = true;
|
| } else if (was_expecting_master_event) {
|
| CHECK_EQ(slave_location.x(), ui::EventLocationFromNative(xevent).x());
|
| @@ -69,7 +71,7 @@ void CheckXEventForConsistency(XEvent* xevent) {
|
|
|
| CHECK_EQ(slave_event.type, xievent->type);
|
| CHECK_EQ(slave_event.evtype, xievent->evtype);
|
| - CHECK_EQ(slave_event.detail, xievent->detail);
|
| + CHECK_EQ(slave_button, ui::EventButtonFromNative(xevent));
|
| CHECK_EQ(slave_event.flags, xievent->flags);
|
| CHECK_EQ(slave_event.buttons.mask_len, xievent->buttons.mask_len);
|
| CHECK_EQ(slave_event.valuators.mask_len, xievent->valuators.mask_len);
|
| @@ -471,9 +473,18 @@ base::MessagePumpDispatcher::DispatchStatus RootWindowHostLinux::Dispatch(
|
| break;
|
| }
|
| case MappingNotify: {
|
| - if (xev->xmapping.request == MappingModifier ||
|
| - xev->xmapping.request == MappingKeyboard)
|
| - XRefreshKeyboardMapping(&xev->xmapping);
|
| + switch (xev->xmapping.request) {
|
| + case MappingModifier:
|
| + case MappingKeyboard:
|
| + XRefreshKeyboardMapping(&xev->xmapping);
|
| + break;
|
| + case MappingPointer:
|
| + ui::UpdateButtonMap();
|
| + break;
|
| + default:
|
| + NOTIMPLEMENTED() << " Unknown request: " << xev->xmapping.request;
|
| + break;
|
| + }
|
| break;
|
| }
|
| case MotionNotify: {
|
|
|