Prevent forwarding only mouse UP events

Some mouse clicks DOWN are captured for shortcuts, but the matching UP
event was still forwarded to the device.

Instead, capture both DOWN and UP for shortcuts, and do nothing on UP.
This commit is contained in:
Romain Vimont 2021-04-16 17:53:37 +02:00
parent edee69d637
commit f0f96fbc3d

View File

@ -646,13 +646,17 @@ input_manager_process_mouse_button(struct input_manager *im,
} }
bool down = event->type == SDL_MOUSEBUTTONDOWN; bool down = event->type == SDL_MOUSEBUTTONDOWN;
if (!im->forward_all_clicks && down) { if (!im->forward_all_clicks) {
if (control && event->button == SDL_BUTTON_RIGHT) { if (control && event->button == SDL_BUTTON_RIGHT) {
if (down) {
press_back_or_turn_screen_on(im->controller); press_back_or_turn_screen_on(im->controller);
}
return; return;
} }
if (control && event->button == SDL_BUTTON_MIDDLE) { if (control && event->button == SDL_BUTTON_MIDDLE) {
if (down) {
action_home(im->controller, ACTION_DOWN | ACTION_UP); action_home(im->controller, ACTION_DOWN | ACTION_UP);
}
return; return;
} }
@ -665,7 +669,9 @@ input_manager_process_mouse_button(struct input_manager *im,
bool outside = x < r->x || x >= r->x + r->w bool outside = x < r->x || x >= r->x + r->w
|| y < r->y || y >= r->y + r->h; || y < r->y || y >= r->y + r->h;
if (outside) { if (outside) {
if (down) {
screen_resize_to_fit(im->screen); screen_resize_to_fit(im->screen);
}
return; return;
} }
} }