103 lines
5.0 KiB
HTML
103 lines
5.0 KiB
HTML
<HTML><HEAD><TITLE>Tk Built-In Commands - focus manual page</TITLE></HEAD>
|
|
<BR>
|
|
<BODY bgcolor = #c3c3ff>
|
|
<H2><IMG ALIGN=BOTTOM SRC="./Img/ManPageBlue.gif"> focus</H2>
|
|
<I>Manage the input focus</I><P><IMG ALIGN=TOP SRC="./Img/line-red.gif">
|
|
<H3><A NAME="M2">SYNOPSIS</A></H3>
|
|
(<B>focus</B>)<BR>
|
|
(<B>focus </B><I>window</I>)<BR>
|
|
(<B>focus </B><I>option</I> ?<I>arg arg ...</I>?)<BR>
|
|
<H3><A NAME="M3">DESCRIPTION</A></H3>
|
|
The <B>focus</B> procedure is used to manage the Tk input focus.
|
|
At any given time, one window on each display is designated as
|
|
the <I>focus window</I>; 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.
|
|
<P>
|
|
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 <I>explicit</I> 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.
|
|
<P>
|
|
The STk procedure <B>Tk:focus-follows-mouse</B> may be invoked to
|
|
create an <I>implicit</I> focus model: it reconfigures Tk so that
|
|
the focus is set to a window whenever the mouse enters it.
|
|
The STk procedures <B>Tk:focus-next</B> and <B> Tk:focus-prev</B>
|
|
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.
|
|
<P>
|
|
The <B>focus</B> procedure can take any of the following forms:
|
|
<P>
|
|
<DL>
|
|
<DT><A NAME="M4">(<B>focus</B>)</A><DD>
|
|
Returns the path name of the focus window on the display containing
|
|
the application's main window, or <B>#f</B> if no window in
|
|
this application has the focus on that display. Note: it is
|
|
better to specify the display explicitly using <B>:displayof</B>
|
|
(see below) so that the code will work in applications using multiple
|
|
displays.
|
|
<P>
|
|
<DT><A NAME="M5">(<B>focus </B><I>window</I>)</A><DD>
|
|
If the application currently has the input focus on <I>window</I>'s
|
|
display, this procedure resets the input focus for <I>window</I>'s display
|
|
to <I>window</I> and returns an empty string.
|
|
If the application doesn't currently have the input focus on
|
|
<I>window</I>'s display, <I>window</I> 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 <I>window</I>.
|
|
If <I>window</I> is an empty string then the procedure does nothing.
|
|
<P>
|
|
<DT><A NAME="M6">(<B>focus :displayof</B> <I>window</I>)</A><DD>
|
|
Returns the name of the focus window on the display containing <I>window</I>.
|
|
If the focus window for <I>window</I>'s display isn't in this
|
|
application, the return value is an empty list.
|
|
<P>
|
|
<DT><A NAME="M7">(<B>focus :force </B><I>window</I>)</A><DD>
|
|
Sets the focus of <I>window</I>'s display to <I>window</I>, even if
|
|
the application doesn't currently have the input focus for the display.
|
|
This procedure 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 <I>window</I> is an empty string then the procedure does nothing.
|
|
<P>
|
|
<DT><A NAME="M8">(<B>focus :lastfor</B> <I>window</I>)</A><DD>
|
|
Returns the name of the most recent window to have the input focus
|
|
among all the windows in the same top-level as <I>window</I>.
|
|
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.
|
|
|
|
<P>
|
|
</DL>
|
|
<H3><A NAME="M9">QUIRKS</A></H3>
|
|
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.
|
|
<H3><A NAME="M10">SEE ALSO</A></H3>
|
|
<B><A HREF="./grab.n.html">grab</A></B>
|
|
<P><IMG ALIGN=TOP SRC="./Img/line-red.gif"><P>
|
|
<A HREF=./STk-hlp.html><IMG ALIGN=BOTTOM SRC="./Img/RefBookBlue.gif"> Back to the <B>STk</B> main page</A>
|
|
</BODY></HTML>
|