aboutsummaryrefslogtreecommitdiff
path: root/gitk
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2006-03-18 20:42:46 +1100
committerPaul Mackerras <paulus@samba.org>2006-03-18 20:42:46 +1100
commitd8d2df08f6c5f804878bf9faf0820db87dbd68f5 (patch)
tree5221b79da206b44a49bbefadd1b7bd2e863c8f08 /gitk
parentf4171a19f0a4091093bca4c1671c77b8caa93533 (diff)
downloadgit-d8d2df08f6c5f804878bf9faf0820db87dbd68f5.tar.gz
git-d8d2df08f6c5f804878bf9faf0820db87dbd68f5.tar.xz
gitk: Make downward-pointing arrows end in vertical line segment
It seems Tk 8.4 can't draw arrows on diagonal line segments. This adds code to the optimizer to make the last bit of a line go vertically before being terminated with an arrow pointing downwards, so that it will be drawn correctly by Tk 8.4. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'gitk')
-rwxr-xr-xgitk29
1 files changed, 21 insertions, 8 deletions
diff --git a/gitk b/gitk
index 34f55bc1e..69d67ee64 100755
--- a/gitk
+++ b/gitk
@@ -952,8 +952,9 @@ proc layoutrows {row endrow last} {
set offs [lreplace $offs $x $x]
set offs [incrange $offs $x 1]
set idinlist($i) 0
- lappend linesegends($row) $i
- lappend idrowranges($i) [expr {$row-1}]
+ set rm1 [expr {$row - 1}]
+ lappend linesegends($rm1) $i
+ lappend idrowranges($i) $rm1
if {[incr nev -1] <= 0} break
continue
}
@@ -982,7 +983,6 @@ proc layoutrows {row endrow last} {
unset idinlist($id)
}
if {[info exists idrowranges($id)]} {
- lappend linesegends($row) $id
lappend idrowranges($id) $row
}
incr row
@@ -1038,7 +1038,7 @@ proc addextraid {id row} {
proc layouttail {} {
global rowidlist rowoffsets idinlist commitidx
- global idrowranges linesegends
+ global idrowranges
set row $commitidx
set idlist [lindex $rowidlist $row]
@@ -1047,7 +1047,6 @@ proc layouttail {} {
set id [lindex $idlist $col]
addextraid $id $row
unset idinlist($id)
- lappend linesegends($row) $id
lappend idrowranges($id) $row
incr row
set offs [ntimes $col 0]
@@ -1061,7 +1060,6 @@ proc layouttail {} {
lset rowidlist $row [list $id]
lset rowoffsets $row 0
makeuparrow $id 0 $row 0
- lappend linesegends($row) $id
lappend idrowranges($id) $row
incr row
lappend rowidlist {}
@@ -1079,12 +1077,23 @@ proc insert_pad {row col npad} {
}
proc optimize_rows {row col endrow} {
- global rowidlist rowoffsets idrowranges
+ global rowidlist rowoffsets idrowranges linesegends displayorder
for {} {$row < $endrow} {incr row} {
set idlist [lindex $rowidlist $row]
set offs [lindex $rowoffsets $row]
set haspad 0
+ set downarrowcols {}
+ if {[info exists linesegends($row)]} {
+ set downarrowcols $linesegends($row)
+ if {$col > 0} {
+ while {$downarrowcols ne {}} {
+ set i [lsearch -exact $idlist [lindex $downarrowcols 0]]
+ if {$i < 0 || $i >= $col} break
+ set downarrowcols [lrange $downarrowcols 1 end]
+ }
+ }
+ }
for {} {$col < [llength $offs]} {incr col} {
if {[lindex $idlist $col] eq {}} {
set haspad 1
@@ -1102,6 +1111,10 @@ proc optimize_rows {row col endrow} {
$y0 > [lindex $idrowranges($id) 0]} {
set isarrow 1
}
+ } elseif {$downarrowcols ne {} &&
+ [lindex $idlist $col] eq [lindex $downarrowcols 0]} {
+ set downarrowcols [lrange $downarrowcols 1 end]
+ set isarrow 1
}
if {$z < -1 || ($z < 0 && $isarrow)} {
set npad [expr {-1 - $z + $isarrow}]
@@ -1660,7 +1673,7 @@ proc drawrest {} {
showstuff $commitidx
set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}]
- puts "overall $drawmsecs ms for $numcommits commits"
+ #puts "overall $drawmsecs ms for $numcommits commits"
}
proc findmatches {f} {