mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-24 16:11:04 +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
|
confirmationView.FgColor = gocui.ColorWhite
|
||||||
}
|
}
|
||||||
gui.g.Update(func(g *gocui.Gui) error {
|
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
|
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
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ func (gui *Gui) handleEnterMain(g *gocui.Gui, v *gocui.View) error {
|
||||||
mainView := gui.getMainView()
|
mainView := gui.getMainView()
|
||||||
mainView.ParentView = v
|
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 {
|
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
|
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()
|
currentView := gui.g.CurrentView()
|
||||||
return gui.switchFocus(gui.g, currentView, menuView)
|
return gui.switchFocus(gui.g, currentView, menuView, false)
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ func (gui *Gui) RunWithSubprocesses() error {
|
||||||
return err
|
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
|
// ensuring we render e.g. the logs of the currently selected item upon return
|
||||||
gui.State.Panels.Main.ObjectKey = ""
|
gui.State.Panels.Main.ObjectKey = ""
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,8 @@ func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
gui.resetMainView()
|
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 {
|
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)
|
panic(err)
|
||||||
}
|
}
|
||||||
gui.resetMainView()
|
gui.resetMainView()
|
||||||
return gui.switchFocus(g, v, focusedView)
|
gui.State.PreviousViews.Pop()
|
||||||
|
return gui.switchFocus(g, v, focusedView, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) resetMainView() {
|
func (gui *Gui) resetMainView() {
|
||||||
|
|
@ -112,15 +114,15 @@ func (gui *Gui) returnFocus(g *gocui.Gui, v *gocui.View) error {
|
||||||
gui.Log.Error(err)
|
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
|
// 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
|
// 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 assume we'll never want to return focus to a popup panel i.e.
|
||||||
// we should never stack popup panels
|
// 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())
|
gui.State.PreviousViews.Push(oldView.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue