X11: Как ДЕЙСТВИТЕЛЬНО схватить указатель мыши?

Я реализовал виджет горизонтального сплиттера в Xlib. Я пытаюсь схватить мышь, когда пользователь нажимает и перетаскивает панель разделителя (чтобы пользователь мог динамически перемещать разделитель и, таким образом, изменять размеры окон по обе стороны от разделителя).

Я использовалXGrabPointer() после получения левого щелчка, в надежде, что все будущие движения мыши (перетаскивание) будут перенаправлены в окно разделителя, пока не будет отпущена левая кнопка.

К сожалению, это не похоже на работу. Если пользователь перетаскивает слишком быстро и указатель мыши входит в одно из окон по обе стороны от разделения, сообщения MotionEvent направляются в это (дочернее) окно, а не в окно разделителя.

Что я сделал не так? мойXGrabPointer() вызов выглядит следующим образом:

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

Ответы на вопрос(1)

Ваш ответ на вопрос