Code

git-gui: Don't select the wrong file if the last listed file is staged.
authorAbhijit Menon-Sen <ams@toroid.org>
Wed, 25 Jun 2008 10:36:50 +0000 (16:06 +0530)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 25 Jun 2008 20:55:10 +0000 (16:55 -0400)
Johannes Sixt noticed that if the last file in the list was staged, my
earlier patch would display the diff for the penultimate file, but show
the file _before_ that as being selected.

This was due to my misunderstanding the lno argument to show_diff.

This patch fixes the problem: lno is not decremented in the special case
to handle the last item in the list (though we still need to use $lno-1
to find the right path for the next diff).

Signed-off-by: Abhijit Menon-Sen <ams@toroid.org>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index 980dc0b3733832c19bbaf4c04e691b888c2dd4ab..1bbae15a50353f9568b5d87b1cafc01134164478 100755 (executable)
@@ -1806,14 +1806,16 @@ proc toggle_or_diff {w x y} {
                } else {
                        global next_diff_p next_diff_w next_diff_i
 
+                       set next_diff_w $w
+
                        if {$i < $ll} {
                                set i [expr {$i + 1}]
+                               set next_diff_i $i
                        } else {
+                               set next_diff_i $i
                                set i [expr {$i - 1}]
                        }
 
-                       set next_diff_i $i
-                       set next_diff_w $w
                        set next_diff_p [lindex $file_lists($w) $i]
 
                        if {$next_diff_p ne {} && $current_diff_path ne {}} {