summaryrefslogtreecommitdiff
path: root/ui/ui.go
diff options
context:
space:
mode:
authordelthas <delthas@dille.cc>2021-07-15 17:31:40 +0200
committerHubert Hirtz <hubert@hirtz.pm>2021-08-06 13:33:38 +0200
commitd8c4582bcabbd4f4506797371216d8ecb766b43d (patch)
tree02b1c52fb5f55f5fab7da19bfcbe0471532aeae9 /ui/ui.go
parentUpdate copyright to include all contributors (diff)
Enable scrolling through the vertical member list with the mouse wheel
Diffstat (limited to 'ui/ui.go')
-rw-r--r--ui/ui.go34
1 files changed, 30 insertions, 4 deletions
diff --git a/ui/ui.go b/ui/ui.go
index fe18d0e..8c75e97 100644
--- a/ui/ui.go
+++ b/ui/ui.go
@@ -28,6 +28,8 @@ type UI struct {
e Editor
prompt StyledString
status string
+
+ memberOffset int
}
func New(config Config) (ui *UI, err error) {
@@ -91,10 +93,12 @@ func (ui *UI) CurrentBufferOldestTime() (t *time.Time) {
func (ui *UI) NextBuffer() {
ui.bs.Next()
+ ui.memberOffset = 0
}
func (ui *UI) PreviousBuffer() {
ui.bs.Previous()
+ ui.memberOffset = 0
}
func (ui *UI) ClickedBuffer() int {
@@ -108,7 +112,9 @@ func (ui *UI) ClickBuffer(i int) {
}
func (ui *UI) GoToBufferNo(i int) {
- ui.bs.To(i)
+ if ui.bs.To(i) {
+ ui.memberOffset = 0
+ }
}
func (ui *UI) ScrollUp() {
@@ -127,6 +133,17 @@ func (ui *UI) ScrollDownBy(n int) {
ui.bs.ScrollDown(n)
}
+func (ui *UI) ScrollMemberUpBy(n int) {
+ ui.memberOffset -= n
+ if ui.memberOffset < 0 {
+ ui.memberOffset = 0
+ }
+}
+
+func (ui *UI) ScrollMemberDownBy(n int) {
+ ui.memberOffset += n
+}
+
func (ui *UI) IsAtTop() bool {
return ui.bs.IsAtTop()
}
@@ -137,6 +154,7 @@ func (ui *UI) AddBuffer(title string) int {
func (ui *UI) RemoveBuffer(title string) {
_ = ui.bs.Remove(title)
+ ui.memberOffset = 0
}
func (ui *UI) AddLine(buffer string, notify NotifyType, line Line) {
@@ -151,7 +169,9 @@ func (ui *UI) JumpBuffer(sub string) bool {
subLower := strings.ToLower(sub)
for i, b := range ui.bs.list {
if strings.Contains(strings.ToLower(b.title), subLower) {
- ui.bs.To(i)
+ if ui.bs.To(i) {
+ ui.memberOffset = 0
+ }
return true
}
}
@@ -161,7 +181,9 @@ func (ui *UI) JumpBuffer(sub string) bool {
func (ui *UI) JumpBufferIndex(i int) bool {
if i >= 0 && i < len(ui.bs.list) {
- ui.bs.To(i)
+ if ui.bs.To(i) {
+ ui.memberOffset = 0
+ }
return true
}
return false
@@ -250,6 +272,10 @@ func (ui *UI) Resize() {
ui.bs.ResizeTimeline(innerWidth, h-2)
}
+func (ui *UI) Size() (int, int) {
+ return ui.screen.Size()
+}
+
func (ui *UI) Draw(members []irc.Member) {
w, h := ui.screen.Size()
@@ -257,7 +283,7 @@ func (ui *UI) Draw(members []irc.Member) {
ui.bs.DrawTimeline(ui.screen, ui.config.ChanColWidth, 0, ui.config.NickColWidth)
ui.bs.DrawVerticalBufferList(ui.screen, 0, 0, ui.config.ChanColWidth, h)
- ui.bs.DrawVerticalMemberList(ui.screen, w-ui.config.MemberColWidth, 0, ui.config.MemberColWidth, h, members)
+ ui.bs.DrawVerticalMemberList(ui.screen, w-ui.config.MemberColWidth, 0, ui.config.MemberColWidth, h, members, &ui.memberOffset)
ui.drawStatusBar(ui.config.ChanColWidth, h-2, w-ui.config.ChanColWidth-ui.config.MemberColWidth)
for x := ui.config.ChanColWidth; x < 9+ui.config.ChanColWidth+ui.config.NickColWidth; x++ {