开发者

Losing focus of NSView after setFrame of NSWindow

I am switching my NSWindow from normal mode to fullscreen, by setting its frame (I know there is a method for the view to go fullscreen, but it needs to be this way)

In my NSOpenGLView I am tracking the onMouseMove event...

After switching to fullscreen (or back), I have to click the view (inside window), to receive the mouseMove event. It looks like it is going out of focus, but I don't understand why (I am just using setFrame) and how to make it focused again, without the user needing to click the window.

Code in my NSOpenGLView (NS开发者_开发知识库View):

    if (!fullscreenOn) {
        //!switch to fullscreen mode
        NSRect mainDisplayRect = [[[self window] screen] frame];
        [[self window] setStyleMask:NSBorderlessWindowMask];

        [[self window] setFrame:[[self window] frameRectForContentRect:mainDisplayRect] display:YES animate:NO];

        [[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock];

        fullscreenOn = YES;     

    } else {

        [[self window] setStyleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSTexturedBackgroundWindowMask];

        [[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationDefault];

        ... some code for the right size ...
        [[self window] setFrame:frame display: YES animate: YES];

        fullscreenOn = NO;
    }


the problem was with setting [[self window] setStyleMask:NSBorderlessWindowMask]; which cause this behaviour... making the window borderless by default fixed the problem

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜