summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2007-09-14 23:04:11 (GMT)
committerPaul Mackerras <paulus@samba.org>2007-09-14 23:12:26 (GMT)
commitf56782aef4b3d7339461d8f12ff15f6258d9871d (patch)
tree59c530e94c3b64bef9c5e8a0c88c4da484448b81
parentf5f3c2e29f51a38261daa91073a3f227d4532325 (diff)
downloadgit-f56782aef4b3d7339461d8f12ff15f6258d9871d.zip
git-f56782aef4b3d7339461d8f12ff15f6258d9871d.tar.gz
git-f56782aef4b3d7339461d8f12ff15f6258d9871d.tar.bz2
gitk: Fix bugs in setting rowfinal
We weren't updating the rowfinal list in insertrow and removerow, so it was getting out of sync with rowidlist, which resulted in Tcl errors. This also optimizes the setting of rowfinal in layoutrows a bit. Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-xgitk15
1 files changed, 9 insertions, 6 deletions
diff --git a/gitk b/gitk
index a042efe..fd6bbab 100755
--- a/gitk
+++ b/gitk
@@ -3008,20 +3008,21 @@ proc layoutrows {row endrow} {
set idlist {}
if {$row > 0} {
- foreach id [lindex $rowidlist [expr {$row - 1}]] {
+ set rm1 [expr {$row - 1}]
+ foreach id [lindex $rowidlist $rm1] {
if {$id ne {}} {
lappend idlist $id
}
}
+ set final [lindex $rowfinal $rm1]
}
for {} {$row < $endrow} {incr row} {
set rm1 [expr {$row - 1}]
- if {$rm1 < 0 || [lindex $rowidlist $rm1] eq {}} {
+ if {$rm1 < 0 || $idlist eq {}} {
set idlist [make_idlist $row]
set final 1
} else {
set id [lindex $displayorder $rm1]
- set final [lindex $rowfinal $rm1]
set col [lsearch -exact $idlist $id]
set idlist [lreplace $idlist $col $col]
foreach p [lindex $parentlist $rm1] {
@@ -3090,9 +3091,9 @@ proc layoutrows {row endrow} {
} elseif {$row < $l} {
if {![rowsequal $idlist [lindex $rowidlist $row]]} {
lset rowidlist $row $idlist
- lset rowfinal $row $final
changedrow $row
}
+ lset rowfinal $row $final
} else {
set pad [ntimes [expr {$row - $l}] {}]
set rowidlist [concat $rowidlist $pad]
@@ -4055,7 +4056,7 @@ proc show_status {msg} {
# on that row and below will move down one row.
proc insertrow {row newcmit} {
global displayorder parentlist commitlisted children
- global commitrow curview rowidlist rowisopt numcommits
+ global commitrow curview rowidlist rowisopt rowfinal numcommits
global numcommits
global selectedline commitidx ordertok
@@ -4089,6 +4090,7 @@ proc insertrow {row newcmit} {
}
set rowidlist [linsert $rowidlist $row $idlist]
set rowisopt [linsert $rowisopt $row 0]
+ set rowfinal [linsert $rowfinal $row [lindex $rowfinal $row]]
incr numcommits
@@ -4101,7 +4103,7 @@ proc insertrow {row newcmit} {
# Remove a commit that was inserted with insertrow on row $row.
proc removerow {row} {
global displayorder parentlist commitlisted children
- global commitrow curview rowidlist rowisopt numcommits
+ global commitrow curview rowidlist rowisopt rowfinal numcommits
global numcommits
global linesegends selectedline commitidx
@@ -4130,6 +4132,7 @@ proc removerow {row} {
set rowidlist [lreplace $rowidlist $row $row]
set rowisopt [lreplace $rowisopt $row $row]
+ set rowfinal [lreplace $rowfinal $row $row]
incr numcommits -1