1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-29 21:37:53 +01:00

gitk: Fix a bug in drawing the selected line as a thick line

If you clicked on a line, so that it was drawn double-thickness,
and then scrolled to bring on-screen a child that hadn't previously
been drawn, the lines from it to the selected line were drawn
single-thickness.  This fixes it so they are drawn double-thickness.
This also removes an unnecessary setting of phase in drawrest.

Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Paul Mackerras 2006-03-02 23:00:44 +11:00
parent 8ed1648415
commit c934a8a3a3

44
gitk
View file

@ -906,7 +906,7 @@ proc showstuff {canshow} {
incr i incr i
if {$e ne {} && $e < $numcommits && $s <= $r1 && $e >= $r0 if {$e ne {} && $e < $numcommits && $s <= $r1 && $e >= $r0
&& ![info exists idrangedrawn($id,$i)]} { && ![info exists idrangedrawn($id,$i)]} {
drawlineseg $id $i 1 drawlineseg $id $i
set idrangedrawn($id,$i) 1 set idrangedrawn($id,$i) 1
} }
} }
@ -1183,9 +1183,19 @@ proc yc {row} {
return [expr {$canvy0 + $row * $linespc}] return [expr {$canvy0 + $row * $linespc}]
} }
proc drawlineseg {id i wid} { proc linewidth {id} {
global thickerline lthickness
set wid $lthickness
if {[info exists thickerline] && $id eq $thickerline} {
set wid [expr {2 * $lthickness}]
}
return $wid
}
proc drawlineseg {id i} {
global rowoffsets rowidlist idrowranges global rowoffsets rowidlist idrowranges
global canv colormap lthickness global canv colormap
set startrow [lindex $idrowranges($id) [expr {2 * $i}]] set startrow [lindex $idrowranges($id) [expr {2 * $i}]]
set row [lindex $idrowranges($id) [expr {2 * $i + 1}]] set row [lindex $idrowranges($id) [expr {2 * $i + 1}]]
@ -1216,18 +1226,17 @@ proc drawlineseg {id i wid} {
set last [expr {[llength $idrowranges($id)] / 2 - 1}] set last [expr {[llength $idrowranges($id)] / 2 - 1}]
set arrow [expr {2 * ($i > 0) + ($i < $last)}] set arrow [expr {2 * ($i > 0) + ($i < $last)}]
set arrow [lindex {none first last both} $arrow] set arrow [lindex {none first last both} $arrow]
set wid [expr {$wid * $lthickness}]
set x [xc $row $col] set x [xc $row $col]
set y [yc $row] set y [yc $row]
lappend coords $x $y lappend coords $x $y
set t [$canv create line $coords -width $wid \ set t [$canv create line $coords -width [linewidth $id] \
-fill $colormap($id) -tags lines.$id -arrow $arrow] -fill $colormap($id) -tags lines.$id -arrow $arrow]
$canv lower $t $canv lower $t
bindline $t $id bindline $t $id
} }
proc drawparentlinks {id row col olds wid} { proc drawparentlinks {id row col olds} {
global rowidlist canv colormap lthickness global rowidlist canv colormap
set row2 [expr {$row + 1}] set row2 [expr {$row + 1}]
set x [xc $row $col] set x [xc $row $col]
@ -1236,7 +1245,6 @@ proc drawparentlinks {id row col olds wid} {
set ids [lindex $rowidlist $row2] set ids [lindex $rowidlist $row2]
# rmx = right-most X coord used # rmx = right-most X coord used
set rmx 0 set rmx 0
set wid [expr {$wid * $lthickness}]
foreach p $olds { foreach p $olds {
set i [lsearch -exact $ids $p] set i [lsearch -exact $ids $p]
if {$i < 0} { if {$i < 0} {
@ -1256,7 +1264,7 @@ proc drawparentlinks {id row col olds wid} {
set rmx $x2 set rmx $x2
} }
lappend coords $x2 $y2 lappend coords $x2 $y2
set t [$canv create line $coords -width $wid \ set t [$canv create line $coords -width [linewidth $p] \
-fill $colormap($p) -tags lines.$p] -fill $colormap($p) -tags lines.$p]
$canv lower $t $canv lower $t
bindline $t $p bindline $t $p
@ -1264,17 +1272,16 @@ proc drawparentlinks {id row col olds wid} {
return $rmx return $rmx
} }
proc drawlines {id xtra} { proc drawlines {id} {
global colormap canv global colormap canv
global idrowranges idrangedrawn global idrowranges idrangedrawn
global children iddrawn commitrow rowidlist global children iddrawn commitrow rowidlist
$canv delete lines.$id $canv delete lines.$id
set wid [expr {$xtra + 1}]
set nr [expr {[llength $idrowranges($id)] / 2}] set nr [expr {[llength $idrowranges($id)] / 2}]
for {set i 0} {$i < $nr} {incr i} { for {set i 0} {$i < $nr} {incr i} {
if {[info exists idrangedrawn($id,$i)]} { if {[info exists idrangedrawn($id,$i)]} {
drawlineseg $id $i $wid drawlineseg $id $i
} }
} }
if {[info exists children($id)]} { if {[info exists children($id)]} {
@ -1283,7 +1290,7 @@ proc drawlines {id xtra} {
set row $commitrow($child) set row $commitrow($child)
set col [lsearch -exact [lindex $rowidlist $row] $child] set col [lsearch -exact [lindex $rowidlist $row] $child]
if {$col >= 0} { if {$col >= 0} {
drawparentlinks $child $row $col [list $id] $wid drawparentlinks $child $row $col [list $id]
} }
} }
} }
@ -1345,7 +1352,7 @@ proc drawcmitrow {row} {
if {$e eq {}} break if {$e eq {}} break
if {$row <= $e} { if {$row <= $e} {
if {$e < $numcommits && ![info exists idrangedrawn($id,$i)]} { if {$e < $numcommits && ![info exists idrangedrawn($id,$i)]} {
drawlineseg $id $i 1 drawlineseg $id $i
set idrangedrawn($id,$i) 1 set idrangedrawn($id,$i) 1
} }
break break
@ -1366,7 +1373,7 @@ proc drawcmitrow {row} {
assigncolor $id assigncolor $id
if {[info exists commitlisted($id)] && [info exists parents($id)] if {[info exists commitlisted($id)] && [info exists parents($id)]
&& $parents($id) ne {}} { && $parents($id) ne {}} {
set rmx [drawparentlinks $id $row $col $parents($id) 1] set rmx [drawparentlinks $id $row $col $parents($id)]
} else { } else {
set rmx 0 set rmx 0
} }
@ -1644,7 +1651,6 @@ proc settextcursor {c} {
} }
proc drawrest {} { proc drawrest {} {
global phase
global numcommits global numcommits
global startmsecs global startmsecs
global canvy0 numcommits linespc global canvy0 numcommits linespc
@ -1656,7 +1662,6 @@ proc drawrest {} {
optimize_rows $row 0 $commitidx optimize_rows $row 0 $commitidx
showstuff $commitidx showstuff $commitidx
set phase {}
set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}] set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}]
#puts "overall $drawmsecs ms for $numcommits commits" #puts "overall $drawmsecs ms for $numcommits commits"
} }
@ -2884,8 +2889,8 @@ proc lineclick {x y id isnew} {
normalline normalline
$canv delete hover $canv delete hover
# draw this line thicker than normal # draw this line thicker than normal
drawlines $id 1
set thickerline $id set thickerline $id
drawlines $id
if {$isnew} { if {$isnew} {
set ymax [lindex [$canv cget -scrollregion] 3] set ymax [lindex [$canv cget -scrollregion] 3]
if {$ymax eq {}} return if {$ymax eq {}} return
@ -2939,8 +2944,9 @@ proc lineclick {x y id isnew} {
proc normalline {} { proc normalline {} {
global thickerline global thickerline
if {[info exists thickerline]} { if {[info exists thickerline]} {
drawlines $thickerline 0 set id $thickerline
unset thickerline unset thickerline
drawlines $id
} }
} }