gitk: Fix a couple of bugs
authorPaul Mackerras <paulus@samba.org>
Thu, 27 Sep 2007 00:35:05 +0000 (10:35 +1000)
committerPaul Mackerras <paulus@samba.org>
Thu, 27 Sep 2007 00:35:05 +0000 (10:35 +1000)
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 <paulus@samba.org>
gitk

diff --git a/gitk b/gitk
index a5d0d66e6c55691eb5710cbcb0cd79cee6ad509a..34fe33771fc947ee096b197c77ba35037fe5429f 100755 (executable)
--- 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