mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-30 20:10:07 +01:00
dix: No DeviceEnterLeave events in server 1.6
This commit is contained in:
parent
9739fac045
commit
aba1cbaadc
5 changed files with 0 additions and 158 deletions
|
|
@ -122,8 +122,6 @@ IsPointerEvent(xEvent* xE)
|
|||
if (xE->u.u.type == DeviceButtonPress ||
|
||||
xE->u.u.type == DeviceButtonRelease ||
|
||||
xE->u.u.type == DeviceMotionNotify ||
|
||||
xE->u.u.type == DeviceEnterNotify ||
|
||||
xE->u.u.type == DeviceLeaveNotify ||
|
||||
xE->u.u.type == ProximityIn ||
|
||||
xE->u.u.type == ProximityOut)
|
||||
{
|
||||
|
|
@ -145,8 +143,6 @@ XIGetDevice(xEvent* xE)
|
|||
if (xE->u.u.type == DeviceButtonPress ||
|
||||
xE->u.u.type == DeviceButtonRelease ||
|
||||
xE->u.u.type == DeviceMotionNotify ||
|
||||
xE->u.u.type == DeviceEnterNotify ||
|
||||
xE->u.u.type == DeviceLeaveNotify ||
|
||||
xE->u.u.type == ProximityIn ||
|
||||
xE->u.u.type == ProximityOut ||
|
||||
xE->u.u.type == DevicePropertyNotify)
|
||||
|
|
|
|||
41
Xi/extinit.c
41
Xi/extinit.c
|
|
@ -274,8 +274,6 @@ Mask DeviceButtonGrabMask;
|
|||
Mask DeviceButtonMotionMask;
|
||||
Mask DevicePresenceNotifyMask;
|
||||
Mask DevicePropertyNotifyMask;
|
||||
Mask DeviceEnterWindowMask;
|
||||
Mask DeviceLeaveWindowMask;
|
||||
|
||||
int DeviceValuator;
|
||||
int DeviceKeyPress;
|
||||
|
|
@ -294,8 +292,6 @@ int DeviceMappingNotify;
|
|||
int ChangeDeviceNotify;
|
||||
int DevicePresenceNotify;
|
||||
int DevicePropertyNotify;
|
||||
int DeviceEnterNotify;
|
||||
int DeviceLeaveNotify;
|
||||
|
||||
int RT_INPUTCLIENT;
|
||||
|
||||
|
|
@ -562,23 +558,6 @@ SDevicePropertyNotifyEvent (devicePropertyNotify *from, devicePropertyNotify *to
|
|||
swapl(&to->atom, n);
|
||||
}
|
||||
|
||||
static void
|
||||
SDeviceLeaveNotifyEvent (deviceLeaveNotify *from, deviceLeaveNotify *to)
|
||||
{
|
||||
char n;
|
||||
|
||||
*to = *from;
|
||||
swaps(&to->sequenceNumber,n);
|
||||
swapl(&to->time, n);
|
||||
swapl(&to->root, n);
|
||||
swapl(&to->event, n);
|
||||
swapl(&to->child, n);
|
||||
swaps(&to->rootX, n);
|
||||
swaps(&to->rootY, n);
|
||||
swaps(&to->eventX, n);
|
||||
swaps(&to->eventY, n);
|
||||
}
|
||||
|
||||
static void
|
||||
SDeviceClassesChangedEvent(deviceClassesChangedEvent* from,
|
||||
deviceClassesChangedEvent* to)
|
||||
|
|
@ -750,8 +729,6 @@ FixExtensionEvents(ExtensionEntry * extEntry)
|
|||
DeviceButtonStateNotify = DeviceKeyStateNotify + 1;
|
||||
DevicePresenceNotify = DeviceButtonStateNotify + 1;
|
||||
DevicePropertyNotify = DevicePresenceNotify + 1;
|
||||
DeviceEnterNotify = DevicePropertyNotify + 1;
|
||||
DeviceLeaveNotify = DeviceEnterNotify + 1;
|
||||
|
||||
event_base[KeyClass] = DeviceKeyPress;
|
||||
event_base[ButtonClass] = DeviceButtonPress;
|
||||
|
|
@ -843,14 +820,6 @@ FixExtensionEvents(ExtensionEntry * extEntry)
|
|||
DevicePropertyNotifyMask = GetNextExtEventMask();
|
||||
SetMaskForExtEvent(DevicePropertyNotifyMask, DevicePropertyNotify);
|
||||
|
||||
DeviceEnterWindowMask = GetNextExtEventMask();
|
||||
SetMaskForExtEvent(DeviceEnterWindowMask, DeviceEnterNotify);
|
||||
AllowPropagateSuppress(DeviceEnterWindowMask);
|
||||
|
||||
DeviceLeaveWindowMask = GetNextExtEventMask();
|
||||
SetMaskForExtEvent(DeviceLeaveWindowMask, DeviceLeaveNotify);
|
||||
AllowPropagateSuppress(DeviceLeaveWindowMask);
|
||||
|
||||
SetEventInfo(0, _noExtensionEvent);
|
||||
}
|
||||
|
||||
|
|
@ -897,8 +866,6 @@ RestoreExtensionEvents(void)
|
|||
DeviceButtonStateNotify = 13;
|
||||
DevicePresenceNotify = 14;
|
||||
DevicePropertyNotify = 15;
|
||||
DeviceEnterNotify = 16;
|
||||
DeviceLeaveNotify = 17;
|
||||
|
||||
BadDevice = 0;
|
||||
BadEvent = 1;
|
||||
|
|
@ -938,8 +905,6 @@ IResetProc(ExtensionEntry * unused)
|
|||
EventSwapVector[ChangeDeviceNotify] = NotImplemented;
|
||||
EventSwapVector[DevicePresenceNotify] = NotImplemented;
|
||||
EventSwapVector[DevicePropertyNotify] = NotImplemented;
|
||||
EventSwapVector[DeviceEnterNotify] = NotImplemented;
|
||||
EventSwapVector[DeviceLeaveNotify] = NotImplemented;
|
||||
RestoreExtensionEvents();
|
||||
}
|
||||
|
||||
|
|
@ -1043,10 +1008,6 @@ SEventIDispatch(xEvent * from, xEvent * to)
|
|||
DO_SWAP(SDevicePresenceNotifyEvent, devicePresenceNotify);
|
||||
else if (type == DevicePropertyNotify)
|
||||
DO_SWAP(SDevicePropertyNotifyEvent, devicePropertyNotify);
|
||||
else if (type == DeviceEnterNotify)
|
||||
DO_SWAP(SDeviceLeaveNotifyEvent, deviceEnterNotify);
|
||||
else if (type == DeviceLeaveNotify)
|
||||
DO_SWAP(SDeviceLeaveNotifyEvent, deviceLeaveNotify);
|
||||
else {
|
||||
FatalError("XInputExtension: Impossible event!\n");
|
||||
}
|
||||
|
|
@ -1133,8 +1094,6 @@ XInputExtensionInit(void)
|
|||
EventSwapVector[DeviceMappingNotify] = SEventIDispatch;
|
||||
EventSwapVector[ChangeDeviceNotify] = SEventIDispatch;
|
||||
EventSwapVector[DevicePresenceNotify] = SEventIDispatch;
|
||||
EventSwapVector[DeviceEnterNotify] = SEventIDispatch;
|
||||
EventSwapVector[DeviceLeaveNotify] = SEventIDispatch;
|
||||
|
||||
/* init GE events */
|
||||
GERegisterExtension(IReqCode, XIGEEventSwap, XIGEEventFill);
|
||||
|
|
|
|||
|
|
@ -193,9 +193,6 @@ EnterNotifies(DeviceIntPtr dev,
|
|||
if (core)
|
||||
CoreEnterLeaveEvent(dev, EnterNotify, mode, detail, parent,
|
||||
child->drawable.id);
|
||||
else
|
||||
DeviceEnterLeaveEvent(dev, DeviceEnterNotify, mode, detail, parent,
|
||||
child->drawable.id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -219,9 +216,6 @@ LeaveNotifies(DeviceIntPtr dev,
|
|||
if (core)
|
||||
CoreEnterLeaveEvent(dev, LeaveNotify, mode, detail, win,
|
||||
child->drawable.id);
|
||||
else
|
||||
DeviceEnterLeaveEvent(dev, DeviceLeaveNotify, mode, detail, win,
|
||||
child->drawable.id);
|
||||
child = win;
|
||||
}
|
||||
}
|
||||
|
|
@ -489,35 +483,6 @@ CoreEnterLeaveEvents(DeviceIntPtr dev,
|
|||
EnterWindow(dev, to, mode);
|
||||
}
|
||||
|
||||
static void
|
||||
DeviceEnterLeaveEvents(DeviceIntPtr dev,
|
||||
WindowPtr from,
|
||||
WindowPtr to,
|
||||
int mode)
|
||||
{
|
||||
if (IsParent(from, to))
|
||||
{
|
||||
DeviceEnterLeaveEvent(dev, DeviceLeaveNotify, mode, NotifyInferior, from, None);
|
||||
EnterNotifies(dev, from, to, mode, NotifyVirtual, FALSE);
|
||||
DeviceEnterLeaveEvent(dev, DeviceEnterNotify, mode, NotifyAncestor, to, None);
|
||||
}
|
||||
else if (IsParent(to, from))
|
||||
{
|
||||
DeviceEnterLeaveEvent(dev, DeviceLeaveNotify, mode, NotifyAncestor, from, None);
|
||||
LeaveNotifies(dev, from, to, mode, NotifyVirtual, FALSE);
|
||||
DeviceEnterLeaveEvent(dev, DeviceEnterNotify, mode, NotifyInferior, to, None);
|
||||
}
|
||||
else
|
||||
{ /* neither from nor to is descendent of the other */
|
||||
WindowPtr common = CommonAncestor(to, from);
|
||||
/* common == NullWindow ==> different screens */
|
||||
DeviceEnterLeaveEvent(dev, DeviceLeaveNotify, mode, NotifyNonlinear, from, None);
|
||||
LeaveNotifies(dev, from, common, mode, NotifyNonlinearVirtual, FALSE);
|
||||
EnterNotifies(dev, common, to, mode, NotifyNonlinearVirtual, FALSE);
|
||||
DeviceEnterLeaveEvent(dev, DeviceEnterNotify, mode, NotifyNonlinear, to, None);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Figure out if enter/leave events are necessary and send them to the
|
||||
* appropriate windows.
|
||||
|
|
@ -538,5 +503,4 @@ DoEnterLeaveEvents(DeviceIntPtr pDev,
|
|||
return;
|
||||
|
||||
CoreEnterLeaveEvents(pDev, fromWin, toWin, mode);
|
||||
DeviceEnterLeaveEvents(pDev, fromWin, toWin, mode);
|
||||
}
|
||||
|
|
|
|||
73
dix/events.c
73
dix/events.c
|
|
@ -4274,79 +4274,6 @@ CoreEnterLeaveEvent(
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
DeviceEnterLeaveEvent(
|
||||
DeviceIntPtr mouse,
|
||||
int type,
|
||||
int mode,
|
||||
int detail,
|
||||
WindowPtr pWin,
|
||||
Window child)
|
||||
{
|
||||
xEvent event;
|
||||
GrabPtr grab = mouse->deviceGrab.grab;
|
||||
deviceEnterNotify *devEnterLeave;
|
||||
int mskidx;
|
||||
OtherInputMasks *inputMasks;
|
||||
Mask mask;
|
||||
DeviceIntPtr keybd = GetPairedDevice(mouse);
|
||||
BOOL sameScreen;
|
||||
|
||||
if (grab) {
|
||||
mask = (pWin == grab->window) ? grab->eventMask : 0;
|
||||
if (grab->ownerEvents)
|
||||
mask |= EventMaskForClient(pWin, rClient(grab));
|
||||
} else {
|
||||
mask = pWin->eventMask | wOtherEventMasks(pWin);
|
||||
}
|
||||
|
||||
/* we don't have enough bytes, so we squash flags and mode into
|
||||
one byte, and use the last byte for the deviceid. */
|
||||
devEnterLeave = (deviceEnterNotify*)&event;
|
||||
devEnterLeave->detail = detail;
|
||||
devEnterLeave->time = currentTime.milliseconds;
|
||||
devEnterLeave->rootX = mouse->spriteInfo->sprite->hot.x;
|
||||
devEnterLeave->rootY = mouse->spriteInfo->sprite->hot.y;
|
||||
FixUpEventFromWindow(mouse, &event, pWin, None, FALSE);
|
||||
sameScreen = event.u.keyButtonPointer.sameScreen;
|
||||
|
||||
devEnterLeave->child = child;
|
||||
devEnterLeave->type = type;
|
||||
devEnterLeave->deviceid = mouse->id;
|
||||
devEnterLeave->mode = mode;
|
||||
devEnterLeave->mode |= (sameScreen ? (ELFlagSameScreen << 4) : 0);
|
||||
|
||||
#ifdef XKB
|
||||
if (!noXkbExtension) {
|
||||
devEnterLeave->state = mouse->button->state & 0x1f00;
|
||||
if (keybd)
|
||||
devEnterLeave->state |=
|
||||
XkbGrabStateFromRec(&keybd->key->xkbInfo->state);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
devEnterLeave->state = (keybd) ? keybd->key->state : 0;
|
||||
devEnterLeave->state |= mouse->button->state;
|
||||
}
|
||||
|
||||
mskidx = mouse->id;
|
||||
inputMasks = wOtherInputMasks(pWin);
|
||||
if (inputMasks &&
|
||||
(filters[mouse->id][devEnterLeave->type] &
|
||||
inputMasks->deliverableEvents[mskidx]))
|
||||
{
|
||||
if (grab)
|
||||
TryClientEvents(rClient(grab), mouse,
|
||||
(xEvent*)devEnterLeave, 1, mask,
|
||||
filters[mouse->id][devEnterLeave->type], grab);
|
||||
else
|
||||
DeliverEventsToWindow(mouse, pWin, (xEvent*)devEnterLeave, 1,
|
||||
filters[mouse->id][devEnterLeave->type],
|
||||
NullGrab, mouse->id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -921,10 +921,6 @@ XkbSrvInfoPtr xkbi;
|
|||
new|= xkbi->state.compat_lookup_mods;
|
||||
else new|= xkbi->state.compat_grab_mods;
|
||||
kbp->state= new;
|
||||
} else if ((type==DeviceEnterNotify)||(type==DeviceLeaveNotify)) {
|
||||
deviceEnterNotify *del = (deviceEnterNotify*)&xE[i];
|
||||
del->state&=0x1F00;
|
||||
del->state|= xkbi->state.compat_grab_mods;
|
||||
}
|
||||
button_mask = 1 << xE[i].u.u.detail;
|
||||
if (type == ButtonPress &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue