Implementé un widget de divisor horizontal en Xlib. Intento agarrar el mouse cuando el usuario hace clic en & arrastra en la barra de división (para que el usuario pueda mover dinámicamente la división & y cambiar el tamaño de las ventanas en ambos lados de la barra divisora).X11: ¿Cómo agarro REALMENTE el puntero del mouse?
He utilizado XGrabPointer()
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, parece que no funciona así. Si el usuario se arrastra demasiado rápido y el puntero del mouse entra en una de las ventanas a ambos lados 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? Mi XGrabPointer()
llamada es el siguiente:
::XGrabPointer(mDisplay, window, True,
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
FocusChangeMask |
EnterWindowMask |
LeaveWindowMask,
GrabModeAsync,
GrabModeAsync,
RootWindow(mDisplay, DefaultScreen(mDisplay)),
None,
CurrentTime);
Odio aceptar mi propia respuesta, pero solo para atar cabos sueltos ... –