Peter Hutterer wrote:
> On Mon, Jan 05, 2009 at 11:55:40AM -0500, Thomas Jaeger wrote:
>> From 3f8ba578ad18b7135031197f6ec5145afcd1479a Mon Sep 17 00:00:00 2001
>> From: Thomas Jaeger <thjae...@gmail.com>
>> Date: Mon, 22 Dec 2008 00:55:09 +0100
>> Subject: [PATCH] Count the number of logically down buttons in buttonsDown
>>
>> This fixes the following bug.  Assuming your window manager grabs
>> Alt+Button1 to move windows, map Button3 to 0 via XSetPointerMapping,
>> then press the physical button 3 (this shouldn't have any effect), press
>> Alt and then button 1.  The press event is delivered to the application
>> instead of firing the grab.
> 
> Signed off and pushed (finally). Thanks for the patch.
> Can you send me the updated version of the other patch please, AFAICT there
> was a minor change missing.

Thanks.  This one should do it now.
>From d6ea6d45d5d3ca74bb665f32439f440b30a8939d Mon Sep 17 00:00:00 2001
From: Thomas Jaeger <thjae...@gmail.com>
Date: Sat, 20 Dec 2008 16:17:02 +0100
Subject: [PATCH] Don't release grabs unless all buttons are up

Previously, only buttons <= 5 would count here, but the core protocol
allows for 255 buttons.

http://lists.freedesktop.org/archives/xorg/2009-January/042092.html
---
 Xi/exevents.c |    2 +-
 dix/events.c  |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Xi/exevents.c b/Xi/exevents.c
index f3f9d39..6bf9e56 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1118,7 +1118,7 @@ ProcessOtherEvent(xEventPtr xE, DeviceIntPtr device, int count)
 	    xE->u.u.detail = key;
 	    return;
 	}
-        if (!b->state && device->deviceGrab.fromPassiveGrab)
+        if (!b->buttonsDown && device->deviceGrab.fromPassiveGrab)
             deactivateDeviceGrab = TRUE;
     }
 
diff --git a/dix/events.c b/dix/events.c
index a042089..e23cf8f 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3929,7 +3929,7 @@ ProcessPointerEvent (xEvent *xE, DeviceIntPtr mouse, int count)
 	    if (xE->u.u.detail == 0)
 		return;
             filters[mouse->id][Motion_Filter(butc)] = MotionNotify;
-	    if (!butc->state && mouse->deviceGrab.fromPassiveGrab)
+	    if (!butc->buttonsDown && mouse->deviceGrab.fromPassiveGrab)
 		deactivateGrab = TRUE;
 	    break;
 	default:
-- 
1.6.0.6

_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to