http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.20.tar.gz
[xscreensaver] / hacks / glx / bouncingcow.c
index 3f85b598bba753686ba761146d19b1e5476f28f0..71bb56cbf6fcd190e449a3500661a2918652a1ba 100644 (file)
@@ -23,7 +23,7 @@ extern XtAppContext app;
 #define EVENT_MASK      PointerMotionMask
 #define sws_opts       xlockmore_opts
 
-#define DEF_SPEED       "1.0"
+#define DEF_SPEED       "0.7"
 #define DEF_TEXTURE     "(none)"
 
 #define DEFAULTS       "*delay:        30000       \n" \
@@ -100,7 +100,7 @@ static const char *do_texture;
 static XrmOptionDescRec opts[] = {
   { "-speed",      ".speed",     XrmoptionSepArg, 0 },
   {"-texture",     ".texture",   XrmoptionSepArg, 0 },
-  {"+texture",     ".texture",   XrmoptionNoArg, (caddr_t) "(none)" },
+  {"+texture",     ".texture",   XrmoptionNoArg, "(none)" },
 };
 
 static argtype vars[] = {
@@ -196,7 +196,7 @@ cow_handle_event (ModeInfo *mi, XEvent *event)
   cow_configuration *bp = &bps[MI_SCREEN(mi)];
 
   if (event->xany.type == ButtonPress &&
-      event->xbutton.button & Button1)
+      event->xbutton.button == Button1)
     {
       bp->button_down_p = True;
       gltrackball_start (bp->trackball,
@@ -205,11 +205,19 @@ cow_handle_event (ModeInfo *mi, XEvent *event)
       return True;
     }
   else if (event->xany.type == ButtonRelease &&
-           event->xbutton.button & Button1)
+           event->xbutton.button == Button1)
     {
       bp->button_down_p = False;
       return True;
     }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5))
+    {
+      gltrackball_mousewheel (bp->trackball, event->xbutton.button, 10,
+                              !event->xbutton.state);
+      return True;
+    }
   else if (event->xany.type == MotionNotify &&
            bp->button_down_p)
     {