Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Mac: [NSApp keyWindow] is not valid in windowDidBecomeKey:
This fixes weird behavior on Mac where our first responder reverts to the window
itself, rather than the SDLTranslatorResponder, after the window has lost focus
once. This causes Escape to call cancelOperation: on the NSWindow, which by
default removes our fullscreen-ness.

When someone has turned off SDL_TEXTINPUT we should probably set another initial
responder that handles the Escape behavior, so that SDL_TEXTINPUT doesn't change
fullscreen behavior (and possibly other behavior) like it does now.
  • Loading branch information
jorgenpt committed Jan 30, 2014
1 parent 109fe0e commit 366b172
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/video/cocoa/SDL_cocoakeyboard.m
Expand Up @@ -506,7 +506,12 @@ - (NSArray *) validAttributesForMarkedText
{
SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSView *parentView = [[NSApp keyWindow] contentView];
SDL_Window *window = SDL_GetKeyboardFocus();
NSWindow *nswindow = nil;
if (window)
nswindow = ((SDL_WindowData*)window->driverdata)->nswindow;

NSView *parentView = [nswindow contentView];

/* We only keep one field editor per process, since only the front most
* window can receive text input events, so it make no sense to keep more
Expand All @@ -523,7 +528,7 @@ - (NSArray *) validAttributesForMarkedText
/* DEBUG_IME(@"add fieldEdit to window contentView"); */
[data->fieldEdit removeFromSuperview];
[parentView addSubview: data->fieldEdit];
[[NSApp keyWindow] makeFirstResponder: data->fieldEdit];
[nswindow makeFirstResponder: data->fieldEdit];
}

[pool release];
Expand Down

0 comments on commit 366b172

Please sign in to comment.