git-gui: Only permit selection in one list at a time.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 04:46:53 +0000 (23:46 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 07:54:24 +0000 (02:54 -0500)
Now that our lists represent more defined states it no longer makes any
sense to permit a user to make selections from both lists at once, as
the each available operation acts only on files whose status corresponds
to only one of the lists.

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

index 984535687cd4c24803f9c97fcd01ae80cb4c6972..a1002ecab850fa654c61403f16835c0bd8d3763e 100755 (executable)
@@ -1355,7 +1355,7 @@ proc display_all_files_helper {w path icon_name m} {
 proc display_all_files {} {
        global ui_index ui_workdir
        global file_states file_lists
-       global last_clicked selected_paths
+       global last_clicked
 
        $ui_index conf -state normal
        $ui_workdir conf -state normal
@@ -2852,18 +2852,21 @@ proc toggle_or_diff {w x y} {
 }
 
 proc add_one_to_selection {w x y} {
-       global file_lists
-       global last_clicked selected_paths
+       global file_lists last_clicked selected_paths
 
-       set pos [split [$w index @$x,$y] .]
-       set lno [lindex $pos 0]
-       set col [lindex $pos 1]
+       set lno [lindex [split [$w index @$x,$y] .] 0]
        set path [lindex $file_lists($w) [expr {$lno - 1}]]
        if {$path eq {}} {
                set last_clicked {}
                return
        }
 
+       if {$last_clicked ne {}
+               && [lindex $last_clicked 0] ne $w} {
+               array unset selected_paths
+               [lindex $last_clicked 0] tag remove in_sel 0.0 end
+       }
+
        set last_clicked [list $w $lno]
        if {[catch {set in_sel $selected_paths($path)}]} {
                set in_sel 0
@@ -2878,16 +2881,14 @@ proc add_one_to_selection {w x y} {
 }
 
 proc add_range_to_selection {w x y} {
-       global file_lists
-       global last_clicked selected_paths
+       global file_lists last_clicked selected_paths
 
        if {[lindex $last_clicked 0] ne $w} {
                toggle_or_diff $w $x $y
                return
        }
 
-       set pos [split [$w index @$x,$y] .]
-       set lno [lindex $pos 0]
+       set lno [lindex [split [$w index @$x,$y] .] 0]
        set lc [lindex $last_clicked 1]
        if {$lc < $lno} {
                set begin $lc