diff --git a/pkg/gui/app_status_manager.go b/pkg/gui/app_status_manager.go index 9aee3fa11..577dcb37d 100644 --- a/pkg/gui/app_status_manager.go +++ b/pkg/gui/app_status_manager.go @@ -1,6 +1,8 @@ package gui import ( + "time" + "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/utils" ) @@ -49,15 +51,24 @@ func (m *statusManager) getStatusString() string { // WithWaitingStatus wraps a function and shows a waiting status while the function is still executing func (gui *Gui) WithWaitingStatus(name string, f func() error) error { go func() { - gui.g.Update(func(g *gocui.Gui) error { - gui.statusManager.addWaitingStatus(name) - return nil - }) + gui.statusManager.addWaitingStatus(name) - defer gui.g.Update(func(g *gocui.Gui) error { + defer func() { gui.statusManager.removeStatus(name) - return nil - }) + }() + + go func() { + for range time.Tick(time.Millisecond * 50) { + appStatus := gui.statusManager.getStatusString() + gui.Log.Warn(appStatus) + if appStatus == "" { + return + } + if err := gui.renderString(gui.g, "appStatus", appStatus); err != nil { + gui.Log.Warn(err) + } + } + }() if err := f(); err != nil { gui.g.Update(func(g *gocui.Gui) error { diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 6107c456f..c419f5dc9 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -618,7 +618,7 @@ func (gui *Gui) layout(g *gocui.Gui) error { } } - if appStatusView, err := g.SetView("appStatus", hiddenViewOffset, hiddenViewOffset, hiddenViewOffset+10, hiddenViewOffset+10, 0); err != nil { + if appStatusView, err := g.SetView("appStatus", -1, height-2, width, height, 0); err != nil { if err.Error() != "unknown view" { return err } @@ -776,14 +776,6 @@ func (gui *Gui) fetch(g *gocui.Gui, v *gocui.View, canAskForCredentials bool) (u return unamePassOpend, err } -func (gui *Gui) renderAppStatus() error { - appStatus := gui.statusManager.getStatusString() - if appStatus != "" { - return gui.renderString(gui.g, "appStatus", appStatus) - } - return nil -} - func (gui *Gui) renderGlobalOptions() error { return gui.renderOptionsMap(map[string]string{ fmt.Sprintf("%s/%s", gui.getKeyDisplay("universal.scrollUpMain"), gui.getKeyDisplay("universal.scrollDownMain")): gui.Tr.SLocalize("scroll"), @@ -862,7 +854,6 @@ func (gui *Gui) Run() error { } gui.goEvery(time.Second*10, gui.stopChan, gui.refreshFiles) - gui.goEvery(time.Millisecond*50, gui.stopChan, gui.renderAppStatus) g.SetManager(gocui.ManagerFunc(gui.layout), gocui.ManagerFunc(gui.getFocusLayout()))