From b470cd9b09087556660579a5d20b1ff06b3056f3 Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Fri, 5 Apr 2019 08:36:31 +0200 Subject: [PATCH] Android: default SDL_HINT_MOUSE_TOUCH_EVENTS to 1 as previous behaviour --- WhatsNew.txt | 3 ++- include/SDL_hints.h | 1 + src/events/SDL_mouse.c | 16 ++++++++++++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/WhatsNew.txt b/WhatsNew.txt index 95cb4425aa2da..34860cb1590ef 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -8,7 +8,8 @@ This is a list of major changes in SDL's version history. Android: * Removed SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH (replaced by SDL_HINT_MOUSE_TOUCH_EVENTS and SDL_HINT_TOUCH_MOUSE_EVENTS) - (Changed old default behavior from hardware mouse triggering touch events to now not doing so (SDL_MOUSE_TOUCH_EVENTS=0) to match the default behavior of other platforms") + SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH=1, should be replaced by setting both previous hints to 0. + SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH=0, should be replaced by setting both previous hints to 1. --------------------------------------------------------------------------- diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 8cbcc3e204200..20d510be3ec2e 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -323,6 +323,7 @@ extern "C" { * "1" - Mouse events will generate touch events * * By default SDL will *not* generate touch events for mouse events + * Except for Android, they are generated by default. */ #define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 893ecc72bd3cf..ca92f2f4b33ca 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -112,14 +112,22 @@ SDL_MouseTouchEventsChanged(void *userdata, const char *name, const char *oldVal { SDL_Mouse *mouse = (SDL_Mouse *)userdata; - if (hint && (*hint == '1' || SDL_strcasecmp(hint, "true") == 0)) { - - SDL_AddTouch(SDL_MOUSE_TOUCHID, SDL_TOUCH_DEVICE_DIRECT, "mouse_input"); - + if (hint == NULL || *hint == '\0') { + /* Default */ +#if defined(__ANDROID__) + mouse->mouse_touch_events = SDL_TRUE; +#else + mouse->mouse_touch_events = SDL_FALSE; +#endif + } else if (*hint == '1' || SDL_strcasecmp(hint, "true") == 0) { mouse->mouse_touch_events = SDL_TRUE; } else { mouse->mouse_touch_events = SDL_FALSE; } + + if (mouse->mouse_touch_events) { + SDL_AddTouch(SDL_MOUSE_TOUCHID, SDL_TOUCH_DEVICE_DIRECT, "mouse_input"); + } } /* Public functions */