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:
parent
8ed1648415
commit
c934a8a3a3
1 changed files with 25 additions and 19 deletions
44
gitk
44
gitk
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue