From 8a0a74ad7764db655f07c464ce931cc233f550b5 Mon Sep 17 00:00:00 2001
From: Paul Mackerras <paulus@samba.org>
Date: Mon, 27 Jun 2005 13:38:29 +1000
Subject: [PATCH] Fix behaviour in the case where we have no commits to
 display.

I had code in there to put "No commits selected" on the canvas
but it needed some globals.
---
 gitk | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/gitk b/gitk
index b44144870d5..fc763ba9c8d 100755
--- a/gitk
+++ b/gitk
@@ -894,11 +894,11 @@ proc drawslants {} {
     }
 }
 
-proc decidenext {} {
+proc decidenext {{noread 0}} {
     global parents children nchildren ncleft todo
     global canv canv2 canv3 mainfont namefont canvx0 canvy linespc
     global datemode cdate
-    global lineid linehtag linentag linedtag commitinfo
+    global commitinfo
     global currentparents oldlevel oldnlines oldtodo
     global lineno lthickness
 
@@ -916,6 +916,12 @@ proc decidenext {} {
 	set p [lindex $todo $k]
 	if {$ncleft($p) == 0} {
 	    if {$datemode} {
+		if {![info exists commitinfo($p)]} {
+		    if {$noread} {
+			return {}
+		    }
+		    readcommit $p
+		}
 		if {$latest == {} || $cdate($p) > $latest} {
 		    set level $k
 		    set latest $cdate($p)
@@ -976,15 +982,16 @@ proc drawcommit {id} {
 	    lappend todo $id
 	    lappend startcommits $id
 	}
-	set level [decidenext]
-	if {$id != [lindex $todo $level]} {
+	set level [decidenext 1]
+	if {$level == {} || $id != [lindex $todo $level]} {
 	    return
 	}
 	while 1 {
 	    drawslants
 	    drawcommitline $level
 	    if {[updatetodo $level $datemode]} {
-		set level [decidenext]
+		set level [decidenext 1]
+		if {$level == {}} break
 	    }
 	    set id [lindex $todo $level]
 	    if {![info exists commitlisted($id)]} {
@@ -1001,18 +1008,18 @@ proc drawcommit {id} {
 proc finishcommits {} {
     global phase
     global startcommits
-    global ctext maincursor textcursor
+    global canv mainfont ctext maincursor textcursor
 
     if {$phase != "incrdraw"} {
 	$canv delete all
 	$canv create text 3 3 -anchor nw -text "No commits selected" \
 	    -font $mainfont -tags textitems
 	set phase {}
-	return
+    } else {
+	drawslants
+	set level [decidenext]
+	drawrest $level [llength $startcommits]
     }
-    drawslants
-    set level [decidenext]
-    drawrest $level [llength $startcommits]
     . config -cursor $maincursor
     $ctext config -cursor $textcursor
 }