スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Python3でもエラーが出る | トップページ | 現行OSでも利用可能に »

Big Surの透明化防止対策

今は、Mirror-DTC Ver1.4.2の開発フェーズなのだが、作者製ソフトの中にはmacOSの次バージョンのβ版で正常動作しないモノも多いので、対応版を先に開発中だ。対応が一番大変なのは、ウインドウが勝手に半透明化されてしまう問題かもしれない。

Big Surでは、モーダルウインドウが自動的に半透明化されてしまう問題がある、という話は、数日前に書いた。

で、その半透明化というのが、例えば、Safariのウインドウ背景程度の半透明化であれば、そのまま放置しておいても問題ないかもしれないのだが、Big Surのモーダルウインドウの背景は、より強く、透明化されてしまう訳だ。

その結果としては、Big Surの目新しさを強調する事になり、見た目的には、何となく綺麗になるのだが、実用上は、例えば、ウインドウ内部のテキストボックスなんかの背景色は灰色になってしまうし、ウインドウの後ろにある映像によっては、ウインドウ上に配置しているテキストなんかは、かなり、読みづらくなる場合もある。

で、macOS用ソフトの慣例としては、モーダルウインドウはあまり使われていないのかもしれないのだが、作者製ソフトのダイアログは、ほぼ全てがモーダルウインドウになっている。

なので、例えば、Mirror-DTCクライアントを起動すると表示されるUDP接続ダイアログなんかも、モーダルウインドウなので、Big Surでは、ウインドウの背景が、強く、半透明化されてしまう結果、ウインドウ内のダイアログ部品が見づらくなる、という事になる。

もっとも、Macユーザの中には、Big Surで、ウインドウなんかの見た目が変わるのは新鮮で大歓迎、という人もいるかもしれないので、作者的にも、上記の対応をどうしようかなあ、という話については、今まで、二転三転してきている。

しかしまあ、いつまでも、迷ってはいられないので、そろそろ、結論を出そうとしているのだが、まず、ダイアログの見た目が変わってしまうのは、Big Surがやっている事なので、デフォルト設定では、Big Surがやるままにさせる。

つまり、人によっては、ダイアログが非常に見づらくなるかもしれないのだが、それはBig Surの仕様なので、基本的には、そのまま我慢して使うか、「システム環境設定」-「アクセシビリティ」-「ディスプレイ」にある「透明度を下げる」をチェックして使ってもらう事にする。

ただし、Apple製ソフトの中には、Big Surになっても、半透明ウインドウが多用されないアプリもある訳だ。

これは何故なのか、というと、自動的に半透明化されるのはモーダルウインドウに限られるし、そのモーダルウインドウでも、元々、Yosemiteの頃から導入されているNSVisualEffectViewを使って、自ら、半透明化しているウインドウも、対象外になっているからだ。

と、言う事で、Apple的には、自動的に半透明化されては困るウインドウはモーダルウインドウにするな! または、NSVisualEffectViewを使って、自ら好みのウインドウ背景に設定しろ!という事なのかもしれないのだが、実際の所、現状、モーダルウインドウとして使用しているダイアログをモーダルではないウインドウにするのは大変だ。

何故なら、モーダルウインドウというのは、メインのイベントループとは別にイベントループが作成されるので、例えば、メニューハンドラーの様な、メインイベントループのイベント処理ルーチン内でも普通に使えるのに対し、普通のウインドウは、そのメニューハンドラーを抜けた後でしか表示できないからだ。

まあ、どうしても必要、という事になれば、作者製ソフトでも、そういう形態に出来ない事もないのだが、作者製ソフトの基本構造はWindows用デスクトップソフトと同じになっているので、ダイアログをモードレスで使用する、なんてのは、ある意味、論外な訳だ。

と、言う事で、macOS 11 Big Surの為だけに、現状、モーダルウインドウとして構成しているダイアログをモードレスウインドウとして再構成するのは大変すぎるので、Big Sur対応としては、前述のNSVisualEffectViewを使う様にするか、NSViewのまま、背景を自ら塗りつぶす格好にするか、という事になる。

ただ、Big Surの半透明化ウインドウというのは、背景が半透明化されるだけではなく、ダイアログ上のテキストボックスの背景なんかも、白から灰色に自動的に変更されてしまう。

なので、背景だけ塗り潰したりしても、現行版と同様のダイアログ表示には出来ず、極力、現行版に似せるのなら、ダイアログ上の全ての部品の色も指定する必要が出てくる。

しかし、それはそれで、また大変だし、巷のMacユーザーの中には、Big Surなんか誰が使うかよ! という人も、それなりに出てきそうなのだが、そういう人たちに対しては、現行版のダイアログをそのまま提供したかったりもする訳だ。

と、言う事なので、作者製ソフトとしては、Big Surの為に、既存のダイアログの配色を変更したりもしたくないので、 Big Surでは、現行版とは少し異なるダイアログの配色となるのは、許容する事にする。

つまり、作者製ソフトも、Big Surでは、ウインドウの見た目が変わってしまう訳なのだが、ならば、と言う事で、ウインドウの背景等については、基本的には、Big Surのデフォルトの配色になる様にする事にした。

その結果として、背景によっては、かなり、見づらくなるダイアログも出てくる筈なのだが、だからといって、アクセシビリティの機能なんて使いたくない、という人に対しては、オプションを用意する。

もっとも、AG-ムービーカッターとAGMPlayerのレジストキー入力用ダイアログは、普通、真っ黒な映像表示領域上に表示されるので、見辛いというか、入力しようという気が起きない感じになる。

なので、レジストキー入力用ダイアログだけは、モードレスウインドウの形式に変更する事で、見た目が現行版と変わらなくする。

表示切り替えのオプション設定は、Big Sur以外の環境では非表示にするので、特別な環境設定、なんて項目は設けない事にして、作者製ソフトのどれにでも、既に存在している「バージョン情報ダイアログ」の中に配置する予定だ。

« Python3でもエラーが出る | トップページ | 現行OSでも利用可能に »

2020年8月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google