diff options
-rw-r--r-- | i_events.go | 9 | ||||
-rw-r--r-- | i_ui.go | 23 |
2 files changed, 30 insertions, 2 deletions
diff --git a/i_events.go b/i_events.go index bdc4afe..1043bc5 100644 --- a/i_events.go +++ b/i_events.go @@ -63,12 +63,17 @@ func i_list_follow_cursor(litems *ItemsList, ui *HardUI) { return } // HACK: find workaround to kill ids - virt_id := litems.curr.ID - (ui.dim[H] - 4) + 4 + scrolloff := 4 + if litems.last.ID - (ui.dim[H] - 4) <= litems.draw.ID { + scrolloff = 0 + } + virt_id := litems.curr.ID - (ui.dim[H] - 4) + scrolloff for litems.draw.ID < virt_id && litems.draw.next != nil { litems.draw = litems.draw.next } - for litems.draw.ID > litems.curr.ID - 4 && + scrolloff = 4 + for litems.draw.ID > litems.curr.ID - scrolloff && litems.draw.prev != nil { litems.draw = litems.draw.prev } @@ -527,6 +527,28 @@ func i_info_panel(ui HardUI, litems *ItemsList) { } } +func i_scrollhint(ui HardUI, litems *ItemsList) { + if litems.head == nil { + return + } + h := ui.dim[H] - 4 + max := litems.last.ID + if max <= h { + return + } + if litems.draw.ID > 1 { + ui.s.SetContent(0, 0, + '▲', + nil, ui.def_style) + } + if max - litems.draw.ID > h { + ui.s.SetContent(0, ui.dim[H] - 2, + '▼', + nil, ui.def_style) + return + } +} + func i_ui(data *HardData) { var err error ui := &data.ui @@ -553,6 +575,7 @@ func i_ui(data *HardData) { i_bottom_text(*ui) i_host_panel(data.ui, data.opts.Icon, data.litems, data) i_info_panel(data.ui, data.litems) + i_scrollhint(data.ui, data.litems) if data.litems.head == nil { i_draw_zhosts_box(*ui) } |