From 60c5302aec02ad53a77fc334d9739b5ab7b533de Mon Sep 17 00:00:00 2001 From: David Haukeness Date: Tue, 29 Oct 2019 18:21:06 -0600 Subject: [PATCH] added scrolling functionality --- main.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/main.go b/main.go index 4e300ae..04be52b 100644 --- a/main.go +++ b/main.go @@ -110,7 +110,56 @@ func layout(g *gocui.Gui) error { } return nil } +func scrollUP(v *gocui.View) error { + scrollView(v, -1) + return nil +} +func scrollDOWN(v *gocui.View) error { + scrollView(v, 1) + return nil +} +func scrollView(v *gocui.View, delta int) error { + if v != nil { + v.Autoscroll = false + ox, oy := v.Origin() + if err := v.SetOrigin(ox, oy+delta); err != nil { + return err + } + } + return nil +} +func autoScrollView(vn string) error { + v, err := g.View(vn) + if err != nil { + return err + } else if v != nil { + v.Autoscroll = true + } + return nil +} func initKeybindings() error { + if err := g.SetKeybinding("", gocui.KeyPgup, gocui.ModNone, + func(g *gocui.Gui, v *gocui.View) error { + cv, _ := g.View("Chat") + err := scrollUP(cv) + if err != nil { + return err + } + return nil + }); err != nil { + return err + } + if err := g.SetKeybinding("", gocui.KeyPgdn, gocui.ModNone, + func(g *gocui.Gui, v *gocui.View) error { + cv, _ := g.View("Chat") + err := scrollDOWN(cv) + if err != nil { + return err + } + return nil + }); err != nil { + return err + } if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error { input, err := getInputString("Input") @@ -592,6 +641,7 @@ func handleInput(viewName string) error { return nil } func sendChat(message string) { + autoScrollView("Chat") chat := k.NewChat(channel) _, err := chat.Send(message) if err != nil {