focus.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
- '"
- '" Copyright (c) 1990-1994 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: focus.n,v 1.2.26.1 2004/10/28 10:19:29 dkf Exp $
- '"
- .so man.macros
- .TH focus n 4.0 Tk "Tk Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- focus - Manage the input focus
- .SH SYNOPSIS
- .nf
- fBfocusfR
- fBfocus fIwindowfR
- fBfocus fIoptionfR ?fIarg arg ...fR?
- .fi
- .BE
- .SH DESCRIPTION
- .PP
- The fBfocusfR command is used to manage the Tk input focus.
- At any given time, one window on each display is designated as
- the fIfocus windowfR; any key press or key release events for the
- display are sent to that window.
- It is normally up to the window manager to redirect the focus among the
- top-level windows of a display. For example, some window managers
- automatically set the input focus to a top-level window whenever
- the mouse enters it; others redirect the input focus only when
- the user clicks on a window.
- Usually the window manager will set the focus
- only to top-level windows, leaving it up to the application to
- redirect the focus among the children of the top-level.
- .PP
- Tk remembers one focus window for each top-level (the most recent
- descendant of that top-level to receive the focus); when the window
- manager gives the focus
- to a top-level, Tk automatically redirects it to the remembered
- window. Within a top-level Tk uses an fIexplicitfR focus model
- by default. Moving the mouse within a top-level does not normally
- change the focus; the focus changes only when a widget
- decides explicitly to claim the focus (e.g., because of a button
- click), or when the user types a key such as Tab that moves the
- focus.
- .PP
- The Tcl procedure fBtk_focusFollowsMousefR may be invoked to
- create an fIimplicitfR focus model: it reconfigures Tk so that
- the focus is set to a window whenever the mouse enters it.
- The Tcl procedures fBtk_focusNextfR and fBtk_focusPrevfR
- implement a focus order among the windows of a top-level; they
- are used in the default bindings for Tab and Shift-Tab, among other
- things.
- .PP
- The fBfocusfR command can take any of the following forms:
- .TP
- fBfocusfR
- Returns the path name of the focus window on the display containing
- the application's main window, or an empty string if no window in
- this application has the focus on that display. Note: it is
- better to specify the display explicitly using fB-displayoffR
- (see below) so that the code will work in applications using multiple
- displays.
- .TP
- fBfocus fIwindowfR
- If the application currently has the input focus on fIwindowfR's
- display, this command resets the input focus for fIwindowfR's display
- to fIwindowfR and returns an empty string.
- If the application doesn't currently have the input focus on
- fIwindowfR's display, fIwindowfR will be remembered as the focus
- for its top-level; the next time the focus arrives at the top-level,
- Tk will redirect it to fIwindowfR.
- If fIwindowfR is an empty string then the command does nothing.
- .TP
- fBfocus -displayoffR fIwindowfR
- Returns the name of the focus window on the display containing fIwindowfR.
- If the focus window for fIwindowfR's display isn't in this
- application, the return value is an empty string.
- .TP
- fBfocus -force fIwindowfR
- Sets the focus of fIwindowfR's display to fIwindowfR, even if
- the application doesn't currently have the input focus for the display.
- This command should be used sparingly, if at all.
- In normal usage, an application should not claim the focus for
- itself; instead, it should wait for the window manager to give it
- the focus.
- If fIwindowfR is an empty string then the command does nothing.
- .TP
- fBfocus -lastforfR fIwindowfR
- Returns the name of the most recent window to have the input focus
- among all the windows in the same top-level as fIwindowfR.
- If no window in that top-level has ever had the input focus, or
- if the most recent focus window has been deleted, then the name
- of the top-level is returned. The return value is the window that
- will receive the input focus the next time the window manager gives
- the focus to the top-level.
- .SH "QUIRKS"
- .PP
- When an internal window receives the input focus, Tk doesn't actually
- set the X focus to that window; as far as X is concerned, the focus
- will stay on the top-level window containing the window with the focus.
- However, Tk generates FocusIn and FocusOut events just as if the X
- focus were on the internal window. This approach gets around a
- number of problems that would occur if the X focus were actually moved;
- the fact that the X focus is on the top-level is invisible unless
- you use C code to query the X server directly.
- .SH "EXAMPLE"
- To make a window that only participates in the focus traversal ring
- when a variable is set, add the following bindings to the widgets
- fIbeforefR and fIafterfR it in that focus ring:
- .CS
- button .before -text "Before"
- button .middle -text "Middle"
- button .after -text "After"
- checkbutton .flag -variable traverseToMiddle -takefocus 0
- pack .flag -side left
- pack .before .middle .after
- bind .before <Tab> {
- if {!$traverseToMiddle} {
- fBfocusfR .after
- break
- }
- }
- bind .after <Shift-Tab> {
- if {!$traverseToMiddle} {
- fBfocusfR .before
- break
- }
- }
- fBfocusfR .before
- .CE
- .SH KEYWORDS
- events, focus, keyboard, top-level, window manager