RWS@ZERMATT.LCS.MIT.EDU (Robert Scheifler) (01/06/88)
Date: 4 Jan 88 11:17:42 PST (Monday)
Subject: Ungrabbing the pointer
Why does XUngrabPointer ungrab all previous pointer grabs?
Because you are grabbing the device, and there is only one of them.
Is possible to have
one client grab the pointer in two separate sibling windows?
No.
An example would be
a client that controls two separate windows, each having many subwindows. The
client would like to control a separate rubberbanding box in both windows with
the ability to leave one window, thereby suspending that rubberband until
reentry. Then move to the other window and pick up a rubberbanding box in that
one.
Then don't grab the pointer at all; the window-based demultiplexing should be
sufficient, or else you haven't adequately explained how you want the user interface
to function.
The GrabPointer call seems to allow me to specify a particular window to
grab a particular event in,
No, it allows you to specify the window with respect to which to report events.
The grab is on the pointer, not the window or the pair.
but the Ungrab seems to assume you want to undo
everything.
Correct.
The UnGrabButton on the other hand lets you undo a GrabButton in a
particular window.
Right, because this is establishing a passive grab on the button/window
combination. (But when the grab activates, it is still grabbing the
"entire" pointer.)