1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-23 12:18:51 +02:00

Always reapply filters on filtered views when model changes, even inactive ones (#3697)

- **PR Description**

A filtered view would show stale data when the model changes but the
view is inactive. I think this could only happen when changing some git
state outside of lazygit; for example, when creating a new branch while
the branches panel has a filter set, but doesn't have the focus. (See
the added test for an example.)
This commit is contained in:
Stefan Haller 2024-06-29 11:23:38 +02:00 committed by GitHub
commit 696b8ba457
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 6 deletions

View File

@ -239,14 +239,14 @@ func (self *SearchHelper) OnPromptContentChanged(searchString string) {
} }
func (self *SearchHelper) ReApplyFilter(context types.Context) { func (self *SearchHelper) ReApplyFilter(context types.Context) {
state := self.searchState()
if context == state.Context {
filterableContext, ok := context.(types.IFilterableContext) filterableContext, ok := context.(types.IFilterableContext)
if ok { if ok {
state := self.searchState()
if context == state.Context {
filterableContext.SetSelection(0) filterableContext.SetSelection(0)
_ = filterableContext.GetView().SetOriginY(0) _ = filterableContext.GetView().SetOriginY(0)
filterableContext.ReApplyFilter(self.c.UserConfig.Gui.UseFuzzySearch())
} }
filterableContext.ReApplyFilter(self.c.UserConfig.Gui.UseFuzzySearch())
} }
} }

View File

@ -41,13 +41,33 @@ var FilterUpdatesWhenModelChanges = NewIntegrationTest(NewIntegrationTestArgs{
}). }).
Lines( Lines(
Contains("checked-out-branch").IsSelected(), Contains("checked-out-branch").IsSelected(),
). )
// Verify that updating the filter works even if the view is not the active one
t.Views().Files().Focus()
// To do that, we use a custom command to create a new branch that matches the filter
t.GlobalPress(keys.Universal.ExecuteCustomCommand)
t.ExpectPopup().Prompt().
Title(Equals("Custom command:")).
Type("git branch new-branch").
Confirm()
t.Views().Branches().
Lines(
Contains("checked-out-branch").IsSelected(),
Contains("new-branch"),
)
t.Views().Branches().
Focus().
// cancel the filter // cancel the filter
PressEscape(). PressEscape().
Lines( Lines(
Contains("checked-out-branch").IsSelected(), Contains("checked-out-branch").IsSelected(),
Contains("other"), Contains("other"),
Contains("master"), Contains("master"),
Contains("new-branch"),
) )
}, },
}) })