mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-22 07:11:01 +00:00
gui: actually pop stack and keep it fit
This commit is contained in:
parent
c2ea933059
commit
f95b49cd6b
6 changed files with 14 additions and 10 deletions
|
|
@ -84,7 +84,7 @@ func (gui *Gui) prepareConfirmationPanel(currentView *gocui.View, title, prompt
|
|||
confirmationView.FgColor = gocui.ColorWhite
|
||||
}
|
||||
gui.g.Update(func(g *gocui.Gui) error {
|
||||
return gui.switchFocus(gui.g, currentView, confirmationView)
|
||||
return gui.switchFocus(gui.g, currentView, confirmationView, false)
|
||||
})
|
||||
return confirmationView, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||
}
|
||||
}
|
||||
|
||||
if err := gui.switchFocus(gui.g, nil, v); err != nil {
|
||||
if err := gui.switchFocus(gui.g, nil, v, false); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ func (gui *Gui) handleEnterMain(g *gocui.Gui, v *gocui.View) error {
|
|||
mainView := gui.getMainView()
|
||||
mainView.ParentView = v
|
||||
|
||||
return gui.switchFocus(gui.g, v, mainView)
|
||||
return gui.switchFocus(gui.g, v, mainView, false)
|
||||
}
|
||||
|
||||
func (gui *Gui) handleExitMain(g *gocui.Gui, v *gocui.View) error {
|
||||
|
|
@ -122,5 +122,5 @@ func (gui *Gui) handleMainClick(g *gocui.Gui, v *gocui.View) error {
|
|||
v.ParentView = currentView
|
||||
}
|
||||
|
||||
return gui.switchFocus(gui.g, currentView, v)
|
||||
return gui.switchFocus(gui.g, currentView, v, false)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ func (gui *Gui) createMenu(title string, items interface{}, itemCount int, handl
|
|||
}
|
||||
}
|
||||
currentView := gui.g.CurrentView()
|
||||
return gui.switchFocus(gui.g, currentView, menuView)
|
||||
return gui.switchFocus(gui.g, currentView, menuView, false)
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ func (gui *Gui) RunWithSubprocesses() error {
|
|||
return err
|
||||
}
|
||||
|
||||
// pop here so we don't stack up view names
|
||||
gui.State.PreviousViews.Pop()
|
||||
// ensuring we render e.g. the logs of the currently selected item upon return
|
||||
gui.State.Panels.Main.ObjectKey = ""
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@ func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error {
|
|||
panic(err)
|
||||
}
|
||||
gui.resetMainView()
|
||||
return gui.switchFocus(g, v, focusedView)
|
||||
gui.State.PreviousViews.Pop()
|
||||
return gui.switchFocus(g, v, focusedView, false)
|
||||
}
|
||||
|
||||
func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error {
|
||||
|
|
@ -66,7 +67,8 @@ func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error {
|
|||
panic(err)
|
||||
}
|
||||
gui.resetMainView()
|
||||
return gui.switchFocus(g, v, focusedView)
|
||||
gui.State.PreviousViews.Pop()
|
||||
return gui.switchFocus(g, v, focusedView, false)
|
||||
}
|
||||
|
||||
func (gui *Gui) resetMainView() {
|
||||
|
|
@ -112,15 +114,15 @@ func (gui *Gui) returnFocus(g *gocui.Gui, v *gocui.View) error {
|
|||
gui.Log.Error(err)
|
||||
}
|
||||
}
|
||||
return gui.switchFocus(g, v, previousView)
|
||||
return gui.switchFocus(g, v, previousView, true)
|
||||
}
|
||||
|
||||
// pass in oldView = nil if you don't want to be able to return to your old view
|
||||
// TODO: move some of this logic into our onFocusLost and onFocus hooks
|
||||
func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View) error {
|
||||
func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View, returning bool) error {
|
||||
// we assume we'll never want to return focus to a popup panel i.e.
|
||||
// we should never stack popup panels
|
||||
if oldView != nil && !gui.isPopupPanel(oldView.Name()) {
|
||||
if oldView != nil && !gui.isPopupPanel(oldView.Name()) && !returning {
|
||||
gui.State.PreviousViews.Push(oldView.Name())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue