home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ggggrrrraaaabbbb((((nnnn)))) TTTTkkkk (((( )))) ggggrrrraaaabbbb((((nnnn))))
-
-
-
- _________________________________________________________________
-
- NNNNAAAAMMMMEEEE
- grab - Confine pointer and keyboard events to a window sub-
- tree
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ggggrrrraaaabbbb ?----gggglllloooobbbbaaaallll? _w_i_n_d_o_w
- ggggrrrraaaabbbb _o_p_t_i_o_n ?arg arg ...? |
- _________________________________________________________________
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This command implements simple pointer and keyboard grabs
- for Tk. Tk's grabs are different than the grabs described
- in the Xlib documentation. When a grab is set for a
- particular window, Tk restricts all pointer events to the
- grab window and its descendants in Tk's window hierarchy.
- Whenever the pointer is within the grab window's subtree,
- the pointer will behave exactly the same as if there had
- been no grab at all and all events will be reported in the
- normal fashion. When the pointer is outside _w_i_n_d_o_w's tree,
- button presses and releases and mouse motion events are
- reported to _w_i_n_d_o_w, and window entry and window exit events
- are ignored. The grab subtree ``owns'' the pointer: windows
- outside the grab subtree will be visible on the screen but
- they will be insensitive until the grab is released. The
- tree of windows underneath the grab window can include top-
- level windows, in which case all of those top-level windows
- and their descendants will continue to receive mouse events
- during the grab.
-
- Two forms of grabs are possible: local and global. A local
- grab affects only the grabbing application: events will be
- reported to other applications as if the grab had never
- occurred. Grabs are local by default. A global grab locks
- out all applications on the screen, so that only the given
- subtree of the grabbing application will be sensitive to
- pointer events (mouse button presses, mouse button releases,
- pointer motions, window entries, and window exits). During
- global grabs the window manager will not receive pointer
- events either.
-
- During local grabs, keyboard events (key presses and key
- releases) are delivered as usual: the window manager
- controls which application receives keyboard events, and if
- they are sent to any window in the grabbing application then
- they are redirected to the focus window. During a global
- grab Tk grabs the keyboard so that all keyboard events are
- always sent to the grabbing application. The ffffooooccccuuuussss command
- is still used to determine which window in the application
- receives the keyboard events. The keyboard grab is released
-
-
-
- Page 1 (printed 7/23/95)
-
-
-
-
-
-
- ggggrrrraaaabbbb((((nnnn)))) TTTTkkkk (((( )))) ggggrrrraaaabbbb((((nnnn))))
-
-
-
- when the grab is released.
-
- Grabs apply to particular displays. If an application has
- windows on multiple displays then it can establish a
- separate grab on each display. The grab on a particular
- display affects only the windows on that display. It is
- possible for different applications on a single display to
- have simultaneous local grabs, but only one application can
- have a global grab on a given display at once.
-
- The ggggrrrraaaabbbb command can take any of the following forms:
-
- ggggrrrraaaabbbb ?----gggglllloooobbbbaaaallll? _w_i_n_d_o_w
- Same as ggggrrrraaaabbbb sssseeeetttt, described below. |
-
- ggggrrrraaaabbbb ccccuuuurrrrrrrreeeennnntttt ?_w_i_n_d_o_w? ||
- If _w_i_n_d_o_w is specified, returns the name of the current |
- grab window in this application for _w_i_n_d_o_w's display, |
- or an empty string if there is no such window. If |
- _w_i_n_d_o_w is omitted, the command returns a list whose |
- elements are all of the windows grabbed by this |
- application for all displays, or an empty string if the |
- application has no grabs. |
-
- ggggrrrraaaabbbb rrrreeeelllleeeeaaaasssseeee _w_i_n_d_o_w ||
- Releases the grab on _w_i_n_d_o_w if there is one, otherwise |
- does nothing. Returns an empty string. |
-
- ggggrrrraaaabbbb sssseeeetttt ?----gggglllloooobbbbaaaallll? _w_i_n_d_o_w ||
- Sets a grab on _w_i_n_d_o_w. If ----gggglllloooobbbbaaaallll is specified then |
- the grab is global, otherwise it is local. If a grab |
- was already in effect for this application on _w_i_n_d_o_w's |
- display then it is automatically released. If there is |
- already a grab on _w_i_n_d_o_w and it has the same |
- global/local form as the requested grab, then the |
- command does nothing. Returns an empty string. |
-
- ggggrrrraaaabbbb ssssttttaaaattttuuuussss _w_i_n_d_o_w ||
- Returns nnnnoooonnnneeee if no grab is currently set on _w_i_n_d_o_w, |
- llllooooccccaaaallll if a local grab is set on _w_i_n_d_o_w, and gggglllloooobbbbaaaallll if a |
- global grab is set.
-
-
- BBBBUUUUGGGGSSSS
- It took an incredibly complex and gross implementation to
- produce the simple grab effect described above. Given the
- current implementation, it isn't safe for applications to
- use the Xlib grab facilities at all except through the Tk
- grab procedures. If applications try to manipulate X's grab
- mechanisms directly, things will probably break.
-
- If a single process is managing several different Tk |
-
-
-
- Page 2 (printed 7/23/95)
-
-
-
-
-
-
- ggggrrrraaaabbbb((((nnnn)))) TTTTkkkk (((( )))) ggggrrrraaaabbbb((((nnnn))))
-
-
-
- applications, only one of those applications can have a |
- local grab for a given display at any given time. If the |
- applications are in different processes, this restriction |
- doesn't exist.
-
-
- KKKKEEEEYYYYWWWWOOOORRRRDDDDSSSS
- grab, keyboard events, pointer events, window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 3 (printed 7/23/95)
-
-
-
-