Внедрих джаджа за хоризонтален разделител в Xlib. Опитвам се да хвана мишката, когато потребителят щракне и плъзне върху лентата за разделяне (така че потребителят да може динамично да премести разделянето и по този начин да преоразмери прозорците от двете страни на лентата за разделяне).
Използвах XGrabPointer()
след щракване с ляв бутон, с надеждата, че всички бъдещи движения на мишката (плъзгане) ще бъдат пренасочени към прозореца на разделителя, докато левият бутон не бъде освободен.
За съжаление, изглежда, че не работи така. Ако потребителят плъзга твърде бързо и показалецът на мишката влезе в един от прозорците от двете страни на разделянето, съобщенията за MotionEvent се пренасочват към този (дете) прозорец, а не към прозореца на разделителя.
Какво съм направил грешно? Моето XGrabPointer()
обаждане е както следва:
::XGrabPointer(mDisplay, window, True,
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
FocusChangeMask |
EnterWindowMask |
LeaveWindowMask,
GrabModeAsync,
GrabModeAsync,
RootWindow(mDisplay, DefaultScreen(mDisplay)),
None,
CurrentTime);