diff --git a/src/terminal.go b/src/terminal.go index 34df210..4f66fdc 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1837,8 +1837,12 @@ func (t *Terminal) Loop() { } case actDeselectAll: if t.multi > 0 { - t.selected = make(map[int32]selectedItem) - t.version++ + for i := 0; i < t.merger.Length() && len(t.selected) > 0; i++ { + item := t.merger.Get(i).item + if _, found := t.selected[item.Index()]; found { + t.deselectItem(item) + } + } req(reqList, reqInfo) } case actToggle: diff --git a/test/test_go.rb b/test/test_go.rb index 2cfbcfd..9282f9e 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -865,16 +865,22 @@ class TestGoFZF < TestBase tmux.until { |lines| lines[-2].include? '(100)' } tmux.send_keys :Tab, :Tab tmux.until { |lines| lines[-2].include? '(98)' } + tmux.send_keys '100' + tmux.until { |lines| lines.match_count == 1 } + tmux.send_keys 'C-d' + tmux.until { |lines| lines[-2].include? '(97)' } + tmux.send_keys 'C-u' + tmux.until { |lines| lines.match_count == 100 } tmux.send_keys 'C-d' tmux.until { |lines| !lines[-2].include? '(' } - tmux.send_keys :Tab, :Tab + tmux.send_keys :BTab, :BTab tmux.until { |lines| lines[-2].include? '(2)' } tmux.send_keys 0 tmux.until { |lines| lines[-2].include? '10/100' } tmux.send_keys 'C-a' tmux.until { |lines| lines[-2].include? '(12)' } tmux.send_keys :Enter - assert_equal %w[2 1 10 20 30 40 50 60 70 80 90 100], + assert_equal %w[1 2 10 20 30 40 50 60 70 80 90 100], readonce.split($INPUT_RECORD_SEPARATOR) end