mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-21 23:01: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
|
||||
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 {
|
||||
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 {
|
||||
gui.State.Panels.Containers.SelectedLine = 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func (gui *Gui) getServiceContexts() []string {
|
|||
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
|
||||
if selectedLine == -1 {
|
||||
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
|
||||
}
|
||||
|
||||
service, err := gui.getSelectedService(g)
|
||||
service, err := gui.getSelectedService()
|
||||
if err != nil {
|
||||
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 {
|
||||
service, err := gui.getSelectedService(gui.g)
|
||||
service, err := gui.getSelectedService()
|
||||
if err != 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 {
|
||||
service, err := gui.getSelectedService(g)
|
||||
service, err := gui.getSelectedService()
|
||||
if err != 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 {
|
||||
service, err := gui.getSelectedService(g)
|
||||
service, err := gui.getSelectedService()
|
||||
if err != 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 {
|
||||
service, err := gui.getSelectedService(g)
|
||||
service, err := gui.getSelectedService()
|
||||
if err != 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 {
|
||||
service, err := gui.getSelectedService(g)
|
||||
service, err := gui.getSelectedService()
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue