aboutsummaryrefslogtreecommitdiff
path: root/ui/view-main.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2018-04-30 12:40:28 +0300
committerTulir Asokan <tulir@maunium.net>2018-04-30 12:40:28 +0300
commitc5ec94a78f712332dcbe8002d2d1ae9bd288a2c2 (patch)
tree4870661aeb26cd975575c11f3eeb13c129ac4d76 /ui/view-main.go
parentd8dba100e041f6e6fc7cdd546ae161d5e52f0582 (diff)
Add mouse scrolling support to room list (ref #34)
Diffstat (limited to 'ui/view-main.go')
-rw-r--r--ui/view-main.go57
1 files changed, 34 insertions, 23 deletions
diff --git a/ui/view-main.go b/ui/view-main.go
index 4b01829..b7bbf6d 100644
--- a/ui/view-main.go
+++ b/ui/view-main.go
@@ -213,39 +213,47 @@ func (view *MainView) MouseEventHandler(roomView *RoomView, event *tcell.EventMo
msgView := roomView.MessageView()
x, y := event.Position()
- switch event.Buttons() {
- case tcell.WheelUp:
- if msgView.IsAtTop() {
- go view.LoadHistory(roomView.Room.ID)
- } else {
- msgView.AddScrollOffset(WheelScrollOffsetDiff)
+ switch {
+ case isInArea(x, y, msgView):
+ mx, my, _, _ := msgView.GetRect()
+ switch event.Buttons() {
+ case tcell.WheelUp:
+ if msgView.IsAtTop() {
+ go view.LoadHistory(roomView.Room.ID)
+ } else {
+ msgView.AddScrollOffset(WheelScrollOffsetDiff)
- view.parent.Render()
- }
- case tcell.WheelDown:
- msgView.AddScrollOffset(-WheelScrollOffsetDiff)
+ view.parent.Render()
+ }
+ case tcell.WheelDown:
+ msgView.AddScrollOffset(-WheelScrollOffsetDiff)
- view.parent.Render()
+ view.parent.Render()
- if msgView.ScrollOffset == 0 {
- roomView.Room.MarkRead()
- }
- default:
- if isInArea(x, y, msgView) {
- mx, my, _, _ := msgView.GetRect()
+ if msgView.ScrollOffset == 0 {
+ roomView.Room.MarkRead()
+ }
+ default:
if msgView.HandleClick(x-mx, y-my, event.Buttons()) {
view.parent.Render()
}
- } else if isInArea(x, y, view.roomList) && event.Buttons() == tcell.Button1 {
+ }
+ case isInArea(x, y, view.roomList):
+ switch event.Buttons() {
+ case tcell.WheelUp:
+ view.roomList.AddScrollOffset(-WheelScrollOffsetDiff)
+ view.parent.Render()
+ case tcell.WheelDown:
+ view.roomList.AddScrollOffset(WheelScrollOffsetDiff)
+ view.parent.Render()
+ case tcell.Button1:
_, rly, _, _ := msgView.GetRect()
n := y - rly + 1
view.SwitchRoom(view.roomList.Get(n))
- } else {
- debug.Print("Unhandled mouse event:", event.Buttons(), event.Modifiers(), x, y)
}
- return event
+ default:
+ debug.Print("Unhandled mouse event:", event.Buttons(), event.Modifiers(), x, y)
}
-
return event
}
@@ -305,7 +313,10 @@ func (view *MainView) GetRoom(roomID string) ifc.RoomView {
room, ok := view.rooms[roomID]
if !ok {
view.AddRoom(roomID)
- room, _ := view.rooms[roomID]
+ room, ok := view.rooms[roomID]
+ if !ok {
+ return nil
+ }
return room
}
return room