ウインドウは端から端まで使いたい [AppleScript辞書はつくれるか?]
自作のアプリケーションでは、ウインドウの上部にタイトルバーがセットで表示されていると思います。
このタイトルバーの部分を消して、端から端まで全部使いたい。と思ったことはありませんか?
それについてやり方をご紹介します。
(今回使用したコードの参考資料ページ)
・NSWindowStyleMask
(https://applescript.web.fc2.com/reference2022/reference_NSWindowStyleMask.html)
1)タイトルバーの背景を消してみる
タイトルバーの背景を非表示にするというコードがある。
上記のウインドウでは、ボタンが表示可能な領域の最上部に来るようにしてある。
|
tell theWindow setTitlebarAppearsTransparent_(true) end tell |
これを実行すると...
ベースのウインドウの背景は、見やすいように濃いグレーにしてあるのですが、その背景が見えているだけで、オブジェクトがそこを使用していないのがわかる。
2)いっそのことウインドウからタイトルバーを完全に外してみる。
ウインドウスタイルから強制的にタイトルバーをなくす処理をしてみることにすると...
|
tell theWindow setStyleMask_(0) end tell |
これを実行すると...
確かにバーはなくなり、一番上にボタンオブジェクトが来ているから成功か?
と思われるが、これは使わない方が良い。
というのも、実はタイトルバーの部分の分だけ狭くなっている上に、このウインドウを閉じるにはアプリケーションを終了する以外方法がなくなっている。
クローズボタンごと排除しているためだ。それでも良いというのであれば止めはしないが、お勧めはしない。
3)タイトルバーの部分も表示領域として使えという命令で許可をする。
上の1)や2)のような無駄な話をあえてしましたが、ちゃんと使えるようになるコード(定数)があります。
|
NSWindowStyleMaskFullSizeContentView |
ウインドウのスタイルマスクにこの定数を送れば良いのですが、これを単独で送れば良いというわけではありません。
間違って送ると大変なことが起きます。
それは、スタイルマスクが他の部分も一緒に請け負っているため、それに配慮して他の情報も反映する必要があります。
ウインドウのスタイルマスクには、主に以下の情報が反映されています。
|
NSWindowStyleMaskTitled ・・・タイトルバー部分の表示 NSWindowStyleMaskClosable ・・・タイトルバー部分のクローズボタンの有効化 NSWindowStyleMaskMiniaturizable ・・・タイトルバー部分の縮小化ボタンの有効化 NSWindowStyleMaskResizable ・・・タイトルバー部分のリサイズボタンの有効化 |
などがあります。
これをふまえ、
|
set aStyle to (current application's NSWindowStyleMaskTitled as integer) set aStyle to aStyle + (current application's NSWindowStyleMaskClosable as integer) set aStyle to aStyle + (current application's NSWindowStyleMaskMiniaturizable as integer) set aStyle to aStyle + (current application's NSWindowStyleMaskResizable as integer) set aStyle to aStyle + (current application's NSWindowStyleMaskFullSizeContentView as integer) tell theWindow setStyleMask_(aStyle) end tell |
として、実行すると
おっと、うまくいったのだけど、ボタンオブジェクトが、タイトルバーの後ろに隠れてしまったようだ。
タイトルバーの背景の非表示を追加で
|
tell theWindow setTitlebarAppearsTransparent_(true) end tell |
おっと、ウインドウタイトルが表示されたままなので邪魔になっているじゃないか。
|
tell theWindow setTitleVisibility_(current application's NSWindowTitleHidden) end tell |
これで完成です。
追記)ちなみに、クローズボタンの後ろにも配置ができるようになる。
コメント 0