fix page up/down navigation

Former-commit-id: 61bc9329b4ee22a78f2dfbc597e32e27de2ac1e9 [formerly 61bc9329b4ee22a78f2dfbc597e32e27de2ac1e9 [formerly c11ca1b8867dcaf63807b4c6e16923cc3f49b2c3 [formerly 5514446c86]]]
Former-commit-id: 839961805ebea3124e1ae5f03556bb5301880e32
Former-commit-id: 1f570a7c43c3f79c4c8778e4e7fb9859b54a26d7 [formerly 3b07b1e7cbf968419a3721abccdbc5d8269e5a39]
Former-commit-id: 26fb14f05e5d2d9b50b50716c6ebb431c2675ee4
pull/15/head
Miguel Mota 6 years ago
parent 1592808f65
commit 60704c3874

@ -16,6 +16,7 @@ func (ct *Cointop) cursorDown(g *gocui.Gui, v *gocui.View) error {
}
if err := ct.tableview.SetCursor(cx, cy+1); err != nil {
ox, oy := ct.tableview.Origin()
// set origin scrolls
if err := ct.tableview.SetOrigin(ox, oy+1); err != nil {
return err
}
@ -31,6 +32,7 @@ func (ct *Cointop) cursorUp(g *gocui.Gui, v *gocui.View) error {
ox, oy := ct.tableview.Origin()
cx, cy := ct.tableview.Cursor()
if err := ct.tableview.SetCursor(cx, cy-1); err != nil && oy > 0 {
// set origin scrolls
if err := ct.tableview.SetOrigin(ox, oy-1); err != nil {
return err
}
@ -43,22 +45,21 @@ func (ct *Cointop) pageDown(g *gocui.Gui, v *gocui.View) error {
if ct.tableview == nil {
return nil
}
_, y := ct.tableview.Origin()
cx, cy := ct.tableview.Cursor()
numRows := len(ct.coins) - 1
_, sy := ct.tableview.Size()
rows := sy
if (cy + +y + rows) > numRows {
// go to last row
ct.tableview.SetCursor(cx, numRows)
ox, _ := ct.tableview.Origin()
ct.tableview.SetOrigin(ox, numRows)
ct.rowChanged()
return nil
ox, oy := ct.tableview.Origin() // this is prev origin position
cx, _ := ct.tableview.Cursor() // relative cursor position
_, sy := ct.tableview.Size() // rows in visible view
k := oy + sy
l := len(ct.coins)
// end of table
if (oy + sy + sy) > l {
k = l - sy
}
if err := ct.tableview.SetCursor(cx, cy+rows); err != nil {
ox, oy := ct.tableview.Origin()
if err := ct.tableview.SetOrigin(ox, oy+rows); err != nil {
if err := ct.tableview.SetOrigin(ox, k); err != nil {
return err
}
// move cursor to last line if can't scroll further
if k == oy {
if err := ct.tableview.SetCursor(cx, sy-1); err != nil {
return err
}
}
@ -71,15 +72,18 @@ func (ct *Cointop) pageUp(g *gocui.Gui, v *gocui.View) error {
return nil
}
ox, oy := ct.tableview.Origin()
cx, cy := ct.tableview.Cursor()
_, sy := ct.tableview.Size()
rows := sy
if err := ct.tableview.SetCursor(cx, cy-rows); err != nil && oy > 0 {
k := oy - rows
if k < 0 {
k = 0
}
if err := ct.tableview.SetOrigin(ox, k); err != nil {
cx, _ := ct.tableview.Cursor() // relative cursor position
_, sy := ct.tableview.Size() // rows in visible view
k := oy - sy
if k < 0 {
k = 0
}
if err := ct.tableview.SetOrigin(ox, k); err != nil {
return err
}
// move cursor to first line if can't scroll further
if k == oy {
if err := ct.tableview.SetCursor(cx, 0); err != nil {
return err
}
}

Loading…
Cancel
Save