From 1123a820260423a4987437280a9f6ec6ae123839 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Mon, 4 Jan 2010 01:36:14 +0000 Subject: Correctly handle quoted ampersands in AmpMenuArgs and friends --- ChangeLog | 4 ++++ library/tk.tcl | 23 ++++------------------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14b3b18..7d21e92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-01-04 Pat Thoyts + + * library/tk.tcl: Correctly handle quoted ampersands in AmpMenuArgs + 2010-01-03 Donal K. Fellows * unix/tcl.m4 (SC_CONFIG_CFLAGS): [Bug 1636685]: Use the configuration diff --git a/library/tk.tcl b/library/tk.tcl index e950c24..d80feb0 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.88 2009/12/11 15:32:36 dkf Exp $ +# RCS: @(#) $Id: tk.tcl,v 1.89 2010/01/04 01:36:14 patthoyts Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -485,24 +485,9 @@ proc ::tk::TabToWindow {w} { # Position returned is -1 when there is no ampersand. # proc ::tk::UnderlineAmpersand {text} { - set idx [string first "&" $text] - if {$idx >= 0} { - set underline $idx - # ignore "&&" - while {[string match "&" [string index $text [expr {$idx + 1}]]]} { - set base [expr {$idx + 2}] - set idx [string first "&" [string range $text $base end]] - if {$idx < 0} { - break - } - set underline [expr {$underline + $idx + 1}] - incr idx $base - } - } - if {$idx >= 0} { - regsub -all -- {&([^&])} $text {\1} text - } - return [list $text $idx] + set s [string map {&& & & \ufeff} $text] + set idx [string first \ufeff $s] + return [list [string map {\ufeff {}} $s] $idx] } # ::tk::SetAmpText -- -- cgit v0.12