X11: How do I REALLY grab the mouse pointer?

Posted by Drew Hall on Stack Overflow See other posts from Stack Overflow or by Drew Hall
Published on 2010-05-08T04:43:56Z Indexed on 2010/05/08 4:48 UTC
Read the original article Hit count: 270

Filed under:
|
|
|
|

I've implemented a horizontal splitter widget in Xlib. I'm trying to grab the mouse when the user clicks & drags on the splitter bar (so that the user can dynamically move the split & thus resize the windows on either side of the splitter bar).

I've used XGrabPointer() after receiving a left click, in hopes that all future mouse motion (dragging) will be diverted to the splitter window until the left button is released.

Unfortuntately, it doesn't seem to work like that. If the user drags too quickly and the mouse pointer enters one of the windows on either side of the split, the MotionEvent messages are diverted to that (child) window rather than the splitter window.

What have I done wrong? My XGrabPointer() call is as follows:

::XGrabPointer(mDisplay, window, True,
               ButtonPressMask |
                 ButtonReleaseMask |
                 PointerMotionMask |
                 FocusChangeMask |
                 EnterWindowMask |
                  LeaveWindowMask,
               GrabModeAsync,
               GrabModeAsync,
               RootWindow(mDisplay, DefaultScreen(mDisplay)),
               None,
               CurrentTime);

© Stack Overflow or respective owner

Related posts about x11

Related posts about mouse