summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-01-31 23:16:55 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-02-01 00:23:22 +1100
commitcf6be928a375ea459222de69c3aa1da12ff9a23a (patch)
treea76534eb4675b50db052de378e66ebda1e63d332
parentc907c55144b4875d8193bbeb620b2dcc2793942e (diff)
only rerender app status when we need to
-rw-r--r--pkg/gui/app_status_manager.go25
-rw-r--r--pkg/gui/gui.go11
2 files changed, 19 insertions, 17 deletions
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()))