メインのドキュメント ウィンドウと、関連情報を表示するいくつかの「サテライト」NSPanel ウィンドウを備えた、ドキュメント ベースのアプリケーションがあります。それらはフローティングではなく、キーになる可能性があり (実際にキーになる)、メイン ウィンドウと同じレイヤーにあるように見えます。
次のように表示/非表示アクションを実装しようとしました: パネルが表示されていない場合は表示します。見えているが正面にない場合は、正面にします。前面に表示されている場合は非表示にします。
そのためには、NSPanel が「最前面」にあるかどうかを知る必要があります。残念ながら、そのための NSWindow API は存在しません。windowNumbersWithOptions
そのために、パネルの z オーダーを比較するために使用しようとしました。
-(void) togglePanelVisibility:(PMXPanelController *)panelController {
NSPanel *panel = [panelController window];
if ([panel isVisible]) {
NSArray *windowNumbers = [NSWindow windowNumbersWithOptions:0];
if ([panel windowNumber] == [[windowNumbers firstObject] integerValue]) {
[panel orderOut:self];
}
else {
[panel makeKeyAndOrderFront:self];
}
} else
[panelController showWindow:self];
}
残念ながら、私が受け取った配列には、メイン ドキュメント ウィンドウ用の 1 つの数字しか含まれていません。「ウィンドウ」メニューにパネルが表示され、クリックして前面に表示したり、閉じて使用したりできますが、windowNumbersWithOptions で番号を取得できません。
アイデアはありますか?