Limits number of undo steps.
obj method canvaseditor initUndoRedo args { # # Stack initialisieren # if {[lindex $args 0] eq "reset"} then { my undoStack {} my redoStack {} my undonePtr 0 } else { if {[my undonePtr] > 0} then { my undoStack [lrange [my undoStack] 0 end-[my undonePtr]] my redoStack [lrange [my redoStack] 0 end-[my undonePtr]] my undonePtr 0 } if {[llength $args] == 2} then { lassign $args undoStr redoStr # set undoStr [regsub -all {(^|\n) *} $undoStr {\1}] set redoStr [regsub -all {(^|\n) *} $redoStr {\1}] set undoStr [regsub -all {\n{2,}} $undoStr \n] set redoStr [regsub -all {\n{2,}} $redoStr \n] set undoStr \n[string trim $undoStr]\n set redoStr \n[string trim $redoStr]\n # set undoStack [my undoStack] set redoStack [my redoStack] if { $undoStr ne $redoStr && ( $undoStr ne [lindex $undoStack end] || $redoStr ne [lindex $redoStack end] ) } then { lappend undoStack $undoStr lappend redoStack $redoStr my undoStack $undoStack my redoStack $redoStack } } # Stacklänge begrenzen set maxLen 99 my undoStack [lreverse [lrange [lreverse [my undoStack]] 0 $maxLen]] my redoStack [lreverse [lrange [lreverse [my redoStack]] 0 $maxLen]] } }
© Wolf-Dieter Busch | Home | Sitemap | Urheber | A-Z