mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-25 08:31:03 +00:00
move cursor when a service moves
This commit is contained in:
parent
113abbf59b
commit
54a5890485
2 changed files with 30 additions and 7 deletions
|
|
@ -208,10 +208,33 @@ func (gui *Gui) refreshContainersAndServices() error {
|
||||||
// if the containersView hasn't been instantiated yet we just return
|
// if the containersView hasn't been instantiated yet we just return
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// keep track of current service selected so that we can reposition our cursor if it moves position in the list
|
||||||
|
sl := gui.State.Panels.Services.SelectedLine
|
||||||
|
var selectedService *commands.Service
|
||||||
|
if len(gui.DockerCommand.Services) > 0 {
|
||||||
|
selectedService = gui.DockerCommand.Services[sl]
|
||||||
|
}
|
||||||
|
|
||||||
if err := gui.refreshStateContainersAndServices(); err != nil {
|
if err := gui.refreshStateContainersAndServices(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// see if our selected service has moved
|
||||||
|
if selectedService != nil {
|
||||||
|
for i, service := range gui.DockerCommand.Services {
|
||||||
|
if service.ID == selectedService.ID {
|
||||||
|
if i == sl {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
gui.State.Panels.Services.SelectedLine = i
|
||||||
|
if err := gui.focusPoint(0, i, len(gui.DockerCommand.Services), gui.getServicesView()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(gui.DockerCommand.Containers) > 0 && gui.State.Panels.Containers.SelectedLine == -1 {
|
if len(gui.DockerCommand.Containers) > 0 && gui.State.Panels.Containers.SelectedLine == -1 {
|
||||||
gui.State.Panels.Containers.SelectedLine = 0
|
gui.State.Panels.Containers.SelectedLine = 0
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func (gui *Gui) getServiceContexts() []string {
|
||||||
return []string{"logs", "config", "stats"}
|
return []string{"logs", "config", "stats"}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) getSelectedService(g *gocui.Gui) (*commands.Service, error) {
|
func (gui *Gui) getSelectedService() (*commands.Service, error) {
|
||||||
selectedLine := gui.State.Panels.Services.SelectedLine
|
selectedLine := gui.State.Panels.Services.SelectedLine
|
||||||
if selectedLine == -1 {
|
if selectedLine == -1 {
|
||||||
return &commands.Service{}, errors.New("no service selected")
|
return &commands.Service{}, errors.New("no service selected")
|
||||||
|
|
@ -55,7 +55,7 @@ func (gui *Gui) handleServiceSelect(g *gocui.Gui, v *gocui.View) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
service, err := gui.getSelectedService(g)
|
service, err := gui.getSelectedService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +123,7 @@ func (gui *Gui) renderServiceStats(mainView *gocui.View, service *commands.Servi
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) renderServiceLogs(mainView *gocui.View, service *commands.Service) error {
|
func (gui *Gui) renderServiceLogs(mainView *gocui.View, service *commands.Service) error {
|
||||||
service, err := gui.getSelectedService(gui.g)
|
service, err := gui.getSelectedService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -194,7 +194,7 @@ func (r *removeServiceOption) GetDisplayStrings(isFocused bool) []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleServiceRemoveMenu(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleServiceRemoveMenu(g *gocui.Gui, v *gocui.View) error {
|
||||||
service, err := gui.getSelectedService(g)
|
service, err := gui.getSelectedService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -232,7 +232,7 @@ func (gui *Gui) handleServiceRemoveMenu(g *gocui.Gui, v *gocui.View) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleServiceStop(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleServiceStop(g *gocui.Gui, v *gocui.View) error {
|
||||||
service, err := gui.getSelectedService(g)
|
service, err := gui.getSelectedService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -250,7 +250,7 @@ func (gui *Gui) handleServiceStop(g *gocui.Gui, v *gocui.View) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleServiceRestart(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleServiceRestart(g *gocui.Gui, v *gocui.View) error {
|
||||||
service, err := gui.getSelectedService(g)
|
service, err := gui.getSelectedService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +265,7 @@ func (gui *Gui) handleServiceRestart(g *gocui.Gui, v *gocui.View) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleServiceAttach(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleServiceAttach(g *gocui.Gui, v *gocui.View) error {
|
||||||
service, err := gui.getSelectedService(g)
|
service, err := gui.getSelectedService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue