diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-08-28 16:23:49 +0930 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-08-28 16:23:49 +0930 |
commit | d328a159716d74f6b8c52e9f3d8030a9240c984d (patch) | |
tree | 39d40ef45fb9a393abfe3c3fd7d860e20d91ed09 | |
parent | affc58142c5a21233dc1ae30288ffef265b57b24 (diff) |
Fix floor control issues and make it work again.
Some braindead errors, guess I was running low on caffeine when I introduced
them.
-rw-r--r-- | src/FloorControl.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/FloorControl.cpp b/src/FloorControl.cpp index 42511fb..382ef32 100644 --- a/src/FloorControl.cpp +++ b/src/FloorControl.cpp @@ -236,8 +236,8 @@ void FloorControl::handleButtonPress(XDeviceButtonEvent* ev, PointerDevice* dev) if (node) { - XID *permdevs, - *denydevs; + XID *permdevs = NULL, + *denydevs = NULL; int nperm, ndeny, rule; XQueryWindowAccess(x11->dpy, client->getClientWindow(), &rule, @@ -254,8 +254,8 @@ void FloorControl::handleButtonPress(XDeviceButtonEvent* ev, PointerDevice* dev) if (i >= nperm) { - permdevs = (XID*)realloc(permdevs, (ndeny + 1) * sizeof(XID)); - denydevs[ndeny++] = (char)id; + permdevs = (XID*)realloc(permdevs, (nperm + 1) * sizeof(XID)); + permdevs[nperm++] = (char)id; XPermitDevices(x11->dpy, client->getClientWindow(), permdevs, nperm); } } @@ -274,6 +274,10 @@ void FloorControl::handleButtonPress(XDeviceButtonEvent* ev, PointerDevice* dev) } } + if (nperm > 0) + XChangeAccessRule(x11->dpy, node->win, WindowAccessDenyAll); + else + XWindowClearAccess(x11->dpy, node->win, WindowAccessClearRule); free(permdevs); free(denydevs); |