Make some mouse processors ops optional

Do not force all mouse processors implementations to implement scroll
events or touch events.
This commit is contained in:
Romain Vimont
2021-12-30 15:08:42 +01:00
parent 1b8cbcbc65
commit 850348ab60
2 changed files with 32 additions and 0 deletions

View File

@@ -659,6 +659,7 @@ input_manager_process_mouse_motion(struct input_manager *im,
im->forward_all_clicks),
};
assert(im->mp->ops->process_mouse_motion);
im->mp->ops->process_mouse_motion(im->mp, &evt);
if (im->vfinger_down) {
@@ -673,6 +674,11 @@ input_manager_process_mouse_motion(struct input_manager *im,
static void
input_manager_process_touch(struct input_manager *im,
const SDL_TouchFingerEvent *event) {
if (!im->mp->ops->process_touch) {
// The mouse processor does not support touch events
return;
}
int dw;
int dh;
SDL_GL_GetDrawableSize(im->screen->window, &dw, &dh);
@@ -766,6 +772,7 @@ input_manager_process_mouse_button(struct input_manager *im,
im->forward_all_clicks),
};
assert(im->mp->ops->process_mouse_click);
im->mp->ops->process_mouse_click(im->mp, &evt);
// Pinch-to-zoom simulation.
@@ -797,6 +804,11 @@ input_manager_process_mouse_button(struct input_manager *im,
static void
input_manager_process_mouse_wheel(struct input_manager *im,
const SDL_MouseWheelEvent *event) {
if (!im->mp->ops->process_mouse_scroll) {
// The mouse processor does not support scroll events
return;
}
// mouse_x and mouse_y are expressed in pixels relative to the window
int mouse_x;
int mouse_y;