我在 Xlib 中实现了一个水平拆分器小部件。当用户在分隔栏上单击并拖动时,我试图抓住鼠标(以便用户可以动态移动拆分并因此调整分隔栏两侧的窗口大小)。
我XGrabPointer()
在收到左键单击后使用,希望将来所有鼠标运动(拖动)都将转移到拆分器窗口,直到释放左键。
不幸的是,它似乎并不像那样工作。如果用户拖得太快并且鼠标指针进入拆分任一侧的一个窗口,则 MotionEvent 消息将被转移到该(子)窗口而不是拆分窗口。
我做错了什么?我的XGrabPointer()
电话如下:
::XGrabPointer(mDisplay, window, True,
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
FocusChangeMask |
EnterWindowMask |
LeaveWindowMask,
GrabModeAsync,
GrabModeAsync,
RootWindow(mDisplay, DefaultScreen(mDisplay)),
None,
CurrentTime);