((MotionEvent *)event)->y -= video.screen_yoffset;
}
+ if (event->type == EVENT_BUTTONPRESS ||
+ event->type == EVENT_BUTTONRELEASE ||
+ event->type == EVENT_MOTIONNOTIFY)
+ {
+ // do not reset mouse cursor before all pending events have been processed
+ if (gfx.cursor_mode == cursor_mode_last &&
+ ((game_status == GAME_MODE_TITLE &&
+ gfx.cursor_mode == CURSOR_NONE) ||
+ (game_status == GAME_MODE_PLAYING &&
+ gfx.cursor_mode == CURSOR_PLAYFIELD)))
+ {
+ SetMouseCursor(CURSOR_DEFAULT);
+
+ DelayReached(&special_cursor_delay, 0);
+
+ cursor_mode_last = CURSOR_DEFAULT;
+ }
+ }
+
// non-motion events are directly passed to event handler functions
if (event->type != EVENT_MOTIONNOTIFY)
return 1;
gfx.mouse_x = motion->x;
gfx.mouse_y = motion->y;
- // do no reset mouse cursor before all pending events have been processed
- if (gfx.cursor_mode == cursor_mode_last &&
- ((game_status == GAME_MODE_TITLE &&
- gfx.cursor_mode == CURSOR_NONE) ||
- (game_status == GAME_MODE_PLAYING &&
- gfx.cursor_mode == CURSOR_PLAYFIELD)))
- {
- SetMouseCursor(CURSOR_DEFAULT);
-
- DelayReached(&special_cursor_delay, 0);
-
- cursor_mode_last = CURSOR_DEFAULT;
- }
-
// skip mouse motion events without pressed button outside level editor
if (button_status == MB_RELEASED &&
game_status != GAME_MODE_EDITOR && game_status != GAME_MODE_PLAYING)
{
// when playing, display a special mouse pointer inside the playfield
+ // display normal pointer if mouse pressed
+ if (button_status != MB_RELEASED)
+ DelayReached(&special_cursor_delay, 0);
+
if (gfx.cursor_mode != CURSOR_PLAYFIELD &&
cursor_inside_playfield &&
DelayReached(&special_cursor_delay, special_cursor_delay_value))
static void HandleButtonOrFinger(int mx, int my, int button)
{
+ boolean valid_mouse_event = (mx != -1 && my != -1 && button != -1);
+
if (game_status != GAME_MODE_PLAYING)
return;
{
if (strEqual(setup.touch.control_type, TOUCH_CONTROL_FOLLOW_FINGER))
HandleButtonOrFinger_FollowFinger(mx, my, button);
+ else if (level.has_mouse_events && valid_mouse_event)
+ SetPlayerMouseAction(mx, my, button);
}
}