diff --git a/main.go b/main.go index 04be52b..b1c289f 100644 --- a/main.go +++ b/main.go @@ -120,10 +120,15 @@ func scrollDOWN(v *gocui.View) error { } func scrollView(v *gocui.View, delta int) error { if v != nil { - v.Autoscroll = false + _, y := v.Size() ox, oy := v.Origin() - if err := v.SetOrigin(ox, oy+delta); err != nil { - return err + if oy+delta > strings.Count(v.ViewBuffer(), "\n")-y { + v.Autoscroll = true + } else { + v.Autoscroll = false + if err := v.SetOrigin(ox, oy+delta); err != nil { + return err + } } } return nil @@ -160,6 +165,13 @@ func initKeybindings() error { }); err != nil { return err } + if err := g.SetKeybinding("", gocui.KeyEsc, gocui.ModNone, + func(g *gocui.Gui, v *gocui.View) error { + autoScrollView("Chat") + 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")