xkb: always post XTest button up when the physical button released (#28808)
Regression introduced by commit2decff6393
xkb: ProcesssPointerEvent must work on the VCP if it gets the VCP XTest buttons must be released when a physical button is released. This was fixed in1432785839
, but2decff6393
changed a condition that this code didn't get triggered anymore. "dev" for pointer events is now always the VCP which doesn't have a xkbi struct. So move this condition out and always trigger the XTest released for button events. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Tested-by: Frank Roscher <Frank-Roscher@gmx.net>
This commit is contained in:
parent
b51a1bd276
commit
c4fee9d2ec
|
@ -723,23 +723,22 @@ ProcessPointerEvent(InternalEvent *ev, DeviceIntPtr mouse)
|
|||
changed |= XkbPointerButtonMask;
|
||||
}
|
||||
else if (event->type == ET_ButtonRelease) {
|
||||
if (xkbi) {
|
||||
xkbi->lockedPtrButtons &= ~(1 << (event->detail.key & 0x7));
|
||||
if (IsMaster(dev)) {
|
||||
DeviceIntPtr source;
|
||||
int rc;
|
||||
|
||||
if (IsMaster(dev)) {
|
||||
DeviceIntPtr source;
|
||||
int rc;
|
||||
|
||||
rc = dixLookupDevice(&source, event->sourceid, serverClient,
|
||||
DixWriteAccess);
|
||||
if (rc != Success)
|
||||
ErrorF("[xkb] bad sourceid '%d' on button release event.\n",
|
||||
event->sourceid);
|
||||
else if (!IsXTestDevice(source, GetMaster(dev, MASTER_POINTER)))
|
||||
XkbFakeDeviceButton(dev, FALSE, event->detail.key);
|
||||
}
|
||||
rc = dixLookupDevice(&source, event->sourceid, serverClient,
|
||||
DixWriteAccess);
|
||||
if (rc != Success)
|
||||
ErrorF("[xkb] bad sourceid '%d' on button release event.\n",
|
||||
event->sourceid);
|
||||
else if (!IsXTestDevice(source, GetMaster(dev, MASTER_POINTER)))
|
||||
XkbFakeDeviceButton(dev, FALSE, event->detail.key);
|
||||
}
|
||||
|
||||
if (xkbi)
|
||||
xkbi->lockedPtrButtons &= ~(1 << (event->detail.key & 0x7));
|
||||
|
||||
changed |= XkbPointerButtonMask;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user