在不使其成为关键的情况下使NSWindow变小 [英] deminiaturize NSWindow without making it key

查看:222
本文介绍了在不使其成为关键的情况下使NSWindow变小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有主窗口和几个子窗口,我想显示主窗口,当用户单击码头图标,但没有使它成为一个关键窗口,如果只有一个(如果没有键,它会变成自动键窗口)。



以下是当前代码:

  if(fMainWinDelegate ){
if(not [NSApp keyWindow]){
NSLog(@AppDelegate :: applicationShouldHandleReopen [fMainWinDelegate showWindow]);
[fMainWinDelegate showWindow];
}
else {
if([fMainWinDelegate.window isMiniaturized]){
NSLog(@AppDelegate :: applicationShouldHandleReopen [fMainWinDelegate.window deminiaturize:self]
[fMainWinDelegate.window deminiaturize:self];
//这一个不工作,它使窗口也是关键窗口
}
else if(not [fMainWinDelegate.window isVisible]&& not [fMainWinDelegate.window isMiniaturized] {
NSLog(@AppDelegate :: applicationShouldHandleReopen [fMainWinDelegate.window orderFront:self]);
[fMainWinDelegate.window orderFront:self];
}
}
}


解决方案>

我结束了很简单的解决方案:

  if(fMainWinDelegate){
if NSApp keyWindow]){
NSLog(@AppDelegate :: applicationShouldHandleReopen [fMainWinDelegate showWindow]);
[fMainWinDelegate showWindow];
}
else {
if([fMainWinDelegate.window isMiniaturized]){
NSLog(@AppDelegate :: applicationShouldHandleReopen [fMainWinDelegate.window deminiaturize:self]
//保存当前关键窗口
NSWindow * currKey = [NSApp keyWindow];
[fMainWinDelegate.window deminiaturize:self];
//恢复保存的密钥窗口
[currKey makeKeyWindow];
}
else if(not [fMainWinDelegate.window isVisible]&& not [fMainWinDelegate.window isMiniaturized]){
NSLog(@AppDelegate :: applicationShouldHandleReopen [fMainWinDelegate.window orderFront:自]);
[fMainWinDelegate.window orderFront:self];
}
}
}


I have main window and several child windows, i would like to show main window when user click on dock icon, but without making it a key window, if there just was one (it will become automatically key if there is no key window).

Here is current code:

if ( fMainWinDelegate ) {
    if (not [NSApp keyWindow]) {
        NSLog(@"AppDelegate::applicationShouldHandleReopen [fMainWinDelegate showWindow]");
        [fMainWinDelegate showWindow];
    }
    else {
        if ([fMainWinDelegate.window isMiniaturized]) {
            NSLog(@"AppDelegate::applicationShouldHandleReopen [fMainWinDelegate.window deminiaturize:self]");
            [fMainWinDelegate.window deminiaturize:self];
            //this one is not working, it make window also the key window
        }
        else if (not [fMainWinDelegate.window isVisible] && not [fMainWinDelegate.window isMiniaturized]) {
            NSLog(@"AppDelegate::applicationShouldHandleReopen [fMainWinDelegate.window orderFront:self]");
            [fMainWinDelegate.window orderFront:self];
        }
    }
}

解决方案

I've ended with pretty simple solution:

if ( fMainWinDelegate ) {
    if (not [NSApp keyWindow]) {
        NSLog(@"AppDelegate::applicationShouldHandleReopen [fMainWinDelegate showWindow]");
        [fMainWinDelegate showWindow];
    }
    else {
        if ([fMainWinDelegate.window isMiniaturized]) {
            NSLog(@"AppDelegate::applicationShouldHandleReopen [fMainWinDelegate.window deminiaturize:self]");
            // save current key window
            NSWindow *currKey = [NSApp keyWindow];
            [fMainWinDelegate.window deminiaturize:self];
            // restore saved key window
            [currKey makeKeyWindow];
        }
        else if (not [fMainWinDelegate.window isVisible] && not [fMainWinDelegate.window isMiniaturized]) {
            NSLog(@"AppDelegate::applicationShouldHandleReopen [fMainWinDelegate.window orderFront:self]");
            [fMainWinDelegate.window orderFront:self];
        }
    }
}

这篇关于在不使其成为关键的情况下使NSWindow变小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆