+ gadget_pressed =
+ (button != 0 && gi == NULL && new_gi != NULL);
+ gadget_pressed_repeated =
+ (button != 0 && gi != NULL && new_gi == gi);
+ gadget_moving_inside =
+ (button != 0 && gi != NULL && new_gi == gi && motion_status);
+ gadget_moving_outside =
+ (button != 0 && gi != NULL && new_gi != gi && motion_status);
+ gadget_released =
+ (button == 0 && gi != NULL && new_gi == gi);
+
+ if (gi)
+ {
+ gi->event.x = mx - gi->x;
+ gi->event.y = my - gi->y;
+
+ if (gi->type == GD_TYPE_DRAWING_AREA)
+ {
+ gi->event.x /= gi->drawing.item_xsize;
+ gi->event.y /= gi->drawing.item_ysize;
+ }
+ }
+
+ if (gadget_pressed)
+ {
+ gi = new_gi;
+
+ DrawGadget(gi, TRUE, TRUE);
+
+ gi->state = GD_BUTTON_PRESSED;
+ gi->event.type = GD_EVENT_PRESSED;
+ gi->event.button = button;
+
+ /* initialize delay counter */
+ pressed_delay = 0;
+ DelayReached(&pressed_delay, GADGET_FRAME_DELAY);
+
+
+ /*
+ printf("new gadget pressed\n");
+ */
+
+
+ if (gi->event_mask & GD_EVENT_PRESSED)
+ gi->callback(gi);
+ }
+
+ if (gadget_pressed_repeated)
+ {
+ if (gi->event_mask & GD_EVENT_PRESSED_REPEATED &&
+ DelayReached(&pressed_delay, GADGET_FRAME_DELAY))
+ {
+
+
+ /*
+ printf("gadget pressed (repeated)\n");
+ */
+
+
+ gi->callback(gi);
+ }
+ }
+
+ if (gadget_moving_inside)
+ {
+ if (gi->state == GD_BUTTON_UNPRESSED)
+ DrawGadget(gi, TRUE, TRUE);
+
+ gi->state = GD_BUTTON_PRESSED;
+ gi->event.type = GD_EVENT_MOVING;
+
+
+ /*
+ printf("inside gadget\n");
+ */
+
+ if (gi->event_mask & GD_EVENT_MOVING)
+ gi->callback(gi);
+ }
+
+ if (gadget_moving_outside)
+ {
+ if (gi->state == GD_BUTTON_PRESSED)
+ DrawGadget(gi, FALSE, TRUE);
+
+ gi->state = GD_BUTTON_UNPRESSED;
+ gi->event.type = GD_EVENT_MOVING;
+
+
+ /*
+ printf("outside gadget\n");
+ */
+
+
+ if (gi->event_mask & GD_EVENT_MOVING)
+ gi->callback(gi);
+ }
+
+ if (gadget_released)
+ {
+ DrawGadget(gi, FALSE, TRUE);
+
+ gi->state = GD_BUTTON_UNPRESSED;
+ gi->event.type = GD_EVENT_RELEASED;
+
+
+ /*
+ printf("gadget released\n");
+ */
+
+
+ if (gi->event_mask & GD_EVENT_RELEASED)
+ gi->callback(gi);
+ }
+
+ if (button == 0)
+ gi = NULL;
+
+
+
+#if 0