Code

git-gui: Make consecutive icon clicks toggle included status of a file.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 19 Nov 2006 05:37:49 +0000 (00:37 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 19 Nov 2006 05:37:49 +0000 (00:37 -0500)
If the user clicks on the icon associated with a file we now flip to the
inverse status.  Partially included files first fully include, then fully
uninclude, as we don't keep track of intermediate partial inclusions.

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

diff --git a/git-gui b/git-gui
index 6b886c64cefe9f8656b8588fb725448a4891fcfc..7126f8d897dc7780c692ea25526a827909775421 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -2387,7 +2387,7 @@ proc do_macosx_app {} {
 }
 
 proc toggle_or_diff {w x y} {
-       global file_lists current_diff ui_index ui_other
+       global file_states file_lists current_diff ui_index ui_other
        global last_clicked selected_paths
 
        set pos [split [$w index @$x,$y] .]
@@ -2410,10 +2410,23 @@ proc toggle_or_diff {w x y} {
                } else {
                        set after {}
                }
-               update_index \
-                       "Including [short_path $path]" \
-                       [list $path] \
-                       [concat $after {set ui_status_value {Ready.}}]
+               switch -glob -- [lindex $file_states($path) 0] {
+               A_ -
+               AO -
+               M_ -
+               D_ {
+                       update_indexinfo \
+                               "Removing [short_path $path] from commit" \
+                               [list $path] \
+                               [concat $after {set ui_status_value {Ready.}}]
+               }
+               ?? {
+                       update_index \
+                               "Including [short_path $path]" \
+                               [list $path] \
+                               [concat $after {set ui_status_value {Ready.}}]
+               }
+               }
        } else {
                show_diff $path $w $lno
        }