summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authordelthas <delthas@dille.cc>2022-04-20 17:23:54 +0200
committerdelthas <delthas@dille.cc>2022-04-20 17:23:54 +0200
commit20c2b265c504ae47b959e60088aa6da41bef3263 (patch)
tree7451e1397d8b87d98843a5fa5f48326a9a779e07 /ui
parentShow/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')
-rw-r--r--ui/buffers.go25
-rw-r--r--ui/ui.go2
2 files changed, 23 insertions, 4 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
}
diff --git a/ui/ui.go b/ui/ui.go
index 1498949..6a9979a 100644
--- a/ui/ui.go
+++ b/ui/ui.go
@@ -415,7 +415,7 @@ func (ui *UI) Draw(members []irc.Member) {
ui.bs.DrawTimeline(ui.screen, ui.channelWidth, 0, ui.config.NickColWidth)
if ui.channelWidth == 0 {
- ui.bs.DrawHorizontalBufferList(ui.screen, 0, h-1, w-ui.memberWidth)
+ ui.bs.DrawHorizontalBufferList(ui.screen, 0, h-1, w-ui.memberWidth, &ui.channelOffset)
} else {
ui.bs.DrawVerticalBufferList(ui.screen, 0, 0, ui.channelWidth, h, &ui.channelOffset)
}