summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-02-28 15:28:46 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-07-17 14:35:34 +1000
commit7343d05e3a502216532aa9901c3a8948ea118c78 (patch)
treee49e5033e0d899ade0d283f7b5ce8a3e33b088d9
parent18346911ab0ce1ad66986b83f9afefadec25555e (diff)
Xi: if a passive async grab is activated from an emulated touch, accept
Async grabs cannot replay events, they cannot reject, so we can do an early accept here. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit d905348134c80f19793eefb761731b00559ddf3a)
-rw-r--r--Xi/exevents.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 180f4b558..f1081cf3f 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1848,8 +1848,14 @@ DeliverTouchBeginEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
listener->type == LISTENER_POINTER_GRAB) {
rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win,
grab, xi2mask);
- if (rc == Success)
+ if (rc == Success) {
listener->state = LISTENER_IS_OWNER;
+ /* async grabs cannot replay, so automatically accept this touch */
+ if (dev->deviceGrab.grab &&
+ dev->deviceGrab.fromPassiveGrab &&
+ dev->deviceGrab.grab->pointerMode == GrabModeAsync)
+ ActivateEarlyAccept(dev, ti);
+ }
goto out;
}