diff --git a/filter.go b/filter.go index 7f922bb..c82daea 100644 --- a/filter.go +++ b/filter.go @@ -149,8 +149,16 @@ func HandleKeyEvents(s *State, ev tcell.EventKey, inputs Items) { func HandleMain(state *State, ev tcell.EventKey, input Items) { if ev.Key() == tcell.KeyTAB { // Mark the current line as selected - item := (*input)[state.Current] - item.Selected = !item.Selected + if state.InSelectionMode { + start := min(state.SelectionStartLine, state.Current) + end := max(state.SelectionStartLine, state.Current) + toggleItems(input, start, end+1) + state.SelectionStartLine = -1 + state.InSelectionMode = false + } else { + item := (*input)[state.Current] + item.Selected = !item.Selected + } } else if ev.Key() == tcell.KeyUp || ev.Key() == tcell.KeyCtrlP { if state.Current > 0 { @@ -182,9 +190,6 @@ func HandleMain(state *State, ev tcell.EventKey, input Items) { } else if ev.Key() == tcell.KeyCtrlSpace { if state.InSelectionMode { - start := min(state.SelectionStartLine, state.Current) - end := max(state.SelectionStartLine, state.Current) - toggleItems(input, start, end+1) state.SelectionStartLine = -1 } else { state.SelectionStartLine = state.Current