summaryrefslogtreecommitdiff
path: root/src/PointerDevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/PointerDevice.cpp')
-rw-r--r--src/PointerDevice.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/PointerDevice.cpp b/src/PointerDevice.cpp
index c819877..6b9a1d5 100644
--- a/src/PointerDevice.cpp
+++ b/src/PointerDevice.cpp
@@ -141,9 +141,11 @@ bool PointerDevice::resizeOn(WMWindow* win, Window button, int x, int y)
resizeOffset[1] = y;
resizeButton = button;
- // in case we get out of the window we still need to catch the release
- XEventClass classes[2] = {evclasses[XI_MotionNotify], evclasses[XI_ButtonRelease]};
- XSelectExtensionEvent(x11->dpy, x11->root, classes, 2);
+ XEventClass classes[3] = {evclasses[XI_MotionNotify],
+ evclasses[XI_ButtonPress],
+ evclasses[XI_ButtonRelease]};
+ XGrabDevice(x11->dpy, this->dev, win->getWindowBar(),
+ True, 3, classes, GrabModeAsync, GrabModeAsync, CurrentTime);
return true;
}
@@ -162,8 +164,7 @@ void PointerDevice::resizeOff()
resizeWindow = NULL;
resizeOffset[0] = resizeOffset[1] = 0;
- XEventClass motion = evclasses[XI_MotionNotify];
- XSelectExtensionEvent(x11->dpy, x11->root, &motion, 1);
+ XUngrabDevice(x11->dpy, this->dev, CurrentTime);
}
bool PointerDevice::isResizing()
@@ -198,7 +199,7 @@ void PointerDevice::setWMEvents(WMWindow* window)
XSelectExtensionEvent(x11->dpy, window->getWindowBar(), &classes[0], 3);
//XSelectExtensionEvent(x11->dpy, window->getResizeBar(), &classes[0], 3);
- XSelectExtensionEvent(x11->dpy, window->getButtonClose(), &classes[2], 1);
+ XSelectExtensionEvent(x11->dpy, window->getButtonClose(), &classes[1], 2);
XSelectExtensionEvent(x11->dpy, window->getButtonFloor(), &classes[1], 1);
XSelectExtensionEvent(x11->dpy, window->getButtonOverlay(), &classes[1], 1);
XSelectExtensionEvent(x11->dpy, window->getButtonMinimize(), &classes[1], 1);