summaryrefslogtreecommitdiffstats
path: root/pkg/gui/view_helpers.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/view_helpers.go')
-rw-r--r--pkg/gui/view_helpers.go32
1 files changed, 17 insertions, 15 deletions
diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go
index a88f6ce3d..7979d5e9b 100644
--- a/pkg/gui/view_helpers.go
+++ b/pkg/gui/view_helpers.go
@@ -90,7 +90,7 @@ func (gui *Gui) newLineFocused(g *gocui.Gui, v *gocui.View) error {
case "status":
return gui.handleStatusSelect(g, v)
case "files":
- return gui.handleFileSelect(g, v)
+ return gui.handleFileSelect(g, v, false)
case "branches":
return gui.handleBranchSelect(g, v)
case "commits":
@@ -222,26 +222,28 @@ func (gui *Gui) focusPoint(cx int, cy int, v *gocui.View) error {
return nil
}
-func (gui *Gui) synchronousRenderString(g *gocui.Gui, viewName, s string) error {
- v, err := g.View(viewName)
- // just in case the view disappeared as this function was called, we'll
- // silently return if it's not found
- if err != nil {
- return nil
- }
- v.Clear()
- if err := v.SetOrigin(0, 0); err != nil {
- return err
- }
+func (gui *Gui) cleanString(s string) string {
output := string(bom.Clean([]byte(s)))
- output = utils.NormalizeLinefeeds(output)
- fmt.Fprint(v, output)
+ return utils.NormalizeLinefeeds(output)
+}
+
+func (gui *Gui) setViewContent(g *gocui.Gui, v *gocui.View, s string) error {
+ v.Clear()
+ fmt.Fprint(v, gui.cleanString(s))
return nil
}
+// renderString resets the origin of a view and sets its content
func (gui *Gui) renderString(g *gocui.Gui, viewName, s string) error {
g.Update(func(*gocui.Gui) error {
- return gui.synchronousRenderString(gui.g, viewName, s)
+ v, err := g.View(viewName)
+ if err != nil {
+ return nil // return gracefully if view has been deleted
+ }
+ if err := v.SetOrigin(0, 0); err != nil {
+ return err
+ }
+ return gui.setViewContent(gui.g, v, s)
})
return nil
}