xkb: allow pointer events to pass through for floating SDs without a key class.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
38df8351b3
commit
b40289c876
|
@ -687,21 +687,28 @@ void
|
|||
ProcessPointerEvent( InternalEvent *ev,
|
||||
DeviceIntPtr mouse)
|
||||
{
|
||||
DeviceIntPtr dev = GetPairedDevice(mouse);
|
||||
XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
|
||||
DeviceIntPtr dev;
|
||||
XkbSrvInfoPtr xkbi = NULL;
|
||||
unsigned changed = 0;
|
||||
ProcessInputProc backupproc;
|
||||
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse);
|
||||
DeviceEvent *event = (DeviceEvent*)ev;
|
||||
|
||||
xkbi->shiftKeyCount = 0;
|
||||
xkbi->lastPtrEventTime= event->time;
|
||||
dev = (IsMaster(mouse) || mouse->u.master) ? GetMaster(mouse, MASTER_KEYBOARD) : mouse;
|
||||
|
||||
if (dev && dev->key)
|
||||
{
|
||||
xkbi = dev->key->xkbInfo;
|
||||
xkbi->shiftKeyCount = 0;
|
||||
xkbi->lastPtrEventTime= event->time;
|
||||
}
|
||||
|
||||
if (event->type == ET_ButtonPress) {
|
||||
changed |= XkbPointerButtonMask;
|
||||
}
|
||||
else if (event->type == ET_ButtonRelease) {
|
||||
xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7));
|
||||
if (xkbi)
|
||||
xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7));
|
||||
changed |= XkbPointerButtonMask;
|
||||
}
|
||||
|
||||
|
@ -726,6 +733,9 @@ DeviceEvent *event = (DeviceEvent*)ev;
|
|||
COND_WRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr,
|
||||
backupproc, xkbUnwrapProc);
|
||||
|
||||
if (!xkbi)
|
||||
return;
|
||||
|
||||
xkbi->state.ptr_buttons = (mouse->button) ? mouse->button->state : 0;
|
||||
|
||||
/* clear any latched modifiers */
|
||||
|
|
Loading…
Reference in New Issue
Block a user