diff options
| author | Shawn O. Pearce <spearce@spearce.org> | 2007-01-25 21:33:06 -0500 |
|---|---|---|
| committer | Shawn O. Pearce <spearce@spearce.org> | 2007-01-26 00:41:01 -0500 |
| commit | 5f8b70b1dc3d149782564e04d5d55565a5157d93 (patch) | |
| tree | 06c4c262fc7f602744d2bd02bb9b17afa6448724 | |
| parent | d070c4cb17e807c157aaeb24d9b80a1112334e57 (diff) | |
| download | git-5f8b70b1dc3d149782564e04d5d55565a5157d93.tar.xz | |
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 <spearce@spearce.org>
| -rwxr-xr-x | git-gui.sh | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/git-gui.sh b/git-gui.sh index faae6ce7c5..b0a195ce8a 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 } |
