SSブログ

ウインドウは端から端まで使いたい [AppleScript辞書はつくれるか?]

自作のアプリケーションでは、ウインドウの上部にタイトルバーがセットで表示されていると思います。

 

image230220a.jpg

 

このタイトルバーの部分を消して、端から端まで全部使いたい。と思ったことはありませんか?

それについてやり方をご紹介します。

 

(今回使用したコードの参考資料ページ)

・NSWindowStyleMask

   (https://applescript.web.fc2.com/reference2022/reference_NSWindowStyleMask.html)

 

1)タイトルバーの背景を消してみる

タイトルバーの背景を非表示にするというコードがある。

image230220b.jpg

上記のウインドウでは、ボタンが表示可能な領域の最上部に来るようにしてある。

 

 

tell theWindow

    setTitlebarAppearsTransparent_(true)

end tell

これを実行すると...

image230220c.jpg

ベースのウインドウの背景は、見やすいように濃いグレーにしてあるのですが、その背景が見えているだけで、オブジェクトがそこを使用していないのがわかる。

 

2)いっそのことウインドウからタイトルバーを完全に外してみる。

ウインドウスタイルから強制的にタイトルバーをなくす処理をしてみることにすると...

 

 

tell theWindow

    setStyleMask_(0)

end tell

これを実行すると...

image230220d.jpg

確かにバーはなくなり、一番上にボタンオブジェクトが来ているから成功か?

と思われるが、これは使わない方が良い。

というのも、実はタイトルバーの部分の分だけ狭くなっている上に、このウインドウを閉じるにはアプリケーションを終了する以外方法がなくなっている。

クローズボタンごと排除しているためだ。それでも良いというのであれば止めはしないが、お勧めはしない

 

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

として、実行すると

image230220e.jpg

おっと、うまくいったのだけど、ボタンオブジェクトが、タイトルバーの後ろに隠れてしまったようだ。

タイトルバーの背景の非表示を追加で

 

tell theWindow

    setTitlebarAppearsTransparent_(true)

end tell

 

image230220f.jpg

 

おっと、ウインドウタイトルが表示されたままなので邪魔になっているじゃないか。

 

 

tell theWindow

    setTitleVisibility_(current application's NSWindowTitleHidden)

end tell

 

image230220g.jpg

これで完成です。

 

 

追記)ちなみに、クローズボタンの後ろにも配置ができるようになる。

image230220h.jpg


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。