summaryrefslogtreecommitdiffstats
path: root/pkg/gui/gui.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2022-02-13 11:35:42 +1100
committerJesse Duffield <jessedduffield@gmail.com>2022-03-17 19:13:40 +1100
commit943a8e83da2f5ab9afc7dc22f32bfb4609ff6347 (patch)
treeeaff66f536fbb72cf30ea4fd2f8c756c5cbbf342 /pkg/gui/gui.go
parent94d66b267dc4c5c415887566dcceb8e267d4ff06 (diff)
ensure we retain state when returning to submodule parent
Diffstat (limited to 'pkg/gui/gui.go')
-rw-r--r--pkg/gui/gui.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go
index 7dab1dc99..84203c9e5 100644
--- a/pkg/gui/gui.go
+++ b/pkg/gui/gui.go
@@ -323,6 +323,8 @@ func (gui *Gui) resetState(filterPath string, reuseState bool) {
if state := gui.RepoStateMap[Repo(currentDir)]; state != nil {
gui.State = state
gui.State.ViewsSetup = false
+ gui.syncViewContexts()
+ return
}
} else {
gui.c.Log.Error(err)
@@ -341,11 +343,6 @@ func (gui *Gui) resetState(filterPath string, reuseState bool) {
viewContextMap := context.NewViewContextMap()
for viewName, context := range initialViewContextMapping(contextTree) {
viewContextMap.Set(viewName, context)
- view, err := gui.g.View(viewName)
- if err != nil {
- panic(err)
- }
- view.Context = string(context.GetKey())
}
gui.State = &GuiRepoState{
@@ -380,9 +377,21 @@ func (gui *Gui) resetState(filterPath string, reuseState bool) {
Contexts: contextTree,
}
+ gui.syncViewContexts()
+
gui.RepoStateMap[Repo(currentDir)] = gui.State
}
+func (gui *Gui) syncViewContexts() {
+ for viewName, context := range gui.State.ViewContextMap.Entries() {
+ view, err := gui.g.View(viewName)
+ if err != nil {
+ panic(err)
+ }
+ view.Context = string(context.GetKey())
+ }
+}
+
func initialViewContextMapping(contextTree *context.ContextTree) map[string]types.Context {
return map[string]types.Context{
"status": contextTree.Status,