diff --git a/cointop/navigation.go b/cointop/navigation.go index 748c975..e7ded96 100644 --- a/cointop/navigation.go +++ b/cointop/navigation.go @@ -24,8 +24,20 @@ func (ct *Cointop) setPage(page int) int { } func (ct *Cointop) highlightRow(idx int) error { + ct.tableview.SetOrigin(0, 0) + ct.tableview.SetCursor(0, 0) + ox, _ := ct.tableview.Origin() cx, _ := ct.tableview.Cursor() - ct.tableview.SetCursor(cx, idx) + _, sy := ct.tableview.Size() + perpage := ct.getTotalPerPage() + p := idx % perpage + oy := (p / sy) * sy + cy := p % sy + if oy > 0 { + ct.tableview.SetOrigin(ox, oy) + } + ct.tableview.SetCursor(cx, cy) + return nil } diff --git a/cointop/search.go b/cointop/search.go index 2f78b2c..8a298cd 100644 --- a/cointop/search.go +++ b/cointop/search.go @@ -40,7 +40,14 @@ func (ct *Cointop) search(q string) error { q = strings.TrimSpace(strings.ToLower(q)) for i := range ct.allcoins { coin := ct.allcoins[i] - if strings.ToLower(coin.Name) == q || strings.ToLower(coin.Symbol) == q { + if strings.ToLower(coin.Name) == q { + ct.goToGlobalIndex(i) + return nil + } + } + for i := range ct.allcoins { + coin := ct.allcoins[i] + if strings.ToLower(coin.Symbol) == q { ct.goToGlobalIndex(i) return nil }