私の最初の試みで問題が発生したようです:Mac/Cocoa:ウィンドウの画面にメニューバーとDockがあるかどうかを判断する方法は?
現在の画面(モニタ)に全画面モードのウィンドウを表示するか、または表示するかを選択する従来の全画面トグル機能を作成しようとしています。 Spacesの構成方法に関係なく、他の画面の内容は影響を受けません。
各スペースがすべての添付画面にまたがる「レガシー」スペースモードでは機能しています。その場合は、1つのメニューバーとDockしかありません。どちらもプライマリ画面にあり、[[NSScreen screens] firstObject]
で取得できます。したがって、私はフルスクリーンウィンドウがプライマリ画面上にある場合にのみ、自動非表示にドックやメニューバーを得るために
if ([nsWin screen] == [[NSScreen screens] firstObject]) {
m_normalPresOpts = [nsApp presentationOptions];
[nsApp setPresentationOptions:m_normalPresOpts | NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock];
}
ような何かを行うことができます。
Appleはログインセッションを再開せずにSpaces設定を切り替えることができませんでした。そのため、スクリーンに個別のスペースがある場合、上記のコードがどのように機能するか分かりません。私は、[[NSScreen screens] firstObject]
にはまだ左上隅が(0,0)の画面が含まれているため、他の画面のフルスクリーンウィンドウにはメニューバーとDockが表示され続けると考えられます。また、私はまだ10.9を稼働しており、後のバージョンでもすぐにこの権限を取得することを好むでしょう。
をプログラムで確認する方法はありますかスペースの設定方法、または特定の画面にメニューバー/ Dockが含まれているかどうかを確認する方法はありますか?グーグルでは、コードからこれを行うのに関連する結果は得られませんでした。どういうわけか私のディスク上のドキュメントで[NSScreen +screensHaveSeparateSpaces]
が見つかりませんでした。それは私の質問に対する決定的な答えですか?
"レガシー"スペースモードの場合でも、ドックは必ずしもプライマリ画面に表示されません。それは、デスクトップの左側または右側に表示するように設定することができ、デスクトップ上に置くことができます。 –
ええ、そうです。セカンダリ画面が「メイン」画面の下に置かれている場合は、それを底に置くのと同じことです。その場合は、以下のHofiのアプローチを使用するか、Dockを自動隠しモードにしてください(一時的に可能です)。 – RJVB
これは一般的な設定だと思います。私は、同じ画面で両方の要素を持たず、しばらくの間、ただ1つの画面で作業する必要があるときには、相対的な位置を変えるのは面倒だと思います。ボトムドックや垂直に積み重ねられたスクリーンには当てはまりませんが、どれくらいの人がそれをやるか* :) – RJVB