diff options
| author | citrons <citrons@mondecitronne.com> | 2025-06-07 14:57:04 -0500 |
|---|---|---|
| committer | citrons <citrons@mondecitronne.com> | 2025-06-07 16:02:18 -0500 |
| commit | 855e61c53c8a401c6f0be84a63808cb94cb19903 (patch) | |
| tree | 5f03c5357cf6aa75db05376cf6a42cc67d1e33c8 /tui/scroll_state.go | |
| parent | 553ebc26cda61b567418205f7ee60be122b3c84f (diff) | |
channel list scrolling
Diffstat (limited to 'tui/scroll_state.go')
| -rw-r--r-- | tui/scroll_state.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tui/scroll_state.go b/tui/scroll_state.go new file mode 100644 index 0000000..75797b1 --- /dev/null +++ b/tui/scroll_state.go @@ -0,0 +1,43 @@ +package tui + +type ScrollState struct { + at string + offset int + absolute int + atFirst bool + atLast bool +} + +func (s *ScrollState) ToStart() { + *s = ScrollState {} +} + +func (s *ScrollState) AtFirst() bool { + return s.atFirst +} + +func (s *ScrollState) AtLast() bool { + return s.atLast +} + +func (s *ScrollState) Scroll(amnt int) { + s.offset += amnt + s.absolute += amnt +} + +func (s *ScrollState) ByMouse(ev MouseEvent, reverse bool) { + scroll := ev.Scroll * 5 + if reverse { + scroll *= -1 + } + s.Scroll(scroll) +} + +func (s *ScrollState) Get() int { + return s.absolute +} + +func (s *ScrollState) Set(amnt int) { + s.at = "" + s.absolute = amnt +} |
