From: Shawn O. Pearce Date: Fri, 26 Jan 2007 02:33:06 +0000 (-0500) Subject: git-gui: Maintain the same file list for diff during refresh. X-Git-Tag: gitgui-0.6.0~47 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=5f8b70b1dc3d149782564e04d5d55565a5157d93;p=git.git git-gui: Maintain the same file list for diff during refresh. I just noticed that a file was always jumping to compare against HEAD and the index during a refresh, even if the diff viewer was comparing the index against the working directory prior to the refresh. The bug turned out to be caused by a foreach loop going through all file list names searching for the path. Since $ui_index was the first one searched and the file was contained in that file list the loop broke out, leaving $w set to $ui_index when it had been set by the caller to $ui_workdir. Silly bug caused by using a parameter as a loop index. Signed-off-by: Shawn O. Pearce --- diff --git a/git-gui.sh b/git-gui.sh index faae6ce7c..b0a195ce8 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -607,16 +607,13 @@ proc show_diff {path w {lno {}}} { if {$diff_active || ![lock_index read]} return clear_diff - if {$w eq {} || $lno == {}} { - foreach w [array names file_lists] { - set lno [lsearch -sorted $file_lists($w) $path] - if {$lno >= 0} { - incr lno - break - } + if {$lno == {}} { + set lno [lsearch -sorted $file_lists($w) $path] + if {$lno >= 0} { + incr lno } } - if {$w ne {} && $lno >= 1} { + if {$lno >= 1} { $w tag add in_diff $lno.0 [expr {$lno + 1}].0 }