diff --git a/BasiliskII/src/MacOSX/utils_macosx.mm b/BasiliskII/src/MacOSX/utils_macosx.mm index 55dd4a85..b2c66798 100644 --- a/BasiliskII/src/MacOSX/utils_macosx.mm +++ b/BasiliskII/src/MacOSX/utils_macosx.mm @@ -74,11 +74,7 @@ void make_window_transparent(SDL_Window * window) NSWindow *cocoaWindow = wmInfo.info.cocoa.window; NSView *sdlView = cocoaWindow.contentView; sdlView.layer.backgroundColor = [NSColor clearColor].CGColor; - if (SDL_GetWindowData(window, "maskLayer") == NULL) { - CALayer *maskLayer = [CAShapeLayer layer]; - sdlView.layer.mask = maskLayer; - SDL_SetWindowData(window, "maskLayer", maskLayer); - + if (SDL_GetWindowData(window, "observing") == NULL) { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserverForName:NSWindowDidBecomeKeyNotification object:cocoaWindow queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { NSWindow *window = (NSWindow*)note.object; @@ -91,6 +87,12 @@ void make_window_transparent(SDL_Window * window) [window setLevel:NSNormalWindowLevel]; [window setIsVisible:YES]; }]; + SDL_SetWindowData(window, "observing", nc); + } + if (SDL_GetWindowData(window, "maskLayer") == NULL) { + CALayer *maskLayer = [CAShapeLayer layer]; + sdlView.layer.mask = maskLayer; + SDL_SetWindowData(window, "maskLayer", maskLayer); } cocoaWindow.backgroundColor = [NSColor clearColor]; cocoaWindow.hasShadow = NO;