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);