summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-08-28 16:23:49 +0930
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-08-28 16:23:49 +0930
commitd328a159716d74f6b8c52e9f3d8030a9240c984d (patch)
tree39d40ef45fb9a393abfe3c3fd7d860e20d91ed09
parentaffc58142c5a21233dc1ae30288ffef265b57b24 (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.cpp12
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);