From d195bdf2df71a15fdc5e75aba9dcef5abcdcbb74 Mon Sep 17 00:00:00 2001 From: gekoke Date: Tue, 18 Jan 2022 20:13:13 +0200 Subject: [PATCH] Extract view switching functionality into separate function --- pkg/gui/view_helpers.go | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index edc6398a..bec8c3ff 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -36,13 +36,7 @@ func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error { } } } - focusedView, err := g.View(focusedViewName) - if err != nil { - panic(err) - } - gui.resetMainView() - gui.popPreviousView() - return gui.switchFocus(g, v, focusedView, false) + return gui.switchView(focusedViewName, g, v) } func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error { @@ -62,7 +56,25 @@ func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error { } } } - focusedView, err := g.View(focusedViewName) + return gui.switchView(focusedViewName, g, v) +} + +func (gui *Gui) isViewAvailable(viewName string) bool { + for _, view := range gui.CyclableViews { + if view == viewName { + return true + } + } + return false +} + +func (gui *Gui) switchView(viewName string, g *gocui.Gui, v *gocui.View) error { + // Check if already on the view needed to avoid ugly rerendering + if !gui.isViewAvailable(viewName) || gui.currentViewName() == viewName { + return nil + } + + focusedView, err := g.View(viewName) if err != nil { panic(err) }