Per-Monitor DPI対応に不十分な点があります

  1. x64 v.3.1.0 にて、いくつかのダイアログボックスで Per-Monitor DPI 対応が不十分なところがあるようです。

    ・「オプション」ダイアログで、「DirectWrite」"以外"をアクティブにしてDPI設定の異なるモニタに移動させ、「DirectWrite」をアクティブにすると、「フォールバックフォント」リストビューの位置とサイズがおかしい。

    ・「オプション」ダイアログで、「表示」"以外"をアクティブにし、DPI設定の異なるモニタに移動させてから元のモニタに戻すと、「表示」の「表示項目」リストビューのサイズがおかしい。

    ・「編集モードの設定」→「○○のプロパティ」ダイアログで、「構文」をアクティブにし、DPI設定の異なるモニタに移動させてから元のモニタに戻すと、「強調」の「強調文字列」、「関連付け」の「関連付けられた拡張子」リストビューのサイズがおかしい。

    ・「マーカーの設定」ダイアログで、「オプション」をアクティブにし、DPI設定の異なるモニタに移動させてから元のモニタに戻すと、「マーカー」の「マーカー」リストビューのサイズがおかしい。

     |  o  |  返信
  2. ご報告ありがとうございます。

    いただいた条件で現象を再現することができました。

    Ver 3.1.0 以前でも発生するようなので今回の修正内容とは関係なさそうですが、リストビューのバグっぽいですね。

    対策を調査してみたいと思います。

     |  Kuro  |  返信
  3. v3.2.0 x64で修正されてるの確認しました。
    ありがとうございました。

     |  o  |  返信
  4. よく見たらまだ少し問題がありました。

    ・高DPI設定のディスプレイでオプションのDirectWriteを開くと、フォールバックフォントのリストの位置が少し上になってて、カラーフォントを有効にするチェックボックスに覆いかぶさってます。

    ・オプションのキーボードを開き、標準DPI設定のディスプレイから高DPIのディスプレイにオプションダイアログを移動させると、コマンドのスクロールバーが消えます。

     |  o  |  返信
  5. ご確認とご報告ありがとうございます。

    確認してみたのですが私の環境 (メインディスプレイ 100%、サブディスプレイ 150%) ですと現象を再現することができませんでした。

    お手数をおかけしますが以下の情報を教えていただけませんでしょうか?

    ・メインディスプレイの DPI
    [ディスプレイの設定] で [メインディスプレイにする] にチェックが入っている側のディスプレイの DPI (テキスト、アプリ、その他の項目のサイズで設定した値 [100%、150% など]) です。

    ・サブディスプレイの DPI
    [ディスプレイの設定] で [メインディスプレイにする] にチェックが入っていない側のディスプレイの DPI です。

    Per-Monitor DPI ではメインディスプレイにおける DPI の設定値がシステム DPI として基準になるため、現象の確認にはメインディスプレイの DPI の設定値が重要です。

    また、ディスプレイ間の DPI の差分でコントロールの位置やサイズを計算しているため、各ディスプレイの DPI の設定値もできるだけ近い値にして確認してみたいと思います。

    私のディスプレイはスペックが低く、最大でも 150% までしか設定できないので、もしかすると、ディスプレイ間で DPI の差が少ないため位置のズレが少なく、現象が再現できないのかもしれません。

    もし 4K ディスプレイなどをご利用で 200% や 300% といった高 DPI でご利用されているのであれば検証ができないので厳しいところですが…

    あと、スクロールバーの現象につきましてはダークモードの影響も考えられるので、Ver 3.2.0 で搭載された [外観モード] でダークモードを使っているかどうかも教えていただけると助かります。

    ・メインディスプレイの DPI [100% / 125% / 150% など]
    ・サブディスプレイの DPI [100% / 125% / 150% など]
    ・ダークモードをご利用されているかどうか [Yes / No]

    お手数をおかけしますがよろしくお願いいたします。

     |  Kuro  |  返信
  6. ・メインディスプレイの DPI 100%
    ・サブディスプレイの DPI 175%
    ・ダークモードをご利用されているかどうか No

    DirectWeiteページの件は、125%/150%でも上の文字にかぶらない程度には位置がずれてるようです。

     |  o  |  返信
  7. キーボードページの件、追記

    ◇100%→175%へ移動
    ・スクロールバーが表示されない
    ・マウスホイールでスクロールできない
    ・(コマンド リストにフォーカスがある状態で)キーボードのカーソルキー上下でスクロールバー復活
    ・あるいは、リスト内でマウスの左ボタンダウン、下へマウスカーソル移動させてスクロールを発生させるとスクロールバー復活。

    ◇100%→125%/150%へ移動
    ・スクロールバー表示はされてるが、サム部分が長い。
    ・上記復活と同じ手順を行うと、サム部分の長さが本来の長さに戻る。

    ◇124%/150%/175%→100%へ移動
    ・スクロールバー表示はされてるが、サム部分が短い。
    ・上記復活と同じ手順を行うと、サム部分の長さが本来の長さに戻る。

    といった現象が起こりました。

     |  o  |  返信
  8. > ◇124%/150%/175%→100%へ移動
    124%じゃない、125%です

     |  o  |  返信
  9. DirectWriteページの件追記

    下記DPI設定の組み合わせで、サブディスプレイにMeryが表示されてる時にオプションを開き、DirectWriteページを表示したらフォールバックフォントリストの表示位置がどうなるか試しました。

    メイン   サブ   状況
    100%  100% 正常
    100%  150% 上に少しずれる
    150%  100% 上に結構ずれる
    150%  150% 正常

    なお、メインディスプレイにMeryが表示されてる時にオプションを開いたときは、どの組み合わせでも正常でした。

     |  o  |  返信
  10. 詳細な情報と検証のご協力ありがとうございます。

    いただいた情報をもとに 175% ということで試しにサブディスプレイの代わりにテレビ (REGZA) に接続してみたら 175% に設定でき、無事、現象を再現することができました。

    確かに DirectWrite のページだとリストが上の文字に重なってますね。そしてキーボードのページのスクロールバーも消えました。

    > ◇100%→125%/150%へ移動
    > ・スクロールバー表示はされてるが、サム部分が長い。
    > ・上記復活と同じ手順を行うと、サム部分の長さが本来の長さに戻る。

    ほんとだ…。そう言われてみると、150% への移動ではスクロールバーは表示されているもののサム部分のサイズが若干おかしいですね。

    > DirectWeiteページの件は、125%/150%でも上の文字にかぶらない程度には位置がずれてるようです。

    確かに…。よく見てみると 150% でも DirectWrite のページのリストが少し上にズレてました。なるほど、DPI の差が大きくなるとこのズレがどんどん上に来るわけですね。

    > メイン   サブ   状況
    > 100%  100% 正常
    > 100%  150% 上に少しずれる
    > 150%  100% 上に結構ずれる
    > 150%  150% 正常

    ↑ 貴重な情報ありがとうございます。高 DPI 側がメインに来るかサブに来るかでも現象が異なるようですね。150% のディスプレイでもある程度は再現できそうなので、いただいた情報をもとに調査してみたいと思います。

     |  Kuro  |  返信
  11. v3.2.1 x64で修正されてるの確認しました。
    ありがとうございました。

     |  o  |  返信
  12. ご確認いただきありがとうございます。

    Ver 3.2.1 では思い切って Per-Monitor DPI の実装を全面的に作り直したので、今度は他の部分で不具合が出てくるかもしれないのですが…

    あと、従来は高 DPI 側でダイアログを開いたときと、低 DPI 側でダイアログを開いて高 DPI 側に移動させたときで、ダイアログやコントロールのサイズが違っていたのですが、それもある程度直っているのではないかと思います。(1, 2 ピクセルほどのズレはありますが…)

     |  Kuro  |  返信
スポンサーリンク