jdelaune
jdelaune

Reputation: 161

Cocoa fullscreen window on secondary display

I have the follow code which mostly works apart from I can never see the myWindow that I create. If I do [myWindow isVisible] it returns 1. The CGDisplayCapture works fine as it blanks out the screen. I've checked all the variables I pass into the NSWindow init method.

Am I missing something really obvious? Here's the code:

// Find the screen we want
NSScreen *screen                = [[NSScreen screens] objectAtIndex:1];
NSNumber *displayID             = [[screen deviceDescription] 
                                  objectForKey:@"NSScreenNumber"];
CGDirectDisplayID CGDisplayID   = (CGDirectDisplayID) [displayID intValue];

// Capture the secondary display
if (CGDisplayCapture( CGDisplayID ) != kCGErrorSuccess) {
  NSLog( @"Couldn't capture the secondary display" );
}

// Draw a new window to fill the screen
NSRect screenRect = [screen frame];
NSWindow *myWindow = [[NSWindow alloc] initWithContentRect:screenRect
                                               styleMask:NSBorderlessWindowMask
                                                 backing:NSBackingStoreBuffered
                                                   defer:NO
                                                  screen:screen];

// Set the level of the new window and other settings
NSInteger windowLevel = CGShieldingWindowLevel();
[myWindow setLevel: windowLevel];
[myWindow setBackgroundColor:[NSColor blueColor]];
[myWindow makeKeyAndOrderFront:nil];

Cheers

Upvotes: 2

Views: 1995

Answers (2)

Joshua Nozzi
Joshua Nozzi

Reputation: 61238

If you can require 10.5 or above, please use NSView's -enterFullScreenMode:withOptions: and the matching -exitFullScreenModeWithOptions:. This properly shifts the responsibility to a container view (which can still have its own complex set of subviews) and frees you from some of the gotcha's of manually messing with window levels, etc.

Upvotes: 3

NSResponder
NSResponder

Reputation: 16861

What does this window look like if you don't make it full-screen?

I don't see you adding any views to the window you're creating. If your window's content view is an NSView instance, it's not going to do any drawing.

Upvotes: 1

Related Questions