Switch to Emacs like multi select
This commit is contained in:
parent
fe2ec158be
commit
3f94d0fee8
15
filter.go
15
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
|
||||
|
|
Loading…
Reference in New Issue