Code

git-gui: Clear diff from viewer if the side changed.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 18:22:26 +0000 (13:22 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 22 Jan 2007 03:47:54 +0000 (22:47 -0500)
If the user switches the currently shown file from one side of the UI
to the other then how its diff is presented would be different.  And
leaving the old diff up is downright confusing.

Since the diff is probably not interesting to the user after the switch
we should just clear the diff viewer.  This saves the user time, as they
won't need to wait for us to reload the diff.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index 28c71c0b2d8622e6d61daa4c2871e466f19e717f..c4d77fafe73436b8e390a12310b4d3f65eff927f 100755 (executable)
@@ -556,14 +556,17 @@ proc clear_diff {} {
 }
 
 proc reshow_diff {} {
-       global ui_status_value file_states
+       global ui_status_value file_states file_lists
        global current_diff_path current_diff_side
 
-       if {$current_diff_path eq {}
-               || [catch {set s $file_states($current_diff_path)}]} {
+       set p $current_diff_path
+       if {$p eq {}
+               || $current_diff_side eq {}
+               || [catch {set s $file_states($p)}]
+               || [lsearch -sorted $file_lists($current_diff_side) $p] == -1} {
                clear_diff
        } else {
-               show_diff $current_diff_path $current_diff_side
+               show_diff $p $current_diff_side
        }
 }