X11: Wie kann ich den Mauszeiger WIRKLICH greifen?

Ich habe ein horizontales Splitter-Widget in Xlib implementiert. Ich versuche, die Maus zu greifen, wenn der Benutzer auf die Teilungsleiste klickt und zieht (damit der Benutzer die Teilung dynamisch verschieben und die Größe der Fenster auf beiden Seiten der Teilungsleiste ändern kann).

Ich habe @ verwendXGrabPointer() nach dem Erhalt eines Linksklicks in der Hoffnung, dass alle zukünftigen Mausbewegungen (Ziehen) zum Splitter-Fenster umgeleitet werden, bis die linke Taste losgelassen wird.

Unglücklicherweise scheint es nicht so zu funktionieren. Wenn der Benutzer zu schnell zieht und der Mauszeiger in eines der Fenster auf beiden Seiten der Teilung eintritt, werden die MotionEvent-Meldungen in dieses (untergeordnete) Fenster und nicht in das Teilungsfenster umgeleitet.

Was habe ich falsch gemacht? MeinXGrabPointer() call ist wie folgt:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage