From a13da2faa790c44211d6aed2ebd1d6421d8fdc4b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 29 Sep 2016 13:34:49 -0700 Subject: [PATCH] Generalized the hint for whether the application gets a mouse event when clicking on the window to activate it, and is now named SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH. The behavior is defined to not receive the click event, and this hint allows you to override that. --- include/SDL_hints.h | 34 +++++++++++++++++-------------- src/video/cocoa/SDL_cocoawindow.m | 6 +++++- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 446349283..f27a58260 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -233,16 +233,27 @@ extern "C" { #define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" /** -* \brief A variable controlling whether relative mouse mode is implemented using mouse warping -* -* This variable can be set to the following values: -* "0" - Relative mouse mode uses raw input -* "1" - Relative mouse mode uses mouse warping -* -* By default SDL will use raw input for relative mouse mode -*/ + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ #define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + /** * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true. * @@ -575,13 +586,6 @@ extern "C" { */ #define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" -/** - * \brief Allow mouse click events when clicking to focus an SDL window - * - * This hint only applies to Mac OS X. - */ -#define SDL_HINT_MAC_MOUSE_FOCUS_CLICKTHROUGH "SDL_MAC_MOUSE_FOCUS_CLICKTHROUGH" - /** * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. * diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 3c8623629..37f7b7fb8 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -1118,7 +1118,11 @@ SetWindowStyle(SDL_Window * window, NSUInteger style) - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent { - const char *hint = SDL_GetHint(SDL_HINT_MAC_MOUSE_FOCUS_CLICKTHROUGH); + const char *hint = SDL_GetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH); + if (!hint) { + /* Check older hint for backwards compatibility */ + hint = SDL_GetHint("SDL_MAC_MOUSE_FOCUS_CLICKTHROUGH"); + } return hint && *hint != '0'; } @end