0

メインウィンドウといくつかの子ウィンドウがあります。ユーザーがドックアイコンをクリックしたときにメインウィンドウを表示したいのですが、キーウィンドウが1つしかない場合は、キーウィンドウにしません(キーウィンドウがない場合は自動的にキーになります)。

現在のコードは次のとおりです。

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];
        }
    }
}
4

1 に答える 1

0

私は非常に単純な解決策で終わりました:

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];
        }
    }
}
于 2012-10-12T16:25:56.453 に答える