summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authordelthas <delthas@dille.cc>2022-04-20 17:45:37 +0200
committerdelthas <delthas@dille.cc>2022-04-20 17:45:37 +0200
commit180940b653d1f9b46b164292e91a53aedd88d48d (patch)
treee3aa907deaabc8d441504203b820748c871d831b /ui
parentScroll horizontal channel list with the mouse wheel (diff)
Enable clicking on a horizontal buffer to switch to it
This is inspired by a patch from mooff. This keeps the same click & drag behavior as for the vertical channel list.
Diffstat (limited to 'ui')
-rw-r--r--ui/buffers.go23
-rw-r--r--ui/ui.go4
2 files changed, 27 insertions, 0 deletions
diff --git a/ui/buffers.go b/ui/buffers.go
index 021ddb1..fa77414 100644
--- a/ui/buffers.go
+++ b/ui/buffers.go
@@ -593,6 +593,29 @@ func (bs *BufferList) DrawVerticalBufferList(screen tcell.Screen, x0, y0, width,
}
}
+func (bs *BufferList) HorizontalBufferOffset(x int, offset int) int {
+ for i, b := range bs.list[offset:] {
+ if i > 0 {
+ x--
+ if x < 0 {
+ return -1
+ }
+ }
+ 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 < 0 {
+ return offset + i
+ }
+ }
+ return -1
+}
+
func (bs *BufferList) DrawHorizontalBufferList(screen tcell.Screen, x0, y0, width int, offset *int) {
x := width
for i := len(bs.list) - 1; i >= 0; i-- {
diff --git a/ui/ui.go b/ui/ui.go
index 6a9979a..f3d232b 100644
--- a/ui/ui.go
+++ b/ui/ui.go
@@ -180,6 +180,10 @@ func (ui *UI) ScrollChannelDownBy(n int) {
ui.channelOffset += n
}
+func (ui *UI) HorizontalBufferOffset(x int) int {
+ return ui.bs.HorizontalBufferOffset(x, ui.channelOffset)
+}
+
func (ui *UI) ChannelOffset() int {
return ui.channelOffset
}