summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2015-10-04 08:29:59 (GMT)
committerfvogel <fvogelnew1@free.fr>2015-10-04 08:29:59 (GMT)
commit2a9d9b8904088e9b63f5c507d775720ce88aa881 (patch)
treea01cefc4f2d1b0792281d81a5397c5fb20d9abd1
parentd842640197e344a68b6bb601ec39f74c1d071be0 (diff)
downloadtk-2a9d9b8904088e9b63f5c507d775720ce88aa881.zip
tk-2a9d9b8904088e9b63f5c507d775720ce88aa881.tar.gz
tk-2a9d9b8904088e9b63f5c507d775720ce88aa881.tar.bz2
Fixed bug [1669632fff] case (vii) - <<Undo>> shall not remove separators
-rw-r--r--library/text.tcl9
-rw-r--r--tests/text.test16
2 files changed, 25 insertions, 0 deletions
diff --git a/library/text.tcl b/library/text.tcl
index 396ce1b..4a0e2c7 100644
--- a/library/text.tcl
+++ b/library/text.tcl
@@ -346,7 +346,16 @@ bind Text <Control-t> {
}
bind Text <<Undo>> {
+ # An Undo operation may remove the separator at the top of the Undo stack.
+ # Then the item at the top of the stack gets merged with the subsequent changes.
+ # Place separators before and after Undo to prevent this.
+ if {[%W cget -autoseparators]} {
+ %W edit separator
+ }
catch { %W edit undo }
+ if {[%W cget -autoseparators]} {
+ %W edit separator
+ }
}
bind Text <<Redo>> {
diff --git a/tests/text.test b/tests/text.test
index 661584d..4eeb8e4 100644
--- a/tests/text.test
+++ b/tests/text.test
@@ -3238,6 +3238,22 @@ test text-25.20 {patch 1669632 (iv) - undo after <Control-backslash>} -setup {
} -cleanup {
destroy .top.t .top
} -result HELLO
+test text-25.21 {patch 1669632 (vii) - <<Undo>> shall not remove separators} -setup {
+ destroy .t
+} -body {
+ text .t -undo 1
+ .t insert end "This is an example text"
+ .t edit reset
+ .t insert 1.5 "WORLD "
+ event generate .t <Control-1> -x 1 -y 1
+ .t insert insert HELLO
+ event generate .t <<Undo>>
+ .t insert insert E
+ event generate .t <<Undo>>
+ .t get 1.0 "1.0 lineend"
+} -cleanup {
+ destroy .t
+} -result "This WORLD is an example text"
test text-26.1 {bug fix - 624372, ControlUtfProc long lines} {
destroy .t