shiny/driver: (X11) handle mouse.ButtonWheel{Left|Right}; send DirStep.
Also handle mouse.ButtonWheel{Up|Down} for the gldriver X11 flavor.
Change-Id: Ib2fd8ae4ae3ea93a37b0ae1ea40594ce1c3c9b46
Reviewed-on: https://go-review.googlesource.com/24635
Reviewed-by: David Crawshaw <crawshaw@golang.org>
diff --git a/shiny/driver/gldriver/x11.go b/shiny/driver/gldriver/x11.go
index e9b7427..1cc913e 100644
--- a/shiny/driver/gldriver/x11.go
+++ b/shiny/driver/gldriver/x11.go
@@ -216,10 +216,27 @@
// TODO: should a mouse.Event have a separate MouseModifiers field, for
// which buttons are pressed during a mouse move?
+ btn := mouse.Button(button)
+ switch btn {
+ case 4:
+ btn = mouse.ButtonWheelUp
+ case 5:
+ btn = mouse.ButtonWheelDown
+ case 6:
+ btn = mouse.ButtonWheelLeft
+ case 7:
+ btn = mouse.ButtonWheelRight
+ }
+ if btn.IsWheel() {
+ if dir != uint8(mouse.DirPress) {
+ return
+ }
+ dir = uint8(mouse.DirStep)
+ }
w.Send(mouse.Event{
X: float32(x),
Y: float32(y),
- Button: mouse.Button(button),
+ Button: btn,
Modifiers: x11key.KeyModifiers(state),
Direction: mouse.Direction(dir),
})
diff --git a/shiny/driver/x11driver/window.go b/shiny/driver/x11driver/window.go
index e056b67..3f5ca90 100644
--- a/shiny/driver/x11driver/window.go
+++ b/shiny/driver/x11driver/window.go
@@ -129,11 +129,21 @@
// TODO: should a mouse.Event have a separate MouseModifiers field, for
// which buttons are pressed during a mouse move?
btn := mouse.Button(b)
- switch b {
+ switch btn {
case 4:
btn = mouse.ButtonWheelUp
case 5:
btn = mouse.ButtonWheelDown
+ case 6:
+ btn = mouse.ButtonWheelLeft
+ case 7:
+ btn = mouse.ButtonWheelRight
+ }
+ if btn.IsWheel() {
+ if dir != mouse.DirPress {
+ return
+ }
+ dir = mouse.DirStep
}
w.Send(mouse.Event{
X: float32(x),