From 52fc74c58821ea98630aea6d39d3045b9449277f Mon Sep 17 00:00:00 2001 From: Simon Let Date: Fri, 1 May 2020 23:15:39 +0200 Subject: [PATCH] do not select entries outside of the view --- cmd/cli/main.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 70a1da9..a843683 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -156,11 +156,12 @@ func runReshCli() (string, int) { } type state struct { - lock sync.Mutex - cliRecords []records.CliRecord - data []item - rawData []rawItem - highlightedItem int + lock sync.Mutex + cliRecords []records.CliRecord + data []item + rawData []rawItem + highlightedItem int + displayedItemsCount int rawMode bool @@ -316,10 +317,9 @@ func (m manager) Edit(v *gocui.View, key gocui.Key, ch rune, mod gocui.Modifier) } func (m manager) Next(g *gocui.Gui, v *gocui.View) error { - _, y := g.Size() m.s.lock.Lock() defer m.s.lock.Unlock() - if m.s.highlightedItem < y { + if m.s.highlightedItem < m.s.displayedItemsCount-1 { m.s.highlightedItem++ } return nil @@ -447,6 +447,8 @@ func (m manager) normalMode(g *gocui.Gui, v *gocui.View) error { selectedCommand := m.s.data[m.s.highlightedItem].cmdLine var selectedLineCount int = len(selectedCommand)/(printedLineLength) + 1 + m.s.displayedItemsCount = maxY - topBoxSize - selectedLineCount + for i, itm := range m.s.data { if i == maxY-topBoxSize-selectedLineCount { if debug { @@ -509,6 +511,8 @@ func (m manager) normalMode(g *gocui.Gui, v *gocui.View) error { func (m manager) rawMode(g *gocui.Gui, v *gocui.View) error { maxX, maxY := g.Size() + topBoxSize := 3 + m.s.displayedItemsCount = maxY - topBoxSize for i, itm := range m.s.rawData { if i == maxY {