From 0327d27a18e0d92a75a36a9e57512f940a906d88 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Tue, 10 May 2005 00:23:42 +0000 Subject: [PATCH] Use a panedwindow Make it cope with commits having parents that aren't listed. --- gitk | 52 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/gitk b/gitk index 90b2eab3..801afbca 100755 --- a/gitk +++ b/gitk @@ -7,6 +7,8 @@ exec wish "$0" -- "${1+$@}" # and distributed under the terms of the GNU General Public Licence, # either version 2, or (at your option) any later version. +# CVS $Revision: 1.2 $ + set datemode 0 set boldnames 0 set revtreeargs {} @@ -63,7 +65,7 @@ proc getcommits {rargs} { } proc readcommit {id} { - global commitinfo + global commitinfo commitsummary set inhdr 1 set comment {} set headline {} @@ -103,23 +105,27 @@ proc readcommit {id} { set comdate [clock format $comdate -format "%Y-%m-%d %H:%M:%S"] } set commitinfo($id) [list $comment $auname $audate $comname $comdate] - return [list $headline $auname $audate] + set commitsummary($id) [list $headline $auname $audate] } proc makewindow {} { global canv linespc charspc ctext - frame .clist - set canv .clist.canv + panedwindow .ctop -orient vertical + frame .ctop.clist + set canv .ctop.clist.canv canvas $canv -height [expr 30 * $linespc + 4] -width [expr 90 * $charspc] \ -bg white -relief sunk -bd 1 \ - -yscrollincr $linespc -yscrollcommand ".clist.csb set" - scrollbar .clist.csb -command "$canv yview" -highlightthickness 0 - pack .clist.csb -side right -fill y + -yscrollincr $linespc -yscrollcommand ".ctop.clist.csb set" + scrollbar .ctop.clist.csb -command "$canv yview" -highlightthickness 0 + pack .ctop.clist.csb -side right -fill y pack $canv -side bottom -fill both -expand 1 - pack .clist -side top -fill both -expand 1 - set ctext .ctext + .ctop add .ctop.clist + #pack .ctop.clist -side top -fill both -expand 1 + set ctext .ctop.ctext text $ctext -bg white - pack $ctext -side top -fill x -expand 1 + .ctop add .ctop.ctext + #pack $ctext -side top -fill x -expand 1 + pack .ctop -side top -fill both -expand 1 bind $canv <1> {selcanvline %x %y} bind $canv {selcanvline %x %y} @@ -160,7 +166,7 @@ proc drawgraph {start} { global parents children nparents nchildren commits global canv mainfont namefont canvx0 canvy0 linespc namex datex global datemode cdate - global lineid linehtag linentag linedtag + global lineid linehtag linentag linedtag commitsummary set colors {green red blue magenta darkgrey brown orange} set ncolors [llength $colors] @@ -180,10 +186,16 @@ proc drawgraph {start} { set nlines [llength $todo] set id [lindex $todo $level] set lineid($lineno) $id + set actualparents {} foreach p $parents($id) { - incr ncleft($p) -1 + if {[info exists ncleft($p)]} { + incr ncleft($p) -1 + lappend actualparents $p + } + } + if {![info exists commitsummary($id)]} { + readcommit $id } - set cinfo [readcommit $id] set x [expr $canvx0 + $level * $linespc] set y2 [expr $canvy + $linespc] if {$linestarty($level) < $canvy} { @@ -197,9 +209,9 @@ proc drawgraph {start} { -fill blue -outline black -width 1] $canv raise $t set xt [expr $canvx0 + $nlines * $linespc] - set headline [lindex $cinfo 0] - set name [lindex $cinfo 1] - set date [lindex $cinfo 2] + set headline [lindex $commitsummary($id) 0] + set name [lindex $commitsummary($id) 1] + set date [lindex $commitsummary($id) 2] set headline [truncatetofit $headline [expr $namex-$xt-$linespc] \ $mainfont] set linehtag($lineno) [$canv create text $xt $canvy -anchor w \ @@ -209,8 +221,8 @@ proc drawgraph {start} { -text $name -font $namefont] set linedtag($lineno) [$canv create text $datex $canvy -anchor w \ -text $date -font $mainfont] - if {!$datemode && $nparents($id) == 1} { - set p [lindex $parents($id) 0] + if {!$datemode && [llength $actualparents] == 1} { + set p [lindex $actualparents 0] if {$ncleft($p) == 0 && [lsearch -exact $todo $p] < 0} { set todo [lreplace $todo $level $level $p] set colormap($p) $colormap($id) @@ -240,7 +252,7 @@ proc drawgraph {start} { } set badcolors [list $colormap($id)] - foreach p $parents($id) { + foreach p $actualparents { if {[info exists colormap($p)]} { lappend badcolors $colormap($p) } @@ -250,7 +262,7 @@ proc drawgraph {start} { incr nullentry -1 } set i $level - foreach p $parents($id) { + foreach p $actualparents { set k [lsearch -exact $todo $p] if {$k < 0} { set todo [linsert $todo $i $p] -- 2.11.0