home *** CD-ROM | disk | FTP | other *** search
-
- <HTML>
- <HEAD>
- <TITLE>focus - Manage the input focus</TITLE>
- <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
- <LINK REV="made" HREF="mailto:">
- </HEAD>
-
- <BODY>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> focus - Manage the input focus</P></STRONG>
- </TD></TR>
- </TABLE>
-
- <A NAME="__index__"></A>
- <!-- INDEX BEGIN -->
-
- <UL>
-
- <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
-
- <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
- <LI><A HREF="#description">DESCRIPTION</A></LI>
- <LI><A HREF="#quirks">QUIRKS</A></LI>
- <LI><A HREF="#caveats">CAVEATS</A></LI>
- <LI><A HREF="#keywords">KEYWORDS</A></LI>
- </UL>
- <!-- INDEX END -->
-
- <HR>
- <P>
- <H1><A NAME="name">NAME</A></H1>
- <P>focus - Manage the input focus</P>
- <P>
- <HR>
- <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
- <UL>
- <LI>Linux</LI>
- <LI>Solaris</LI>
- <LI>Windows</LI>
- </UL>
- <HR>
- <H1><A NAME="synopsis">SYNOPSIS</A></H1>
- <P> <EM>$widget</EM>-><STRONG>focus</STRONG></P>
- <P> <EM>$widget</EM>-><STRONG>focus</STRONG><EM>Option</EM></P>
- <P> <EM>$widget</EM>-><STRONG>focusNext</STRONG></P>
- <P> <EM>$widget</EM>-><STRONG>focusPrev</STRONG></P>
- <P> <EM>$widget</EM>-><STRONG>focusFollowsMouse</STRONG></P>
- <P>
- <HR>
- <H1><A NAME="description">DESCRIPTION</A></H1>
- <P>The <STRONG>focus</STRONG> methods are used to manage the Tk input focus.
- At any given time, one window on each display is designated as
- the <EM>focus window</EM>; 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>
- <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 <EM>explicit</EM> 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>
- <P>The method <STRONG>focusFollowsMouse</STRONG> may be invoked to
- create an <EM>implicit</EM> focus model: it reconfigures Tk so that
- the focus is set to a window whenever the mouse enters it.
- The methods <STRONG>focusNext</STRONG> and <STRONG>focusPrev</STRONG>
- 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>
- <P>The <STRONG>focus</STRONG> methods can take any of the following forms:</P>
- <DL>
- <DT><STRONG><A NAME="item_focusCurrent"><EM>$widget</EM>-><STRONG>focusCurrent</STRONG></A></STRONG><BR>
- <DD>
- Returns the focus window on the display containing
- the <EM>$widget</EM>, or an empty string if no window in
- this application has the focus on that display.
- <P></P>
- <DT><STRONG><A NAME="item_focus"><EM>$widget</EM>-><STRONG>focus</STRONG></A></STRONG><BR>
- <DD>
- If the application currently has the input focus on <EM>$widget</EM>'s
- display, this command resets the input focus for <EM>$widget</EM>'s display
- to <EM>$widget</EM> and returns an empty string.
- If the application doesn't currently have the input focus on
- <EM>$widget</EM>'s display, <EM>$widget</EM> 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 <EM>$widget</EM>.
- <P></P>
- <DT><STRONG><A NAME="item_focusForce"><EM>$widget</EM>-><STRONG>focusForce</STRONG></A></STRONG><BR>
- <DD>
- Sets the focus of <EM>$widget</EM>'s display to <EM>$widget</EM>, 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.
- <P></P>
- <DT><STRONG><A NAME="item_focusLast"><EM>$widget</EM>-><STRONG>focusLast</STRONG></A></STRONG><BR>
- <DD>
- Returns the name of the most recent window to have the input focus
- among all the windows in the same top-level as <EM>$widget</EM>.
- 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 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></P>
- <DT><STRONG><A NAME="item_focusNext"><EM>$widget</EM>-><STRONG>focusNext</STRONG></A></STRONG><BR>
- <DD>
- <DT><STRONG><A NAME="item_focusPrev"><EM>$widget</EM>-><STRONG>focusPrev</STRONG></A></STRONG><BR>
- <DD>
- <STRONG>focusNext</STRONG> is a utility method used for keyboard traversal, but can be
- useful in other contexts.
- It sets the focus to the ``next'' window after <EM>$widget</EM> in focus order.
- The focus order is determined by
- the stacking order of windows and the structure of the window hierarchy.
- Among siblings, the focus order is the same as the stacking order, with the
- lowest window being first.
- If a window has children, the window is visited first, followed by
- its children (recursively), followed by its next sibling.
- Top-level windows other than <EM>$widget</EM> are skipped, so that
- <STRONG>focusNext</STRONG> never returns a window in a different top-level
- from <EM>$widget</EM>.
- <P>After computing the next window, <STRONG>focusNext</STRONG> examines the
- window's <STRONG>-takefocus</STRONG> option to see whether it should be skipped.
- If so, <STRONG>focusNext</STRONG> continues on to the next window in the focus
- order, until it eventually finds a window that will accept the focus
- or returns back to <EM>$widget</EM>.</P>
- <P><STRONG>focusPrev</STRONG> is similar to <STRONG>focusNext</STRONG> except that it
- sets the focus to the window just before <EM>$widget</EM> in the focus order.</P>
- <P></P>
- <DT><STRONG><A NAME="item_focusFollowsMouse"><EM>$widget</EM>-><STRONG>focusFollowsMouse</STRONG></A></STRONG><BR>
- <DD>
- <STRONG>focusFollowsMouse</STRONG> changes the focus model for the application
- to an implicit one where the window under the mouse gets the focus.
- After this procedure is called, whenever the mouse enters a window
- Tk will automatically give it the input focus.
- The <STRONG>focus</STRONG> command may be used to move the focus to a window
- other than the one under the mouse, but as soon as the mouse moves
- into a new window the focus will jump to that window.
- Note: at present there is no built-in support for returning the
- application to an explicit focus model; to do this you'll have
- to write a script that deletes the bindings created by
- <STRONG>focusFollowsMouse</STRONG>.
- <P></P></DL>
- <P>
- <HR>
- <H1><A NAME="quirks">QUIRKS</A></H1>
- <P>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.</P>
- <P>
- <HR>
- <H1><A NAME="caveats">CAVEATS</A></H1>
- <P>Note that for the <STRONG>Canvas</STRONG> widget, the call to <STRONG>focus</STRONG> has to be
- fully qualified. This is because there is already a focus method for
- the <STRONG>Canvas</STRONG> widget, which sets the focus on individual canvas tags.</P>
- <P> <EM>$canvas</EM>-><STRONG>Tk::focus</STRONG></P>
- <P>
- <HR>
- <H1><A NAME="keywords">KEYWORDS</A></H1>
- <P>events, focus, keyboard, top-level, window manager</P>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> focus - Manage the input focus</P></STRONG>
- </TD></TR>
- </TABLE>
-
- </BODY>
-
- </HTML>
-