Code

git-gui: Add or unstage based on the specific icon used.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 04:10:30 +0000 (23:10 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 07:54:23 +0000 (02:54 -0500)
Rather than relying on the file state and just inverting it, we should
look at which file icon the user clicked on.  If they clicked on the
one in the "Changes To Be Committed" list then they want to unstage
the file.  If they clicked on the icon in the "Changed But Not Updated"
list then they want to add the file to the commit.  This should be much
more reliable about capturing the user's intent then looking at the file
state.

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

index 84ec57366cf7c8f22452977fd691592d40acc0be..c1ee48bf07ede83bdf730688ed839300a2fa8245 100755 (executable)
@@ -2867,23 +2867,17 @@ proc toggle_or_diff {w x y} {
                } else {
                        set after {}
                }
-               switch -glob -- [lindex $file_states($path) 0] {
-               A_ -
-               M_ -
-               D_ -
-               DO {
+               if {$w eq $ui_index} {
                        update_indexinfo \
                                "Unstaging [short_path $path] from commit" \
                                [list $path] \
                                [concat $after {set ui_status_value {Ready.}}]
-               }
-               ?? {
+               } elseif {$w eq $ui_workdir} {
                        update_index \
                                "Adding [short_path $path]" \
                                [list $path] \
                                [concat $after {set ui_status_value {Ready.}}]
                }
-               }
        } else {
                show_diff $path $w $lno
        }