aboutsummaryrefslogtreecommitdiffstats
path: root/pugl/pugl_x11.c
diff options
context:
space:
mode:
Diffstat (limited to 'pugl/pugl_x11.c')
-rw-r--r--pugl/pugl_x11.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/pugl/pugl_x11.c b/pugl/pugl_x11.c
index d8685b2..735cdb1 100644
--- a/pugl/pugl_x11.c
+++ b/pugl/pugl_x11.c
@@ -238,8 +238,23 @@ puglProcessEvents(PuglWindow* win)
}
break;
case ButtonPress:
+ if (event.xbutton.button >= 4 && event.xbutton.button <= 7) {
+ if (win->scrollFunc) {
+ int dx = 0, dy = 0;
+ switch (event.xbutton.button) {
+ case 4: dy = 1; break;
+ case 5: dy = -1; break;
+ case 6: dx = -1; break;
+ case 7: dx = 1; break;
+ }
+ win->scrollFunc(win, dx, dy);
+ }
+ break;
+ }
+ // nobreak
case ButtonRelease:
- if (win->mouseFunc) {
+ if (win->mouseFunc &&
+ (event.xbutton.button < 4 || event.xbutton.button > 7)) {
win->mouseFunc(win,
event.xbutton.button, event.type == ButtonPress,
event.xbutton.x, event.xbutton.y);