Add a new hint SDL_HINT_MAC_MOUSE_FOCUS_CLICKTHROUGH, which allows mouse click events to occur when clicking to focus a window in Mac OS X.

Fixes bug #3300.
This commit is contained in:
Alex Szpakowski 2016-04-02 11:54:05 -03:00
parent 5520ed9cc2
commit 88372277b7
2 changed files with 25 additions and 11 deletions

View File

@ -547,6 +547,13 @@ 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.
*

View File

@ -80,20 +80,20 @@
- (void)sendEvent:(NSEvent *)event
{
[super sendEvent:event];
[super sendEvent:event];
if ([event type] != NSLeftMouseUp) {
return;
}
if ([event type] != NSLeftMouseUp) {
return;
}
id delegate = [self delegate];
if (![delegate isKindOfClass:[Cocoa_WindowListener class]]) {
return;
}
id delegate = [self delegate];
if (![delegate isKindOfClass:[Cocoa_WindowListener class]]) {
return;
}
if ([delegate isMoving]) {
[delegate windowDidFinishMoving];
}
if ([delegate isMoving]) {
[delegate windowDidFinishMoving];
}
}
/* We'll respond to selectors by doing nothing so we don't beep.
@ -1093,6 +1093,7 @@ SetWindowStyle(SDL_Window * window, unsigned int style)
- (void)rightMouseDown:(NSEvent *)theEvent;
- (BOOL)mouseDownCanMoveWindow;
- (void)drawRect:(NSRect)dirtyRect;
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent;
@end
@implementation SDLView
@ -1132,6 +1133,12 @@ SetWindowStyle(SDL_Window * window, unsigned int style)
cursor:[NSCursor invisibleCursor]];
}
}
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
const char *hint = SDL_GetHint(SDL_HINT_MAC_MOUSE_FOCUS_CLICKTHROUGH);
return hint && *hint != '0';
}
@end
static int