mirror of
https://github.com/Ryujinx/SDL.git
synced 2024-12-26 06:35:38 +00:00
Fixed bug 2240 - On OS/X after calling SDL_SetWindowBordered right mouse clicks no longer register
philhassey On OS/X after calling SDL_SetWindowBordered right mouse clicks no longer register. Steps to Reproduce: 1. Open a windowed window on OS/X. (With the border on.) 2. e.button.button will give values 1,2,3 depending on which mouse button I click. 3. Call SDL_SetWindowBordered to disable the border. 4. e.button.button will only give values 1,2. 3 (right mouse button) stops coming through. Expected result: I expect all mouse buttons to register.
This commit is contained in:
parent
ef97aab9cf
commit
4295a92f97
|
@ -88,6 +88,31 @@ GetWindowStyle(SDL_Window * window)
|
||||||
return style;
|
return style;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SDL_bool
|
||||||
|
SetWindowStyle(SDL_Window * window, unsigned int style)
|
||||||
|
{
|
||||||
|
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||||
|
NSWindow *nswindow = data->nswindow;
|
||||||
|
|
||||||
|
if (![nswindow respondsToSelector: @selector(setStyleMask:)]) {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The view responder chain gets messed with during setStyleMask */
|
||||||
|
if ([[nswindow contentView] nextResponder] == data->listener) {
|
||||||
|
[[nswindow contentView] setNextResponder:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
[nswindow performSelector: @selector(setStyleMask:) withObject: (id)(uintptr_t)style];
|
||||||
|
|
||||||
|
/* The view responder chain gets messed with during setStyleMask */
|
||||||
|
if ([[nswindow contentView] nextResponder] != data->listener) {
|
||||||
|
[[nswindow contentView] setNextResponder:data->listener];
|
||||||
|
}
|
||||||
|
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@implementation Cocoa_WindowListener
|
@implementation Cocoa_WindowListener
|
||||||
|
|
||||||
|
@ -422,10 +447,9 @@ GetWindowStyle(SDL_Window * window)
|
||||||
- (void)windowWillEnterFullScreen:(NSNotification *)aNotification
|
- (void)windowWillEnterFullScreen:(NSNotification *)aNotification
|
||||||
{
|
{
|
||||||
SDL_Window *window = _data->window;
|
SDL_Window *window = _data->window;
|
||||||
NSWindow *nswindow = _data->nswindow;
|
|
||||||
|
|
||||||
window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
|
window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
|
||||||
[nswindow setStyleMask:(NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)];
|
SetWindowStyle(window, (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask));
|
||||||
|
|
||||||
isFullscreenSpace = YES;
|
isFullscreenSpace = YES;
|
||||||
inFullscreenTransition = YES;
|
inFullscreenTransition = YES;
|
||||||
|
@ -454,10 +478,9 @@ GetWindowStyle(SDL_Window * window)
|
||||||
- (void)windowWillExitFullScreen:(NSNotification *)aNotification
|
- (void)windowWillExitFullScreen:(NSNotification *)aNotification
|
||||||
{
|
{
|
||||||
SDL_Window *window = _data->window;
|
SDL_Window *window = _data->window;
|
||||||
NSWindow *nswindow = _data->nswindow;
|
|
||||||
|
|
||||||
window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP;
|
window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP;
|
||||||
[nswindow setStyleMask:GetWindowStyle(window)];
|
SetWindowStyle(window, GetWindowStyle(window));
|
||||||
|
|
||||||
isFullscreenSpace = NO;
|
isFullscreenSpace = NO;
|
||||||
inFullscreenTransition = YES;
|
inFullscreenTransition = YES;
|
||||||
|
@ -1173,9 +1196,7 @@ void
|
||||||
Cocoa_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered)
|
Cocoa_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered)
|
||||||
{
|
{
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow;
|
if (SetWindowStyle(window, GetWindowStyle(window))) {
|
||||||
if ([nswindow respondsToSelector:@selector(setStyleMask:)]) {
|
|
||||||
[nswindow setStyleMask:GetWindowStyle(window)];
|
|
||||||
if (bordered) {
|
if (bordered) {
|
||||||
Cocoa_SetWindowTitle(_this, window); /* this got blanked out. */
|
Cocoa_SetWindowTitle(_this, window); /* this got blanked out. */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue