diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-01-27 20:10:25 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-01-27 21:25:04 +1100 |
commit | 84a19920559f940b391ab3f19686e2e85039e083 (patch) | |
tree | 479b356263b51bd93831c8e98f479d9b8b722a2c /pkg/gui/files_panel.go | |
parent | 7f85bf556322eb5996b63182bbf775db68987bae (diff) |
better locking of merge panel state
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r-- | pkg/gui/files_panel.go | 34 |
1 files changed, 5 insertions, 29 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index d0b4d736c..fa8cfa79c 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -56,18 +56,16 @@ func (gui *Gui) filesRenderToMain() error { } if node.File != nil && node.File.HasInlineMergeConflicts { - hasConflicts, err := gui.setMergeState(node.File.Name) + ok, err := gui.setConflictsAndRenderWithLock(node.GetPath(), false) if err != nil { return err } - - // if we don't have conflicts we'll fall through and show the diff - if hasConflicts { - return gui.renderConflicts(false) + if ok { + return nil } } - gui.resetMergeState() + gui.resetMergeStateWithLock() cmdObj := gui.Git.WorkingTree.WorktreeFileDiffCmdObj(node, false, !node.GetHasUnstagedChanges() && node.GetHasStagedChanges(), gui.State.IgnoreWhitespaceInDiffView) @@ -143,28 +141,6 @@ func (gui *Gui) refreshFilesAndSubmodules() error { return nil } -func (gui *Gui) refreshMergeState() error { - gui.State.Panels.Merging.Lock() - defer gui.State.Panels.Merging.Unlock() - - if gui.currentContext().GetKey() != MAIN_MERGING_CONTEXT_KEY { - return nil - } - - hasConflicts, err := gui.setMergeState(gui.State.Panels.Merging.GetPath()) - if err != nil { - return gui.surfaceError(err) - } - if hasConflicts { - _ = gui.renderConflicts(true) - } else { - _ = gui.escapeMerge() - return nil - } - - return nil -} - // specific functions func (gui *Gui) stagedFiles() []*models.File { @@ -959,7 +935,7 @@ func (gui *Gui) switchToMerge() error { gui.takeOverMergeConflictScrolling() if gui.State.Panels.Merging.GetPath() != file.Name { - hasConflicts, err := gui.setMergeState(file.Name) + hasConflicts, err := gui.setMergeStateWithLock(file.Name) if err != nil { return err } |