i == ED_CTRL_ID_WRAP_RIGHT ||
i == ED_CTRL_ID_WRAP_UP ||
i == ED_CTRL_ID_WRAP_DOWN)
- event_mask = GD_EVENT_PRESSED_REPEATED;
+ event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
else
event_mask = GD_EVENT_RELEASED;
int gd_xoffset;
int gd_x1, gd_x2, gd_y;
int id = counter_info[counter_id].gadget_id + i;
+ unsigned long event_mask;
+
+ event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
gd_xoffset = (i == 0 ? ED_BUTTON_MINUS_XPOS : ED_BUTTON_PLUS_XPOS);
gd_x1 = DOOR_GFX_PAGEX4 + gd_xoffset;
GDI_STATE, GD_BUTTON_UNPRESSED,
GDI_DESIGN_UNPRESSED, gd_pixmap, gd_x1, gd_y,
GDI_DESIGN_PRESSED, gd_pixmap, gd_x2, gd_y,
- GDI_EVENT_MASK, GD_EVENT_PRESSED_REPEATED,
+ GDI_EVENT_MASK, event_mask,
GDI_CALLBACK, HandleCounterButtons,
GDI_END);
DrawMiniLevel(level_xpos, level_ypos);
}
-/*
-static void HandleDrawingAreas(int mx, int my, int button)
-*/
-
static void HandleDrawingAreas(struct GadgetInfo *gi)
{
- static int last_button = 0;
- static int last_element = 0;
static boolean started_inside_drawing_area = FALSE;
- boolean inside_drawing_area;
+ boolean inside_drawing_area = !gi->event.off_borders;
boolean button_press_event;
boolean button_release_event;
int new_element;
int button = gi->event.button;
- int mx = SX + gi->event.x * MINI_TILEX;
- int my = SX + gi->event.y * MINI_TILEY;
- int min_mx = SX, max_mx = SX + SXSIZE -1;
- int min_my = SY, max_my = SY + SYSIZE -1;
- int sx, sy;
+ int sx = gi->event.x, sy = gi->event.y;
int lx, ly;
int x, y;
if (edit_mode != ED_MODE_DRAWING)
return;
- button_press_event = (last_button == 0 && button != 0);
- button_release_event = (last_button != 0 && button == 0);
- last_button = button;
-
- inside_drawing_area =
- (mx >= min_mx && mx <= max_mx && my >= min_my && my <= max_my);
+ button_press_event = (gi->event.type == GD_EVENT_PRESSED);
+ button_release_event = (gi->event.type == GD_EVENT_RELEASED);
- mx = (mx < min_mx ? min_mx : mx > max_mx ? max_mx : mx);
- my = (my < min_my ? min_my : my > max_my ? max_my : my);
- sx = (mx - SX) / MINI_TILEX;
- sy = (my - SY) / MINI_TILEY;
+ sx = (sx < 0 ? 0 : sx > 2*SCR_FIELDX - 1 ? 2*SCR_FIELDX - 1 : sx);
+ sy = (sy < 0 ? 0 : sy > 2*SCR_FIELDY - 1 ? 2*SCR_FIELDY - 1 : sy);
lx = sx + level_xpos;
ly = sy + level_ypos;
if (!started_inside_drawing_area)
return;
+ printf("%d,%d, %d,%d, %d,%d.\n",
+ gi->event.x, gi->event.y, sx, sy, lx, ly);
+
if ((!button && !button_release_event) ||
sx > lev_fieldx || sy > lev_fieldy ||
(sx == 0 && level_xpos<0) ||
}
else if (button_release_event)
{
- draw_func(start_sx, start_sy, sx, sy, last_element, TRUE);
+ draw_func(start_sx, start_sy, sx, sy, new_element, TRUE);
CopyLevelToUndoBuffer();
}
else if (last_sx != sx || last_sy != sy)
default:
break;
}
-
- last_element = new_element;
}
static void HandleControlButtons(struct GadgetInfo *gi)
{
int id = gi->custom_id;
- int event_type = gi->event.type;
int button = gi->event.button;
int step = (button == 1 ? 1 : button == 2 ? 5 : 10);
int new_element;
break;
default:
- if (event_type == GD_EVENT_PRESSED)
+ if (gi->event.type == GD_EVENT_PRESSED)
printf("default: HandleControlButtons: GD_EVENT_PRESSED\n");
- else if (event_type == GD_EVENT_RELEASED)
+ else if (gi->event.type == GD_EVENT_RELEASED)
printf("default: HandleControlButtons: GD_EVENT_RELEASED\n");
- else if (event_type == GD_EVENT_MOVING)
+ else if (gi->event.type == GD_EVENT_MOVING)
printf("default: HandleControlButtons: GD_EVENT_MOVING\n");
else
printf("default: HandleControlButtons: ?\n");