Add select and deselect actions

Close #2358
This commit is contained in:
Junegunn Choi committed 2021-02-25 21:23:05 +09:00
1 parent 806a47a7cc
commit 76bbf57b3d
5 files changed
+60

No files matched your search

+27
View File
@@ -276,6 +276,8 @@ const (
actReload
actDisableSearch
actEnableSearch
actSelect
actDeselect
)
type placeholderFlags struct {
@@ -1785,11 +1787,26 @@ func (t *Terminal) selectItem(item *Item) bool {
return true
}
func (t *Terminal) selectItemChanged(item *Item) bool {
if _, found := t.selected[item.Index()]; found {
return false
}
return t.selectItem(item)
}
func (t *Terminal) deselectItem(item *Item) {
delete(t.selected, item.Index())
t.version++
}
func (t *Terminal) deselectItemChanged(item *Item) bool {
if _, found := t.selected[item.Index()]; found {
t.deselectItem(item)
return true
}
return false
}
func (t *Terminal) toggleItem(item *Item) bool {
if _, found := t.selected[item.Index()]; !found {
return t.selectItem(item)
@@ -2341,6 +2358,16 @@ func (t *Terminal) Loop() {
} else {
req(reqQuit)
}
case actSelect:
current := t.currentItem()
if t.multi > 0 && current != nil && t.selectItemChanged(current) {
req(reqList, reqInfo)
}
case actDeselect:
current := t.currentItem()
if t.multi > 0 && current != nil && t.deselectItemChanged(current) {
req(reqList, reqInfo)
}
case actToggle:
if t.multi > 0 && t.merger.Length() > 0 && toggle() {
req(reqList)