X11: ¿Cómo REALMENTE agarro el puntero del mouse?

He implementado un widget divisor horizontal en Xlib. Estoy tratando de agarrar el mouse cuando el usuario hace clic y arrastra la barra divisoria (para que el usuario pueda mover dinámicamente la división y así cambiar el tamaño de las ventanas a cada lado de la barra divisoria).

he usadoXGrabPointer() después de recibir un clic izquierdo, con la esperanza de que todo el movimiento futuro del mouse (arrastre) se desvíe a la ventana del divisor hasta que se suelte el botón izquierdo.

Desafortunadamente, no parece funcionar así. Si el usuario arrastra demasiado rápido y el puntero del mouse entra en una de las ventanas a cada lado de la división, los mensajes de MotionEvent se desvían a esa ventana (secundaria) en lugar de a la ventana del divisor.

¿Qué he hecho mal? MiXGrabPointer() la llamada es la siguiente:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta