diff options
Diffstat (limited to 'pkg/gui/view_helpers.go')
-rw-r--r-- | pkg/gui/view_helpers.go | 88 |
1 files changed, 19 insertions, 69 deletions
diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index 4c5002efe..5b02b1ae9 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -16,6 +16,7 @@ func (gui *Gui) refreshSidePanels(g *gocui.Gui) error { gui.refreshBranches(g) gui.refreshFiles(g) gui.refreshCommits(g) + gui.refreshStashEntries(g) return nil } @@ -78,18 +79,19 @@ func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error { } func (gui *Gui) newLineFocused(g *gocui.Gui, v *gocui.View) error { - mainView, _ := g.View("main") - mainView.SetOrigin(0, 0) - switch v.Name() { case "menu": - return gui.handleMenuSelect(g, v) + return nil case "status": return gui.handleStatusSelect(g, v) case "files": return gui.handleFileSelect(g, v) case "branches": return gui.handleBranchSelect(g, v) + case "commits": + return gui.handleCommitSelect(g, v) + case "stash": + return gui.handleStashEntrySelect(g, v) case "confirmation": return nil case "commitMessage": @@ -99,10 +101,6 @@ func (gui *Gui) newLineFocused(g *gocui.Gui, v *gocui.View) error { gui.refreshMergePanel(g) v.Highlight = false return nil - case "commits": - return gui.handleCommitSelect(g, v) - case "stash": - return gui.handleStashEntrySelect(g, v) case "staging": return nil // return gui.handleStagingSelect(g, v) @@ -165,61 +163,6 @@ func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View) error { return gui.newLineFocused(g, newView) } -func (gui *Gui) getItemPosition(v *gocui.View) int { - gui.correctCursor(v) - _, cy := v.Cursor() - _, oy := v.Origin() - return oy + cy -} - -func (gui *Gui) cursorUp(g *gocui.Gui, v *gocui.View) error { - // swallowing cursor movements in main - if v == nil || v.Name() == "main" { - return nil - } - - ox, oy := v.Origin() - cx, cy := v.Cursor() - if err := v.SetCursor(cx, cy-1); err != nil && oy > 0 { - if err := v.SetOrigin(ox, oy-1); err != nil { - return err - } - } - - gui.newLineFocused(g, v) - return nil -} - -func (gui *Gui) cursorDown(g *gocui.Gui, v *gocui.View) error { - // swallowing cursor movements in main - if v == nil || v.Name() == "main" { - return nil - } - cx, cy := v.Cursor() - ox, oy := v.Origin() - ly := v.LinesHeight() - 1 - _, height := v.Size() - maxY := height - 1 - - // if we are at the end we just return - if cy+oy == ly { - return nil - } - - var err error - if cy < maxY { - err = v.SetCursor(cx, cy+1) - } else { - err = v.SetOrigin(ox, oy+1) - } - if err != nil { - return err - } - - gui.newLineFocused(g, v) - return nil -} - func (gui *Gui) resetOrigin(v *gocui.View) error { if err := v.SetCursor(0, 0); err != nil { return err @@ -228,12 +171,6 @@ func (gui *Gui) resetOrigin(v *gocui.View) error { } // if the cursor down past the last item, move it to the last line -func (gui *Gui) correctCursor(v *gocui.View) error { - cx, cy := v.Cursor() - return gui.focusPoint(cx, cy, v) -} - -// if the cursor down past the last item, move it to the last line func (gui *Gui) focusPoint(cx int, cy int, v *gocui.View) error { if cy < 0 { return nil @@ -283,6 +220,9 @@ func (gui *Gui) renderString(g *gocui.Gui, viewName, s string) error { return nil } v.Clear() + if err := v.SetOrigin(0, 0); err != nil { + return err + } output := string(bom.Clean([]byte(s))) output = utils.NormalizeLinefeeds(output) fmt.Fprint(v, output) @@ -331,6 +271,16 @@ func (gui *Gui) getStagingView(g *gocui.Gui) *gocui.View { return v } +func (gui *Gui) getMainView(g *gocui.Gui) *gocui.View { + v, _ := g.View("main") + return v +} + +func (gui *Gui) getStashView(g *gocui.Gui) *gocui.View { + v, _ := g.View("stash") + return v +} + func (gui *Gui) trimmedContent(v *gocui.View) string { return strings.TrimSpace(v.Buffer()) } |