diff options
author | jenglish <jenglish@flightlab.com> | 2004-10-19 18:56:00 (GMT) |
---|---|---|
committer | jenglish <jenglish@flightlab.com> | 2004-10-19 18:56:00 (GMT) |
commit | 46143310c8d375a9451e63ce753d1c654468a98c (patch) | |
tree | e271148869cd9d31a55ab0cf4d581b1b34e00d21 /library | |
parent | bc7953bb9ea9f68296b5274ebcde73616c14c379 (diff) | |
download | tk-46143310c8d375a9451e63ce753d1c654468a98c.zip tk-46143310c8d375a9451e63ce753d1c654468a98c.tar.gz tk-46143310c8d375a9451e63ce753d1c654468a98c.tar.bz2 |
TIP #204 "Virtual Events for Keyboard Traversal" (patch #976928)
Diffstat (limited to 'library')
-rw-r--r-- | library/entry.tcl | 7 | ||||
-rw-r--r-- | library/spinbox.tcl | 7 | ||||
-rw-r--r-- | library/tk.tcl | 16 |
3 files changed, 21 insertions, 9 deletions
diff --git a/library/entry.tcl b/library/entry.tcl index 2718145..e882972 100644 --- a/library/entry.tcl +++ b/library/entry.tcl @@ -3,7 +3,7 @@ # This file defines the default bindings for Tk entry widgets and provides # procedures that help in implementing those bindings. # -# RCS: @(#) $Id: entry.tcl,v 1.22 2004/03/17 18:15:44 das Exp $ +# RCS: @(#) $Id: entry.tcl,v 1.23 2004/10/19 18:56:01 jenglish Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. @@ -69,6 +69,11 @@ bind Entry <<PasteSelection>> { } } +bind Entry <<TraverseIn>> { + %W selection range 0 end + %W icursor end +} + # Standard Motif bindings: bind Entry <1> { diff --git a/library/spinbox.tcl b/library/spinbox.tcl index e774e59..d8d2d8a 100644 --- a/library/spinbox.tcl +++ b/library/spinbox.tcl @@ -4,7 +4,7 @@ # procedures that help in implementing those bindings. The spinbox builds # off the entry widget, so it can reuse Entry bindings and procedures. # -# RCS: @(#) $Id: spinbox.tcl,v 1.7 2004/03/17 18:15:45 das Exp $ +# RCS: @(#) $Id: spinbox.tcl,v 1.8 2004/10/19 18:56:01 jenglish Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. @@ -75,6 +75,11 @@ bind Spinbox <<PasteSelection>> { } } +bind Spinbox <<TraverseIn>> { + %W selection range 0 end + %W icursor end +} + # Standard Motif bindings: bind Spinbox <1> { diff --git a/library/tk.tcl b/library/tk.tcl index 9daeb69..995083d 100644 --- a/library/tk.tcl +++ b/library/tk.tcl @@ -3,7 +3,7 @@ # Initialization script normally executed in the interpreter for each # Tk-based application. Arranges class bindings for widgets. # -# RCS: @(#) $Id: tk.tcl,v 1.53 2004/03/17 18:15:45 das Exp $ +# RCS: @(#) $Id: tk.tcl,v 1.54 2004/10/19 18:56:01 jenglish Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -428,19 +428,21 @@ proc ::tk::CancelRepeat {} { } # ::tk::TabToWindow -- -# This procedure moves the focus to the given widget. If the widget -# is an entry or a spinbox, it selects the entire contents of the widget. +# This procedure moves the focus to the given widget. +# It sends a <<TraverseOut>> virtual event to the previous focus window, +# if any, before changing the focus, and a <<TraverseIn>> event +# to the new focus window afterwards. # # Arguments: # w - Window to which focus should be set. proc ::tk::TabToWindow {w} { - if {[string equal [winfo class $w] Entry] \ - || [string equal [winfo class $w] Spinbox]} { - $w selection range 0 end - $w icursor end + set focus [focus] + if {$focus ne ""} { + event generate $focus <<TraverseOut>> } focus $w + event generate $w <<TraverseIn>> } # ::tk::UnderlineAmpersand -- |