diff options
author | delthas <delthas@dille.cc> | 2022-04-20 17:23:54 +0200 |
---|---|---|
committer | delthas <delthas@dille.cc> | 2022-04-20 17:23:54 +0200 |
commit | 20c2b265c504ae47b959e60088aa6da41bef3263 (patch) | |
tree | 7451e1397d8b87d98843a5fa5f48326a9a779e07 /ui/buffers.go | |
parent | Show/hide the channel & member list with F7/F8 (diff) |
Scroll horizontal channel list with the mouse wheel
This is inspired by a patch by mooff.
The horizontal channel list can now be scrolled with the mouse wheel.
Diffstat (limited to 'ui/buffers.go')
-rw-r--r-- | ui/buffers.go | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/ui/buffers.go b/ui/buffers.go index 69d1aa0..021ddb1 100644 --- a/ui/buffers.go +++ b/ui/buffers.go @@ -593,10 +593,29 @@ func (bs *BufferList) DrawVerticalBufferList(screen tcell.Screen, x0, y0, width, } } -func (bs *BufferList) DrawHorizontalBufferList(screen tcell.Screen, x0, y0, width int) { - x := x0 +func (bs *BufferList) DrawHorizontalBufferList(screen tcell.Screen, x0, y0, width int, offset *int) { + x := width + for i := len(bs.list) - 1; i >= 0; i-- { + b := &bs.list[i] + x-- + if b.title == "" { + x -= stringWidth(b.netName) + } else { + x -= stringWidth(b.title) + } + if 0 < b.highlights { + x -= 2 + len(fmt.Sprintf("%d", b.highlights)) + } + if x <= 10 { + break + } + if *offset > i { + *offset = i + } + } + x = x0 - for i, b := range bs.list { + for i, b := range bs.list[*offset:] { if width <= x-x0 { break } |