Hello everyone,

I have an app right now that I've added a fullscreen mode to.  RIght
now it works for fullscreen when I go to fullscreen on the main
display.  If I attempt to do this on the secondary display, I get a
blank screen.

I think one problem is probably the way I am identifying which screen
to use -- I use [NSWindow screen] to find where my current window is
and use that to capture the screen and place a new fullscreen window
over it.  One potential problem I see is when the window spans across
two displays -- how do I reasonably choose which screen to display it
on?  What screen does [NSWindow screen] return?

So to recap -- this code currently works correctly in the case when
the _mainWindow is on the primary display.  The code does not work
correctly when it is on a secondary display.  And I haven't tested the
case where the code spans displays -- I am assuming that it just flat
out doesn't work :)

here is the code from my enterFullscreen method -- mostly pulled from
sample code off developer.apple.com:

-(void)enterFullscreen
{
        NSScreen *windowScreen = [_mainWindow screen];
        NSDictionary *screenInfo = [windowScreen deviceDescription];
        NSNumber *screenID = [screenInfo objectForKey:@"NSScreenNumber"];
        
        // capture the screen
        CGDirectDisplayID displayID = (CGDirectDisplayID)[screenID longValue];
        CGDisplayErr err = CGDisplayCapture(displayID);
        if(err == CGDisplayNoErr) {
                if(!_fullscreenWindow) {
            // Create the full-screen window.
            NSRect winRect = [windowScreen frame];
            _fullscreenWindow = [[NSWindow alloc]
initWithContentRect:winRect styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered defer:NO screen:windowScreen];
                        
            // Establish the window attributes.
            [_fullscreenWindow setReleasedWhenClosed:NO];
            [_fullscreenWindow setDisplaysWhenScreenProfileChanges:YES];
            [_fullscreenWindow setDelegate:self];                       
        }

                // move our view over to the fullscreen window
                [_mainWindow setContentView:nil];
                [_fullscreenWindow setContentView:_mainView];
                [_mainWindow setNeedsDisplay:YES];
                
        // The window has to be above the level of the shield window.
        int32_t     shieldLevel = CGShieldingWindowLevel();
        [_fullscreenWindow setLevel:shieldLevel];
                
        // Show the window.
        [_fullscreenWindow makeKeyAndOrderFront:self];
                
                _fullscreenFlag = YES;
        }
}

Sorry about the formatting -- it got a bit messed up when i pasted it
into gmail.

Thanks!
dennis
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to