http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.20.tar.gz
[xscreensaver] / hacks / glx / klein.c
index 2f3e7e74d9915c92512fb5bcf5c818927436a997..07e6f7ced7439b86081f2a4a63b64bbf53474813 100644 (file)
@@ -300,14 +300,20 @@ klein_handle_event (ModeInfo *mi, XEvent *event)
 {
        kleinstruct *kp = &klein[MI_SCREEN(mi)];
 
-       if (event->xany.type == ButtonPress && event->xbutton.button & Button1) {
+       if (event->xany.type == ButtonPress && event->xbutton.button == Button1) {
                        kp->button_down_p = True;
                        gltrackball_start (kp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi));
                        return True;
-       } else if (event->xany.type == ButtonRelease && event->xbutton.button & Button1) {
+       } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) {
                        kp->button_down_p = False;
                        return True;
-       } else if (event->xany.type == MotionNotify && kp->button_down_p) {
+       } else if (event->xany.type == ButtonPress &&
+               (event->xbutton.button == Button4 ||
+                event->xbutton.button == Button5)) {
+      gltrackball_mousewheel (kp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    } else if (event->xany.type == MotionNotify && kp->button_down_p) {
                        gltrackball_track (kp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi));
                        return True;
        }