From: Paul Mackerras Date: Wed, 2 Jan 2008 10:44:06 +0000 (+1100) Subject: gitk: Fix a couple of bugs in the find function X-Git-Url: https://privyetmir.co.uk/gitweb.cgi?a=commitdiff_plain;h=cd2bcae798ac2194f18374dc7dc10de404fd01d0;p=gitk gitk: Fix a couple of bugs in the find function First, findmore would sometimes get a Tcl error due to relying on varcorder and vrownum having valid values for the rows being searched, but they may not be valid unless update_arcrows is called, so this makes findmore call update_arcrows if necessary. Secondly, in the "touching paths" and "adding/removing string" modes, findmore was treating fhighlights($row) == -1 as meaning the row matches, whereas it only means that we haven't received an answer from the external git diff-tree process about it yet. This fixes it. Signed-off-by: Paul Mackerras --- diff --git a/gitk b/gitk index bae6604..cddd218 100755 --- a/gitk +++ b/gitk @@ -4950,7 +4950,7 @@ proc findmore {} { global commitdata commitinfo numcommits findpattern findloc global findstartline findcurline findallowwrap global find_dirn gdttype fhighlights fprogcoord - global curview varcorder vrownum varccommits + global curview varcorder vrownum varccommits vrowmod if {![info exists find_dirn]} { return 0 @@ -4986,6 +4986,9 @@ proc findmore {} { set n 500 set moretodo 1 } + if {$l + ($find_dirn > 0? $n: 1) > $vrowmod($curview)} { + update_arcrows $curview + } set found 0 set domore 1 set ai [bsearch $vrownum($curview) $l] @@ -5032,14 +5035,18 @@ proc findmore {} { } set id [lindex $ids [expr {$l - $arow}]] if {![info exists fhighlights($l)]} { + # this sets fhighlights($l) to -1 askfilehighlight $l $id + } + if {$fhighlights($l) > 0} { + set found $domore + break + } + if {$fhighlights($l) < 0} { if {$domore} { set domore 0 set findcurline [expr {$l - $find_dirn}] } - } elseif {$fhighlights($l)} { - set found $domore - break } } }