diff options
| author | Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> | 2019-01-01 14:32:26 +0300 |
|---|---|---|
| committer | Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> | 2019-01-01 14:32:26 +0300 |
| commit | f5bc05b6af765a72bbaa6cc72854681718221c5e (patch) | |
| tree | 955430848cdffce6cf4cbf91fc0577825f9fc4e2 /pkg/gui/mainview.go | |
| parent | switch esc keybinding to q, add home/end buttons to repository nav and fic a ... (diff) | |
| download | gitbatch-f5bc05b6af765a72bbaa6cc72854681718221c5e.tar.gz | |
add page up page down controls on the repo view
Diffstat (limited to 'pkg/gui/mainview.go')
| -rw-r--r-- | pkg/gui/mainview.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/pkg/gui/mainview.go b/pkg/gui/mainview.go index 109d066..869b334 100644 --- a/pkg/gui/mainview.go +++ b/pkg/gui/mainview.go @@ -132,6 +132,51 @@ func (gui *Gui) cursorEnd(g *gocui.Gui, v *gocui.View) error { return gui.renderMain() } +// moves cursor down for a page size +func (gui *Gui) pageDown(g *gocui.Gui, v *gocui.View) error { + if v != nil { + ox, oy := v.Origin() + cx, _ := v.Cursor() + _, vy := v.Size() + lr := len(gui.State.Repositories) + if oy+vy >= lr-vy { + if err := v.SetOrigin(ox, lr-vy); err != nil { + return err + } + } else if err := v.SetOrigin(ox, oy+vy); err != nil { + return err + } + if err := v.SetCursor(cx, 0); err != nil { + return err + } + } + return gui.renderMain() +} + +// moves cursor up for a page size +func (gui *Gui) pageUp(g *gocui.Gui, v *gocui.View) error { + if v != nil { + ox, oy := v.Origin() + cx, cy := v.Cursor() + _, vy := v.Size() + if oy == 0 || oy+cy < vy { + if err := v.SetOrigin(ox, 0); err != nil { + return err + } + } else if oy <= vy { + if err := v.SetOrigin(ox, oy+cy-vy); err != nil { + return err + } + } else if err := v.SetOrigin(ox, oy-vy); err != nil { + return err + } + if err := v.SetCursor(cx, 0); err != nil { + return err + } + } + return gui.renderMain() +} + // returns the entity at cursors position by taking its position in the gui's // slice of repositories. Since it is not a %100 percent safe methodology it may // rrequire a better implementation or the slice's order must be synchronized |
