xorg-server: Changes to 'ubuntu'
debian/changelog | 7 +
debian/patches/500_xi2.1.patch | 145 ++++++++++++++++++++++++++++++++++-------
2 files changed, 129 insertions(+), 23 deletions(-)
New commits:
commit 40020b808fa2c02cb4d34cdb4e8738bd6c535f8b
Author: Chase Douglas <chase.douglas@canonical.com>
Date: Mon Mar 7 14:28:51 2011 -0500
Prevent pointer motion when more than one touch on touchpad. (LP: #730881)
diff --git a/debian/changelog b/debian/changelog
index 8b6920e..d117a18 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,8 +6,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low
* Check slave device touch selection mask during implicit grab. (LP: #725241)
* Cancel slave touch selections when attached to master device. (LP: #723904)
* Check for touch selections only when there are active clients. (LP: #723900)
+ * Prevent pointer motion when more than one touch on touchpad.
- -- Chase Douglas <chase.douglas@ubuntu.com> Fri, 04 Mar 2011 14:18:45 -0500
+ -- Chase Douglas <chase.douglas@ubuntu.com> Mon, 07 Mar 2011 14:28:02 -0500
xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low
diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch
index 0391ab6..2b22e6f 100644
--- a/debian/patches/500_xi2.1.patch
+++ b/debian/patches/500_xi2.1.patch
@@ -3107,7 +3107,19 @@
}
/**
-@@ -1165,7 +1170,16 @@ GetPointerEvents(EventList *events, Devi
+@@ -1116,7 +1121,10 @@ GetPointerEvents(EventList *events, Devi
+ switch (type)
+ {
+ case MotionNotify:
+- if (!mask_in || valuator_mask_num_valuators(mask_in) <= 0)
++ if (!mask_in || valuator_mask_num_valuators(mask_in) <= 0 ||
++ (pDev->touch && pDev->touch->active_touches > 1 &&
++ (pDev->touch->mode == XIDependentTouch ||
++ pDev->touch->mode == XISemiMultitouch)))
+ return 0;
+ break;
+ case ButtonPress:
+@@ -1165,7 +1173,16 @@ GetPointerEvents(EventList *events, Devi
}
}
@@ -3125,7 +3137,7 @@
moveAbsolute(pDev, &x, &y, &mask);
} else {
if (flags & POINTER_ACCELERATE) {
-@@ -1286,6 +1300,130 @@ GetProximityEvents(EventList *events, De
+@@ -1286,6 +1303,130 @@ GetProximityEvents(EventList *events, De
return num_events;
}
commit 2ea1b7de089075fe3281bbb9251e7d02deffaae0
Author: Chase Douglas <chase.douglas@canonical.com>
Date: Fri Mar 4 14:19:52 2011 -0500
Check for touch selections only when there are active clients. (LP: #723900)
diff --git a/debian/changelog b/debian/changelog
index ccf5ea3..8b6920e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,8 +5,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low
* Cancel touch clients if emulated button press is delivered. (LP: #725191)
* Check slave device touch selection mask during implicit grab. (LP: #725241)
* Cancel slave touch selections when attached to master device. (LP: #723904)
+ * Check for touch selections only when there are active clients. (LP: #723900)
- -- Chase Douglas <chase.douglas@ubuntu.com> Fri, 04 Mar 2011 11:36:19 -0500
+ -- Chase Douglas <chase.douglas@ubuntu.com> Fri, 04 Mar 2011 14:18:45 -0500
xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low
diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch
index ecc640f..0391ab6 100644
--- a/debian/patches/500_xi2.1.patch
+++ b/debian/patches/500_xi2.1.patch
@@ -2415,7 +2415,7 @@
return;
event->root = RootWindow(pSprite)->drawable.id;
-@@ -2369,12 +2490,115 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
+@@ -2369,12 +2490,119 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
xEvent core;
xEvent *xE = NULL;
int rc, mask, count = 0;
@@ -2427,7 +2427,9 @@
+ /* If we are replaying a pointer emulated button press event, find the first
+ * pointer or touch selecting client. */
+ if (syncEvents.playingEvents && event->any.type == ET_ButtonPress &&
-+ (event->device_event.flags & XIPointerEmulated))
++ (event->device_event.flags & XIPointerEmulated) &&
++ event->device_event.touchpoint &&
++ event->device_event.touchpoint->active_clients > 0)
+ {
+ QdEventPtr qe;
+ DeviceEvent *te;
@@ -2499,7 +2501,9 @@
+ }
+ }
+ else if (IsPointerEvent(event) && !syncEvents.playingEvents &&
-+ (event->device_event.flags & XIPointerEmulated))
++ (event->device_event.flags & XIPointerEmulated) &&
++ event->device_event.touchpoint &&
++ event->device_event.touchpoint->active_clients > 0)
+ {
+ /* Non-grabbed emulated pointer event, so check for touch selections. */
+ check_touch = TRUE;
@@ -2532,7 +2536,7 @@
{
/* XI2 events first */
if (mask & XI2_MASK)
-@@ -2383,10 +2607,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
+@@ -2383,10 +2611,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
rc = EventToXI2(event, &xi2);
if (rc == Success)
{
@@ -2560,7 +2564,7 @@
filter, grab);
free(xi2);
if (deliveries > 0)
-@@ -2439,6 +2678,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
+@@ -2439,6 +2682,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
goto unwind;
}
}
@@ -2575,7 +2579,7 @@
child = pWin->drawable.id;
pWin = pWin->parent;
-@@ -2591,7 +2838,7 @@ XYToWindow(SpritePtr pSprite, int x, int
+@@ -2591,7 +2842,7 @@ XYToWindow(SpritePtr pSprite, int x, int
else
pWin = pWin->nextSib;
}
@@ -2584,7 +2588,7 @@
}
/**
-@@ -2629,7 +2876,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi
+@@ -2629,7 +2880,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi
event.deviceid = dev->id;
event.sourceid = dev->id;
event.detail.button = 0;
@@ -2594,7 +2598,7 @@
if (rc)
DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab);
return rc;
-@@ -2666,7 +2914,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind
+@@ -2666,7 +2918,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind
event.deviceid = dev->id;
event.sourceid = dev->id;
event.detail.button = 0;
@@ -2604,7 +2608,7 @@
if (rc)
DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveGrab);
return rc;
-@@ -3353,7 +3602,7 @@ GrabPtr
+@@ -3353,7 +3606,7 @@ GrabPtr
CheckPassiveGrabsOnWindow(
WindowPtr pWin,
DeviceIntPtr device,
@@ -2613,7 +2617,7 @@
BOOL checkCore,
BOOL activate)
{
-@@ -3370,9 +3619,22 @@ CheckPassiveGrabsOnWindow(
+@@ -3370,9 +3623,22 @@ CheckPassiveGrabsOnWindow(
return NULL;
/* Fill out the grab details, but leave the type for later before
* comparing */
@@ -2637,7 +2641,7 @@
tempGrab.detail.pMask = NULL;
tempGrab.modifiersDetail.pMask = NULL;
tempGrab.next = NULL;
-@@ -3380,6 +3642,9 @@ CheckPassiveGrabsOnWindow(
+@@ -3380,6 +3646,9 @@ CheckPassiveGrabsOnWindow(
{
DeviceIntPtr gdev;
XkbSrvInfoPtr xkbi = NULL;
@@ -2647,7 +2651,7 @@
gdev= grab->modifierDevice;
if (grab->grabtype == GRABTYPE_CORE)
-@@ -3405,16 +3670,15 @@ CheckPassiveGrabsOnWindow(
+@@ -3405,16 +3674,15 @@ CheckPassiveGrabsOnWindow(
tempGrab.modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0;
/* Check for XI2 and XI grabs first */
@@ -2666,7 +2670,7 @@
(GrabMatchesSecond(&tempGrab, grab, FALSE)))
match = XI_MATCH;
}
-@@ -3423,125 +3687,143 @@ CheckPassiveGrabsOnWindow(
+@@ -3423,125 +3691,143 @@ CheckPassiveGrabsOnWindow(
if (!match && checkCore)
{
tempGrab.grabtype = GRABTYPE_CORE;
@@ -2907,7 +2911,7 @@
}
return NULL;
#undef CORE_MATCH
-@@ -3580,8 +3862,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De
+@@ -3580,8 +3866,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De
{
int i;
WindowPtr pWin = NULL;
@@ -2922,7 +2926,7 @@
if (event->type != ET_ButtonPress &&
event->type != ET_KeyPress)
-@@ -3609,7 +3896,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De
+@@ -3609,7 +3900,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De
for (; i < focus->traceGood; i++)
{
pWin = focus->trace[i];
@@ -2932,7 +2936,7 @@
return TRUE;
}
-@@ -3619,11 +3907,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De
+@@ -3619,11 +3911,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De
return FALSE;
}
@@ -2990,7 +2994,7 @@
}
return FALSE;
-@@ -3745,6 +4076,17 @@ DeliverGrabbedEvent(InternalEvent *event
+@@ -3745,6 +4080,17 @@ DeliverGrabbedEvent(InternalEvent *event
grabinfo = &thisDev->deviceGrab;
grab = grabinfo->grab;
@@ -3008,7 +3012,7 @@
if (grab->ownerEvents)
{
WindowPtr focus;
-@@ -3821,6 +4163,9 @@ DeliverGrabbedEvent(InternalEvent *event
+@@ -3821,6 +4167,9 @@ DeliverGrabbedEvent(InternalEvent *event
mask = grab->xi2mask[XIAllDevices][evtype/8] |
grab->xi2mask[XIAllMasterDevices][evtype/8] |
grab->xi2mask[thisDev->id][evtype/8];
@@ -3018,7 +3022,7 @@
/* try XI2 event */
FixUpEventFromWindow(pSprite, xi2, grab->window, None, TRUE);
/* XXX: XACE */
-@@ -4955,7 +5300,7 @@ InitEvents(void)
+@@ -4955,7 +5304,7 @@ InitEvents(void)
free(syncEvents.pending);
syncEvents.pending = next;
}
commit 2c05aef93c79f1eec6e8519b2ce973b5a694ccd3
Author: Chase Douglas <chase.douglas@canonical.com>
Date: Fri Mar 4 14:13:19 2011 -0500
Cancel slave touch selections when attached to master device. (LP: #723904)
diff --git a/debian/changelog b/debian/changelog
index 5db48f5..ccf5ea3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,8 +4,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low
upstream since 1.6.1.901.
* Cancel touch clients if emulated button press is delivered. (LP: #725191)
* Check slave device touch selection mask during implicit grab. (LP: #725241)
+ * Cancel slave touch selections when attached to master device. (LP: #723904)
- -- Chase Douglas <chase.douglas@ubuntu.com> Mon, 28 Feb 2011 12:30:07 -0500
+ -- Chase Douglas <chase.douglas@ubuntu.com> Fri, 04 Mar 2011 11:36:19 -0500
xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low
diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch
index b54a574..ecc640f 100644
--- a/debian/patches/500_xi2.1.patch
+++ b/debian/patches/500_xi2.1.patch
@@ -2007,6 +2007,78 @@
/*
* Check if the given buffer contains elements between low (inclusive) and
* high (inclusive) only.
+@@ -2375,6 +2535,58 @@ RecalculateMasterButtons(DeviceIntPtr sl
+ }
+ }
+
++static void
++DropTouchSelectionsOnWindow(DeviceIntPtr dev, WindowPtr win)
++{
++ WindowPtr child;
++
++ if (wOtherInputMasks(win) &&
++ BitIsOn(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchBegin))
++ {
++ InputClientsPtr client = wOtherInputMasks(win)->inputClients;
++
++ /* Don't bother deleting client record if there are no other
++ * selections. The client will likely reselect when it gets the
++ * HierarchyChange event. */
++ while (client)
++ {
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchBegin);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchEnd);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchOwnership);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdate);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdateUnowned);
++
++ client = client->next;
++ }
++
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchBegin);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchEnd);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchOwnership);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdate);
++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdateUnowned);
++ }
++
++ child = win->firstChild;
++ while (child)
++ {
++ DropTouchSelectionsOnWindow(dev, child);
++ child = child->nextSib;
++ }
++}
++
++static void
++DropTouchSelections(DeviceIntPtr dev)
++{
++ int i;
++
++ for (i = 0; i < screenInfo.numScreens; i++)
++ {
++ WindowPtr win = screenInfo.screens[i]->root;
++
++ DropTouchSelectionsOnWindow(dev, win);
++ }
++}
++
+ /**
+ * Attach device 'dev' to device 'master'.
+ * Client is set to the client that issued the request, or NULL if it comes
+@@ -2440,6 +2652,12 @@ AttachDevice(ClientPtr client, DeviceInt
+ dev->spriteInfo->spriteOwner = FALSE;
+
+ RecalculateMasterButtons(master);
++
++ /* Only one client may select for touch events from a device on a window
++ * at any time. Reattaching could break this, so drop all touch event
++ * selections for this specific slave device on all windows. */
++ if (dev->touch)
++ DropTouchSelections(dev);
+ }
+
+ /* XXX: in theory, the MD should change back to its old, original
--- a/dix/eventconvert.c
+++ b/dix/eventconvert.c
@@ -55,6 +55,7 @@ static int eventToKeyButtonPointer(Devic
commit d9521df32c0870afd8a8a3f60857b74ac5e4f565
Author: Chase Douglas <chase.douglas@canonical.com>
Date: Mon Feb 28 12:31:17 2011 -0500
Check slave device touch selection mask during implicit grab. (LP: #725241)
diff --git a/debian/changelog b/debian/changelog
index 881acaa..5db48f5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,8 +3,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low
* Remove 169_mipointer_nullptr_checks.patch, fixed in another way
upstream since 1.6.1.901.
* Cancel touch clients if emulated button press is delivered. (LP: #725191)
+ * Check slave device touch selection mask during implicit grab. (LP: #725241)
- -- Chase Douglas <chase.douglas@ubuntu.com> Mon, 28 Feb 2011 12:27:37 -0500
+ -- Chase Douglas <chase.douglas@ubuntu.com> Mon, 28 Feb 2011 12:30:07 -0500
xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low
diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch
index 06a26fa..b54a574 100644
--- a/debian/patches/500_xi2.1.patch
+++ b/debian/patches/500_xi2.1.patch
@@ -2936,7 +2936,17 @@
if (grab->ownerEvents)
{
WindowPtr focus;
-@@ -4955,7 +5297,7 @@ InitEvents(void)
+@@ -3821,6 +4163,9 @@ DeliverGrabbedEvent(InternalEvent *event
+ mask = grab->xi2mask[XIAllDevices][evtype/8] |
+ grab->xi2mask[XIAllMasterDevices][evtype/8] |
+ grab->xi2mask[thisDev->id][evtype/8];
++ if (IsTouchEvent(event))
++ mask |=
++ grab->xi2mask[event->device_event.sourceid][evtype/8];
+ /* try XI2 event */
+ FixUpEventFromWindow(pSprite, xi2, grab->window, None, TRUE);
+ /* XXX: XACE */
+@@ -4955,7 +5300,7 @@ InitEvents(void)
free(syncEvents.pending);
syncEvents.pending = next;
}
commit a57f9082e4268e0ca0ba68459ddc2c5d7bf9b235
Author: Chase Douglas <chase.douglas@canonical.com>
Date: Mon Feb 28 12:29:30 2011 -0500
Cancel touch clients if emulated button press is delivered. (LP: #725191)
diff --git a/debian/changelog b/debian/changelog
index 85d1d3a..881acaa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,8 +2,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low
* Remove 169_mipointer_nullptr_checks.patch, fixed in another way
upstream since 1.6.1.901.
+ * Cancel touch clients if emulated button press is delivered. (LP: #725191)
- -- Timo Aaltonen <tjaalton@ubuntu.com> Fri, 25 Feb 2011 13:17:15 +0200
+ -- Chase Douglas <chase.douglas@ubuntu.com> Mon, 28 Feb 2011 12:27:37 -0500
xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low
diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch
index bca9ac3..06a26fa 100644
--- a/debian/patches/500_xi2.1.patch
+++ b/debian/patches/500_xi2.1.patch
@@ -2343,7 +2343,7 @@
return;
event->root = RootWindow(pSprite)->drawable.id;
-@@ -2369,12 +2490,112 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
+@@ -2369,12 +2490,115 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
xEvent core;
xEvent *xE = NULL;
int rc, mask, count = 0;
@@ -2413,9 +2413,12 @@
+ ti->emulate_pointer = FALSE;
+ if (IsPointerEvent(event))
+ return 0;
++ } else {
++ ti->owner = -1;
++ ti->active_clients = 0;
++ if (IsTouchEvent(event))
++ return 0;
+ }
-+ else if (IsTouchEvent(event))
-+ return 0;
+
+ break;
+ }
@@ -2457,7 +2460,7 @@
{
/* XI2 events first */
if (mask & XI2_MASK)
-@@ -2383,10 +2604,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
+@@ -2383,10 +2607,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
rc = EventToXI2(event, &xi2);
if (rc == Success)
{
@@ -2485,7 +2488,7 @@
filter, grab);
free(xi2);
if (deliveries > 0)
-@@ -2439,6 +2675,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
+@@ -2439,6 +2678,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
goto unwind;
}
}
@@ -2500,7 +2503,7 @@
child = pWin->drawable.id;
pWin = pWin->parent;
-@@ -2591,7 +2835,7 @@ XYToWindow(SpritePtr pSprite, int x, int
+@@ -2591,7 +2838,7 @@ XYToWindow(SpritePtr pSprite, int x, int
else
pWin = pWin->nextSib;
}
@@ -2509,7 +2512,7 @@
}
/**
-@@ -2629,7 +2873,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi
+@@ -2629,7 +2876,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi
event.deviceid = dev->id;
event.sourceid = dev->id;
event.detail.button = 0;
@@ -2519,7 +2522,7 @@
if (rc)
DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab);
return rc;
-@@ -2666,7 +2911,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind
+@@ -2666,7 +2914,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind
event.deviceid = dev->id;
event.sourceid = dev->id;
event.detail.button = 0;
@@ -2529,7 +2532,7 @@
if (rc)
DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveGrab);
return rc;
-@@ -3353,7 +3599,7 @@ GrabPtr
+@@ -3353,7 +3602,7 @@ GrabPtr
CheckPassiveGrabsOnWindow(
WindowPtr pWin,
DeviceIntPtr device,
@@ -2538,7 +2541,7 @@
BOOL checkCore,
BOOL activate)
{
-@@ -3370,9 +3616,22 @@ CheckPassiveGrabsOnWindow(
+@@ -3370,9 +3619,22 @@ CheckPassiveGrabsOnWindow(
return NULL;
/* Fill out the grab details, but leave the type for later before
* comparing */
@@ -2562,7 +2565,7 @@
tempGrab.detail.pMask = NULL;
tempGrab.modifiersDetail.pMask = NULL;
tempGrab.next = NULL;
-@@ -3380,6 +3639,9 @@ CheckPassiveGrabsOnWindow(
+@@ -3380,6 +3642,9 @@ CheckPassiveGrabsOnWindow(
{
DeviceIntPtr gdev;
XkbSrvInfoPtr xkbi = NULL;
@@ -2572,7 +2575,7 @@
gdev= grab->modifierDevice;
if (grab->grabtype == GRABTYPE_CORE)
-@@ -3405,16 +3667,15 @@ CheckPassiveGrabsOnWindow(
+@@ -3405,16 +3670,15 @@ CheckPassiveGrabsOnWindow(
tempGrab.modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0;
/* Check for XI2 and XI grabs first */
@@ -2591,7 +2594,7 @@
(GrabMatchesSecond(&tempGrab, grab, FALSE)))
match = XI_MATCH;
}
-@@ -3423,125 +3684,143 @@ CheckPassiveGrabsOnWindow(
+@@ -3423,125 +3687,143 @@ CheckPassiveGrabsOnWindow(
if (!match && checkCore)
{
tempGrab.grabtype = GRABTYPE_CORE;
@@ -2832,7 +2835,7 @@
}
return NULL;
#undef CORE_MATCH
-@@ -3580,8 +3859,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De
+@@ -3580,8 +3862,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De
{
int i;
WindowPtr pWin = NULL;
@@ -2847,7 +2850,7 @@
if (event->type != ET_ButtonPress &&
event->type != ET_KeyPress)
-@@ -3609,7 +3893,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De
+@@ -3609,7 +3896,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De
for (; i < focus->traceGood; i++)
{
pWin = focus->trace[i];
@@ -2857,7 +2860,7 @@
return TRUE;
}
-@@ -3619,11 +3904,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De
+@@ -3619,11 +3907,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De
return FALSE;
}
@@ -2915,7 +2918,7 @@
}
return FALSE;
-@@ -3745,6 +4073,17 @@ DeliverGrabbedEvent(InternalEvent *event
+@@ -3745,6 +4076,17 @@ DeliverGrabbedEvent(InternalEvent *event
grabinfo = &thisDev->deviceGrab;
grab = grabinfo->grab;
@@ -2933,7 +2936,7 @@
if (grab->ownerEvents)
{
WindowPtr focus;
-@@ -4955,7 +5294,7 @@ InitEvents(void)
+@@ -4955,7 +5297,7 @@ InitEvents(void)
free(syncEvents.pending);
syncEvents.pending = next;
}
Reply to: