X11: Как ДЕЙСТВИТЕЛЬНО схватить указатель мыши?
Я реализовал виджет горизонтального сплиттера в Xlib. Я пытаюсь схватить мышь, когда пользователь нажимает и перетаскивает панель разделителя (чтобы пользователь мог динамически перемещать разделитель и, таким образом, изменять размеры окон по обе стороны от разделителя).
Я использовалXGrabPointer()
после получения левого щелчка, в надежде, что все будущие движения мыши (перетаскивание) будут перенаправлены в окно разделителя, пока не будет отпущена левая кнопка.
К сожалению, это не похоже на работу. Если пользователь перетаскивает слишком быстро и указатель мыши входит в одно из окон по обе стороны от разделения, сообщения MotionEvent направляются в это (дочернее) окно, а не в окно разделителя.
Что я сделал не так? мойXGrabPointer()
вызов выглядит следующим образом:
::XGrabPointer(mDisplay, window, True,
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
FocusChangeMask |
EnterWindowMask |
LeaveWindowMask,
GrabModeAsync,
GrabModeAsync,
RootWindow(mDisplay, DefaultScreen(mDisplay)),
None,
CurrentTime);