mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 07:36:27 -04:00
Add a function SetStatusFilterPreservingSelection
This commit is contained in:
parent
b2b9519bcc
commit
4e2a1cd5b0
|
|
@ -167,6 +167,12 @@ func (self *FileTreeViewModel) SetStatusFilter(filter FileTreeDisplayFilter) {
|
|||
self.IListCursor.SetSelection(0)
|
||||
}
|
||||
|
||||
func (self *FileTreeViewModel) SetStatusFilterPreservingSelection(filter FileTreeDisplayFilter) {
|
||||
self.preserveSelection(func() {
|
||||
self.SetStatusFilter(filter)
|
||||
})
|
||||
}
|
||||
|
||||
func (self *FileTreeViewModel) preserveSelection(f func()) {
|
||||
selectedNode := self.GetSelected()
|
||||
var selectedPath string
|
||||
|
|
|
|||
32
pkg/gui/filetree/file_tree_view_model_test.go
Normal file
32
pkg/gui/filetree/file_tree_view_model_test.go
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package filetree
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/common"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestSetStatusFilterPreservingSelection(t *testing.T) {
|
||||
files := []*models.File{
|
||||
{Path: "file1"},
|
||||
{Path: "file2", HasMergeConflicts: true},
|
||||
{Path: "file3", HasMergeConflicts: true},
|
||||
}
|
||||
viewModel := NewFileTreeViewModel(
|
||||
func() []*models.File { return files },
|
||||
common.NewDummyCommon(),
|
||||
false,
|
||||
)
|
||||
viewModel.SetTree()
|
||||
viewModel.SetStatusFilter(DisplayConflicted)
|
||||
viewModel.SetSelection(viewModel.Len() - 2)
|
||||
viewModel.ToggleStickyRange()
|
||||
viewModel.MoveSelectedLine(1)
|
||||
|
||||
viewModel.SetStatusFilterPreservingSelection(DisplayAll)
|
||||
|
||||
assert.Equal(t, "file3", viewModel.GetSelectedPath())
|
||||
assert.False(t, viewModel.IsSelectingRange())
|
||||
}
|
||||
Loading…
Reference in a new issue