Annotation of 43BSDTahoe/new/X/doc/Xlib/ch12c.t, revision 1.1.1.1

1.1       root        1: .NH 2
                      2: Mouse, Button and Server Grabbing
                      3: .PP
                      4: Some programs need to  gain exclusive access to the mouse,
                      5: a single mouse button under some circumstances,
                      6: or the entire X server for the duration of some operation.
                      7: .FD
                      8: .IN "Definitions" "XGrabMouse"
                      9: .IN "XGrabMouse"
                     10: .IN "Mouse" "Grabbing"
                     11: Status XGrabMouse (w, cursor, mask)
                     12:        Window w;
                     13:        Cursor cursor;
                     14:        int mask;       /* event mask */
                     15: .FN
                     16: After \fIXGrabMouse\fP is called, all future mouse events will only go to
                     17: .IN "XSelectInput"
                     18: windows for which the client has previously called \fIXSelectInput\fP.  The
                     19: \fIButtonPressed\fP, \fIButtonReleased\fP, \fIEnterWindow\fP,
                     20: \fILeaveWindow\fP, \fIMouseMoved\fP,
                     21: \fILeftDownMotion\fP, \fIMiddleDownMotion\fP,
                     22: and \fIRightDownMotion\fP bits of the \fImask\fP
                     23: parameter temporarily override the corresponding bits in any mask
                     24: previously passed to \fIXSelectInput\fP; other bits in \fImask\fP are ignored.
                     25: .PP
                     26: .IN "XSelectInput"
                     27: If one of the above-mentioned events occurs, and the client has not
                     28: called \fIXSelectInput\fP on the window where the event would normally be
                     29: sent, then the event will be sent to the window \fIw\fP, provided that the
                     30: event is specified in 
                     31: \fImask\fP and is not \fIEnterWindow\fP or \fILeaveWindow\fP.
                     32: .PP
                     33: .IN "Grabbing Error"
                     34: An error will occur if a different client has already grabbed the mouse
                     35: and has not ungrabbed it.  It is not an error for the same client to
                     36: grab the mouse more than once without ungrabbing it in between.  A
                     37: mouse-grabbing client may want to do this in order to change the cursor
                     38: or event mask without ungrabbing the mouse.
                     39: .PP
                     40: Grabbing the mouse overrides any \fIXGrabButton\fP calls previously issued by
                     41: this or any other client, until the mouse is ungrabbed.
                     42: .PP
                     43: Note that this procedure returns a status and is therefore synchronous,
                     44: even though no other values are returned.
                     45: It returns 0 if the mouse could not be grabbed, non-zero if the
                     46: mouse was successfully grabbed.
                     47: .FD
                     48: .IN "Definitions" "XGrabMouse"
                     49: .IN "XGrabMouse"
                     50: XUngrabMouse ()
                     51: .FN
                     52: \fIXUngrabMouse\fP releases hold of the mouse if it was grabbed by 
                     53: \fIXGrabMouse\fP.
                     54: .FD
                     55: .IN "Definitions" "XGrabButton"
                     56: .IN "XGrabButton"
                     57: Status XGrabButton (w, cursor, buttonMask, eventMask)
                     58:        Window w;
                     59:        Cursor cursor;
                     60:        int buttonMask;
                     61:        int eventMask;
                     62: .FN
                     63: After \fIXGrabButton\fP has been called, the mouse will automatically be
                     64: grabbed whenever a particular mouse button is pressed while certain keys are
                     65: down.
                     66: .IN "Button Mask"
                     67: The combination is specified in \fIbuttonMask\fP;  this mask must
                     68: have exactly one of the \fILeftMask\fP, \fIMiddleMask\fP, and \fIRightMask\fP
                     69: bits set,
                     70: and may have some combination of the \fIControlMask\fP, \fIMetaMask\fP,
                     71: \fIShiftLockMask\fP and
                     72: \fIShiftMask\fP bits set as well.
                     73: .PP
                     74: If the specified button is pressed while exactly the specified keys are down,
                     75: this and all future mouse events are grabbed until all buttons are
                     76: .IN "XGrabMouse"
                     77: released, with events sent to windows as described under \fIXGrabMouse\fP
                     78: above.
                     79: .IN "Event Mask"
                     80: The \fIeventMask\fP determines what mouse events are reported while the
                     81: mouse is grabbed.
                     82: .PP
                     83: An error will occur if another client has already grabbed the same
                     84: button/key combination and has not ungrabbed it.
                     85: .PP
                     86: Note that this procedure returns a status and is therefore synchronous,
                     87: It returns 0 if the button could not be grabbed, non-zero if the
                     88: the button was grabbed successfully.
                     89: .FD
                     90: .IN "Definitions" "XUngrabButton"
                     91: .IN "XGrabButton"
                     92: XUngrabButton (mask)
                     93:        int mask;       /* button mask;  see XGrabButton */
                     94: .FN
                     95: \fIXUngrabButton\fP notifies the server that the client is no longer
                     96: interested in grabbing the mouse when the specified button/key
                     97: combination occurs.
                     98: See \fIXGrabButton\fP for the meaning of the button
                     99: mask bits.
                    100: This grab is overridden by a grab mouse request.
                    101: .FD
                    102: .IN "XGrabServer"
                    103: .IN "Definitions" "XGrabServer"
                    104: .IN "Grabbing" "Server"
                    105: XGrabServer()
                    106: 
                    107: XUngrabServer()
                    108: .FN
                    109: These requests can be used to control processing of output on other
                    110: connections by the window system server.
                    111: No processing of requests or close downs on all other connections
                    112: will occur while the server is grabbed.
                    113: .PP
                    114: .IN "Menus"
                    115: .IN "Window" "Managers"
                    116: This may be useful for menus or window manager programs who may want to
                    117: preserve bits on the screen while temporarily suspending processing
                    118: on other connections.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.