From c73adce219ce52a662d90af1e1762c77ea5c4cb0 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 27 Sep 2007 10:35:05 +1000 Subject: gitk: Fix a couple of bugs insertrow and removerow were trying to adjust rowidlist, rowisopt and rowfinal even if the row where we're inserting/deleting stuff hasn't been laid out yet, which resulted in Tcl errors. This fixes that. Also we weren't deleting the link$linknum tag in appendwithlinks, which resulted in SHA1 IDs in the body of a commit message sometimes getting shown in blue with underlining when they shouldn't. Signed-off-by: Paul Mackerras --- gitk | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/gitk b/gitk index a5d0d66e6c..34fe33771f 100755 --- a/gitk +++ b/gitk @@ -4027,17 +4027,21 @@ proc insertrow {row newcmit} { incr commitidx($curview) set ordertok($curview,$newcmit) $ordertok($curview,$p) - set idlist [lindex $rowidlist $row] - if {[llength $kids] == 1} { - set col [lsearch -exact $idlist $p] - lset idlist $col $newcmit - } else { - set col [llength $idlist] - lappend idlist $newcmit + if {$row < [llength $rowidlist]} { + set idlist [lindex $rowidlist $row] + if {$idlist ne {}} { + if {[llength $kids] == 1} { + set col [lsearch -exact $idlist $p] + lset idlist $col $newcmit + } else { + set col [llength $idlist] + lappend idlist $newcmit + } + } + set rowidlist [linsert $rowidlist $row $idlist] + set rowisopt [linsert $rowisopt $row 0] + set rowfinal [linsert $rowfinal $row [lindex $rowfinal $row]] } - set rowidlist [linsert $rowidlist $row $idlist] - set rowisopt [linsert $rowisopt $row 0] - set rowfinal [linsert $rowfinal $row [lindex $rowfinal $row]] incr numcommits @@ -4077,9 +4081,11 @@ proc removerow {row} { } incr commitidx($curview) -1 - set rowidlist [lreplace $rowidlist $row $row] - set rowisopt [lreplace $rowisopt $row $row] - set rowfinal [lreplace $rowfinal $row $row] + if {$row < [llength $rowidlist]} { + set rowidlist [lreplace $rowidlist $row $row] + set rowisopt [lreplace $rowisopt $row $row] + set rowfinal [lreplace $rowfinal $row $row] + } incr numcommits -1 @@ -4443,6 +4449,7 @@ proc appendwithlinks {text tags} { set e [lindex $l 1] set linkid [string range $text $s $e] incr e + $ctext tag delete link$linknum $ctext tag add link$linknum "$start + $s c" "$start + $e c" setlink $linkid link$linknum incr linknum -- cgit v1.2.3