summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpatthoyts <patthoyts@users.sourceforge.net>2010-01-04 01:28:00 (GMT)
committerpatthoyts <patthoyts@users.sourceforge.net>2010-01-04 01:28:00 (GMT)
commit6a8b19cfc48a1b282d20112f4c901d592e11d244 (patch)
tree3221752d3b0ed1a01edbf1387d231a65ff453a0d
parente732ca1eeb37060c866b1e0f32bb45eb0c27db5d (diff)
downloadtk-6a8b19cfc48a1b282d20112f4c901d592e11d244.zip
tk-6a8b19cfc48a1b282d20112f4c901d592e11d244.tar.gz
tk-6a8b19cfc48a1b282d20112f4c901d592e11d244.tar.bz2
Correctly handle quoted ampersands in AmpMenuArgs and friends
-rw-r--r--ChangeLog4
-rw-r--r--library/tk.tcl24
2 files changed, 8 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 38f812e..17f24d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-01-04 Pat Thoyts <patthoyts@users.sourceforge.net>
+
+ * library/tk.tcl: Correctly handle quoted ampersands in AmpMenuArgs
+
2010-01-03 Pat Thoyts <patthoyts@users.sourceforge.net>
* generic/tkMenu.h: [Patch 2848897] Support the system keyboard
diff --git a/library/tk.tcl b/library/tk.tcl
index d8f3c52..ef03cdb 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.73.2.13 2009/12/11 11:12:27 dkf Exp $
+# RCS: @(#) $Id: tk.tcl,v 1.73.2.14 2010/01/04 01:28:01 patthoyts Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
@@ -471,25 +471,9 @@ proc ::tk::TabToWindow {w} {
# ones. 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
- } else {
- 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 --