mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-19 18:13:41 -05:00
Forward mouse events to the roster view
This commit is contained in:
parent
9cecf0bd02
commit
99bd36f216
2 changed files with 44 additions and 10 deletions
|
@ -217,6 +217,9 @@ func (view *MainView) OnMouseEvent(event mauview.MouseEvent) bool {
|
|||
if view.modal != nil {
|
||||
return view.modal.OnMouseEvent(event)
|
||||
}
|
||||
if view.config.Preferences.DisplayMode == config.DisplayModeModern {
|
||||
return view.rosterView.OnMouseEvent(event)
|
||||
}
|
||||
if view.config.Preferences.HideRoomList {
|
||||
return view.roomView.OnMouseEvent(event)
|
||||
}
|
||||
|
|
|
@ -116,6 +116,22 @@ func (rstr *RosterView) Last() *rooms.Room {
|
|||
return rstr.rooms[len(rstr.rooms)-1]
|
||||
}
|
||||
|
||||
func (rstr *RosterView) ScrollNext() {
|
||||
if index := rstr.index(rstr.selected); index == -1 || index == len(rstr.rooms)-1 {
|
||||
rstr.selected = rstr.First()
|
||||
} else {
|
||||
rstr.selected = rstr.rooms[index+1]
|
||||
}
|
||||
}
|
||||
|
||||
func (rstr *RosterView) ScrollPrev() {
|
||||
if index := rstr.index(rstr.selected); index < 1 {
|
||||
rstr.selected = rstr.Last()
|
||||
} else {
|
||||
rstr.selected = rstr.rooms[index-1]
|
||||
}
|
||||
}
|
||||
|
||||
func (rstr *RosterView) Draw(screen mauview.Screen) {
|
||||
if rstr.focused {
|
||||
if roomView, ok := rstr.parent.getRoomView(rstr.selected.ID, true); ok {
|
||||
|
@ -214,17 +230,9 @@ func (rstr *RosterView) OnKeyEvent(event mauview.KeyEvent) bool {
|
|||
|
||||
switch rstr.parent.config.Keybindings.Roster[kb] {
|
||||
case "next_room":
|
||||
if index := rstr.index(rstr.selected); index == -1 || index == len(rstr.rooms)-1 {
|
||||
rstr.selected = rstr.First()
|
||||
} else {
|
||||
rstr.selected = rstr.rooms[index+1]
|
||||
}
|
||||
rstr.ScrollNext()
|
||||
case "prev_room":
|
||||
if index := rstr.index(rstr.selected); index < 1 {
|
||||
rstr.selected = rstr.Last()
|
||||
} else {
|
||||
rstr.selected = rstr.rooms[index-1]
|
||||
}
|
||||
rstr.ScrollPrev()
|
||||
case "clear":
|
||||
rstr.selected = nil
|
||||
case "quit":
|
||||
|
@ -236,3 +244,26 @@ func (rstr *RosterView) OnKeyEvent(event mauview.KeyEvent) bool {
|
|||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (rstr *RosterView) OnMouseEvent(event mauview.MouseEvent) bool {
|
||||
if rstr.focused {
|
||||
if roomView, ok := rstr.parent.getRoomView(rstr.selected.ID, true); ok {
|
||||
return roomView.OnMouseEvent(event)
|
||||
}
|
||||
}
|
||||
|
||||
if event.HasMotion() {
|
||||
return false
|
||||
}
|
||||
|
||||
switch event.Buttons() {
|
||||
case tcell.WheelUp:
|
||||
rstr.ScrollPrev()
|
||||
return true
|
||||
case tcell.WheelDown:
|
||||
rstr.ScrollNext()
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue