summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-01-25 21:33:06 -0500
committerShawn O. Pearce <spearce@spearce.org>2007-01-26 00:41:01 -0500
commit5f8b70b1dc3d149782564e04d5d55565a5157d93 (patch)
tree06c4c262fc7f602744d2bd02bb9b17afa6448724
parentd070c4cb17e807c157aaeb24d9b80a1112334e57 (diff)
downloadgit-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-xgit-gui.sh13
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
}