NSWindow covers multiple screens in Mavericks

I have a full-screen application that opens NSWindow, which will cover all available displays.

NSRect screenArea = {{0,0},{0,0}};
for(int i=0; i<[[NSScreen screens] count]; i++) {
    screenArea = NSUnionRect(screenArea, [[[NSScreen screens] objectAtIndex:i] frame]);
}

self.fullScreenView = [[MDScreenShotImageView alloc] initWithFrame:screenArea];
[self.fullScreenView setDelegate:self];

self.fullScreenWindow = [[MDWindow alloc] initWithContentRect:screenArea styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
[self.fullScreenWindow setDelegate:self];
[self.fullScreenWindow setReleasedWhenClosed:NO];
[self.fullScreenWindow setMovableByWindowBackground:NO];
[self.fullScreenWindow setBackgroundColor:[NSColor whiteColor]];
[self.fullScreenWindow setLevel:NSScreenSaverWindowLevel];
[self.fullScreenWindow setOpaque:YES];
[self.fullScreenWindow setHasShadow:NO];
[self.fullScreenWindow setBackgroundColor:[NSColor blackColor]];
[self.fullScreenWindow setContentView:self.fullScreenView];

In Mountain Lion, it worked great! I had a full-screen window covering both of my displays (which are installed side by side in the System Preferences panel). In Mavericks, this no longer works. OSX will automatically disable my NSWindow, so that only a part will be visible on the largest screen. The part on the other screen is disabled, and nothing is visible on this screen. I have box intersection lines on NSWindow to illustrate below: enter image description here

, . , " ", " " " ". enter image description here

, . , , , . ? enter image description here

1: , , . :

NSRect rect1 = [[[NSScreen screens] objectAtIndex:0] frame];
NSRect rect2 = [[[NSScreen screens] objectAtIndex:1] frame];

MDScreenShotImageView *screenShotImageView = [[MDScreenShotImageView alloc] initWithFrame:rect1];
self.fullScreenView = screenShotImageView;
[self.fullScreenView setDelegate:self];

MDWindow *window = [[MDWindow alloc] initWithContentRect:rect1 styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
self.fullScreenWindow = window;

[self.fullScreenWindow setDelegate:self];
[self.fullScreenWindow setReleasedWhenClosed:NO];
[self.fullScreenWindow setMovableByWindowBackground:NO];
[self.fullScreenWindow setBackgroundColor:[NSColor whiteColor]];
[self.fullScreenWindow setLevel:NSScreenSaverWindowLevel];
[self.fullScreenWindow setOpaque:YES];
[self.fullScreenWindow setHasShadow:NO];
[self.fullScreenWindow setBackgroundColor:[NSColor blackColor]];
[self.fullScreenWindow setContentView:self.fullScreenView];


MDScreenShotImageView *screenShotImageView2 = [[MDScreenShotImageView alloc] initWithFrame:rect2];
self.fullScreenView2 = screenShotImageView2;
[self.fullScreenView2 setDelegate:self];

MDWindow *window2 = [[MDWindow alloc] initWithContentRect:rect2 styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
self.fullScreenWindow2 = window2;

[self.fullScreenWindow2 setDelegate:self];
[self.fullScreenWindow2 setReleasedWhenClosed:NO];
[self.fullScreenWindow2 setMovableByWindowBackground:NO];
[self.fullScreenWindow2 setBackgroundColor:[NSColor whiteColor]];
[self.fullScreenWindow2 setLevel:NSScreenSaverWindowLevel];
[self.fullScreenWindow2 setOpaque:YES];
[self.fullScreenWindow2 setHasShadow:NO];
[self.fullScreenWindow2 setBackgroundColor:[NSColor blackColor]];
[self.fullScreenWindow2 setContentView:self.fullScreenView2];

[self.fullScreenWindow display];
[self.fullScreenWindow2 display];

, , , - , .

+3
2

?

+1

:

Apple, Apple , , , API , . , , , , .

+3

All Articles