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,
|
ProcessPointerEvent( InternalEvent *ev,
|
||||||
DeviceIntPtr mouse)
|
DeviceIntPtr mouse)
|
||||||
{
|
{
|
||||||
DeviceIntPtr dev = GetPairedDevice(mouse);
|
DeviceIntPtr dev;
|
||||||
XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
|
XkbSrvInfoPtr xkbi = NULL;
|
||||||
unsigned changed = 0;
|
unsigned changed = 0;
|
||||||
ProcessInputProc backupproc;
|
ProcessInputProc backupproc;
|
||||||
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse);
|
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse);
|
||||||
DeviceEvent *event = (DeviceEvent*)ev;
|
DeviceEvent *event = (DeviceEvent*)ev;
|
||||||
|
|
||||||
xkbi->shiftKeyCount = 0;
|
dev = (IsMaster(mouse) || mouse->u.master) ? GetMaster(mouse, MASTER_KEYBOARD) : mouse;
|
||||||
xkbi->lastPtrEventTime= event->time;
|
|
||||||
|
if (dev && dev->key)
|
||||||
|
{
|
||||||
|
xkbi = dev->key->xkbInfo;
|
||||||
|
xkbi->shiftKeyCount = 0;
|
||||||
|
xkbi->lastPtrEventTime= event->time;
|
||||||
|
}
|
||||||
|
|
||||||
if (event->type == ET_ButtonPress) {
|
if (event->type == ET_ButtonPress) {
|
||||||
changed |= XkbPointerButtonMask;
|
changed |= XkbPointerButtonMask;
|
||||||
}
|
}
|
||||||
else if (event->type == ET_ButtonRelease) {
|
else if (event->type == ET_ButtonRelease) {
|
||||||
xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7));
|
if (xkbi)
|
||||||
|
xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7));
|
||||||
changed |= XkbPointerButtonMask;
|
changed |= XkbPointerButtonMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -726,6 +733,9 @@ DeviceEvent *event = (DeviceEvent*)ev;
|
||||||
COND_WRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr,
|
COND_WRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr,
|
||||||
backupproc, xkbUnwrapProc);
|
backupproc, xkbUnwrapProc);
|
||||||
|
|
||||||
|
if (!xkbi)
|
||||||
|
return;
|
||||||
|
|
||||||
xkbi->state.ptr_buttons = (mouse->button) ? mouse->button->state : 0;
|
xkbi->state.ptr_buttons = (mouse->button) ? mouse->button->state : 0;
|
||||||
|
|
||||||
/* clear any latched modifiers */
|
/* clear any latched modifiers */
|
||||||
|
|
Loading…
Reference in New Issue