+Bool engine_handle_event (ModeInfo *mi, XEvent *event) {
+ Engine *e = &engine[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ event->xbutton.button & Button1)
+ {
+ e->button_down_p = True;
+ gltrackball_start (e->trackball,
+ event->xbutton.x, event->xbutton.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ movepaused = 1;
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button & Button1) {
+ e->button_down_p = False;
+ movepaused = 0;
+ return True;
+ }
+ else if (event->xany.type == MotionNotify &&
+ e->button_down_p) {
+ gltrackball_track (e->trackball,
+ event->xmotion.x, event->xmotion.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+ return False;
+}
+