Author: Joe English <jenglish@users.sourceforge.net>
State: Final
Type: Project
Tcl-Version: 8.5
Vote: Done
Created: 21-Jun-2004
Post-History:
Abstract
Proposes using two new virtual events, <
Rationale
Certain widgets need to perform some action when they receive and/or lose keyboard focus because of keyboard traversal. For example, tabbing into an Entry or Spinbox widget selects the widget contents.
This cannot be done with a
Tk currently implements this feature with special-case logic that checks the target window's widget class in the tk::TabToWindow procedure. The drawback to this approach is that it only works for the built-in widgets; third party widget sets like BWidgethttp://tcllib.sf.net/ , IWidgetshttp://sf.net/projects/incrtcl/ , and Tilehttp://tktable.sf.net/tile/ must implement their own workarounds.
Proposal
Change the standard Tk bindings for
Send a <
> virtual event to the current focus window, if any;Set the focus to the new window;
Send a <
> virtual event to the new window.
Additionally, move the current code to handle traversal to Entry and Spinbox widgets from tk::TabToWindow to class bindings.
Implementation
See Tk Patch #976928http://sourceforge.net/support/tracker.php?aid=976928 .
The BWidget package has used an identical scheme since version 1.7; see Tcllib bug #720032http://sourceforge.net/support/tracker.php?aid=720032 for details.
Copyright
This document has been placed in the public domain.