diff options
author | Tulir Asokan <tulir@maunium.net> | 2018-04-30 12:40:28 +0300 |
---|---|---|
committer | Tulir Asokan <tulir@maunium.net> | 2018-04-30 12:40:28 +0300 |
commit | c5ec94a78f712332dcbe8002d2d1ae9bd288a2c2 (patch) | |
tree | 4870661aeb26cd975575c11f3eeb13c129ac4d76 /ui/view-main.go | |
parent | d8dba100e041f6e6fc7cdd546ae161d5e52f0582 (diff) |
Add mouse scrolling support to room list (ref #34)
Diffstat (limited to 'ui/view-main.go')
-rw-r--r-- | ui/view-main.go | 57 |
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 |