aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-05-10 00:23:42 +0000
committerPaul Mackerras <paulus@samba.org>2005-05-10 00:23:42 +0000
commit0327d27a18e0d92a75a36a9e57512f940a906d88 (patch)
tree4af3f896cb3a411499c25e4e224c87dd9fc03852
parent1db95b00a2d2a001fd91cd860a71c639ea04eb53 (diff)
downloadgit-0327d27a18e0d92a75a36a9e57512f940a906d88.tar.gz
git-0327d27a18e0d92a75a36a9e57512f940a906d88.tar.xz
Use a panedwindow
Make it cope with commits having parents that aren't listed.
-rwxr-xr-xgitk52
1 files changed, 32 insertions, 20 deletions
diff --git a/gitk b/gitk
index 90b2eab35..801afbca7 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 <B1-Motion> {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]