最小化からの復帰時の挙動

  1. 開発お疲れ様です。

    最大化状態から最小化し、復帰する際、いったん通常stateになってから最大化されるようです。これも困るという話ではないのですが、リフローに多少(目で追えるくらいには)時間が掛かっていますし、ダイレクトに復帰する方が良いと思います。

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

    環境は Windows 10 Home 64bit (1809) + Mery 2.8.2 64bit (プラグインなし) ということで合ってますでしょうか?

    Home エディションは用意できていないのですが、Windows 10 Pro 64bit (1809) + Mery 2.8.2 64bit で検証してみましたところ最小化状態からスムーズに最大化されているようです。

    試してみた手順ですが、

    1) Mery を最大化する
    2) 右上の最小化ボタンで Mery を最小化する
    3) タスクバーの Mery アイコンをクリックして復元する
    4) 最小化状態が解除されて最大化状態に戻る

    で、この場合は途中で通常ウィンドウになることなくスムーズに最大化されました。

    1) Mery を最大化する
    2) 右上の最小化ボタンで Mery を最小化する
    3) エクスプローラー上のファイルを右クリックなどから Mery で開く
    4) 自動的に最小化状態が解除されて最大化状態に戻る

    この場合も特に問題なく最大化されました。

    1) Mery を最大化する
    2) [Windows] + [D] キーで最小化する
    3) [Windows] + [D] キーで復元する
    4) 最小化状態が解除されて最大化状態に戻る

    この場合は復元アニメーションは省略されて、一瞬で最大化状態が復元されました。

    1) Mery を最大化する
    2) [Windows] + [D] キーで最小化する
    3) タスクバーの Mery アイコンをクリックして復元する
    4) 最小化状態が解除されて最大化状態に戻る

    この場合も特に問題なく最大化されました。

    再現手順が間違っている場合は教えていただけますと助かります。

    グラフィックボードの性能で描画が遅くなっている可能性もあるかと思い、DirectWrite がオン・オフの状態で上記の手順を実験してみましたが影響なさそうでした。

    ほかに考えられる点としてはイベントマクロの [フォーカスを受け取ったとき] に何かマクロが設定されているとか、ウィンドウを監視するような常駐アプリの影響ぐらいしか思いつかないですが…。

    そのあたりでお気づきの点がございましたら情報をいただけると調査の参考になりますのでよろしくお願いいたします。

     |  Kuro  |  返信
  3. ご返信ありがとうございます。

    キャプチャして確認ところ、標準状態ではありませんでした。
    http://mylph.my.coocan.jp/test/1.jpg
    ウィンドウ自体は最大化されているようで、クライアント領域にのみ標準状態のサイズが適用されています。
    スクロールバーが2本見えます。内側のスクロールバーに目が行っていたので、全体が標準状態なのかと勘違いしていました。
    文書を開いた状態ですが、背景色、背景画像、文字は描画されていません。

    とくに何をするでもなく、タスクバーアイコンをクリックして最大化状態・最小化を繰り返すだけで常に再現します。
    少なくとも背景画像を外しても変わりませんでした。
    解像度の問題かもとセカンダリ(1,280x1,024)でも確認しましたが同様でした。

    あとは…AMD-GPUだけの問題、なんてこともあるんでしょうか。

    本件とは直接関係ないのですが、タイトルバーの表示が
    フォーカスあり:フルパス
    フォーカスなし:ファイル名のみ
    なのが、最大最小化だけでなく他の操作でも(例えば設定を開いても)チラチラとして見えるので、可能なら常にフルパスにしていただけると。

     |  mio  |  返信
  4. ご返信ありがとうございます。

    なるほど、これはウィンドウの内側の再描画がされていないだけなので、最小化から最大化への速度への影響はないと思います。

    調べてみましたところ、どうやら開発環境 (Delphi) の仕様なようで、ATI (AMD) のグラボだと気になるレベルで残骸が残るような情報がありました。
    https://stackoverflow.com/questions/1808329/delphi-form-painting-black-flash-when-restoring/

    私の環境は NVIDIA のグラボですが、気になるレベルではないものの、確かに数回に一度ぐらいの割合で黒い四角がチラっと見えることはありました。

    スクリーンショットを取ると残骸がわかりますね。

    開発環境の Delphi 本体でも発生してますので、Delphi の仕様だと思います。
    https://imgur.com/a/dNkUeW7

    かなり根源的な問題のようなので対策ができるかわかりませんが、引き続き調査してみますね。

    > 本件とは直接関係ないのですが、タイトルバーの表示が
    > フォーカスあり:フルパス
    > フォーカスなし:ファイル名のみ
    > なのが、最大最小化だけでなく他の操作でも(例えば設定を開いても)チラチラとして見えるので、可能なら常にフルパスにしていただけると。

    これは、常にファイル名のみのほうが良いというご意見もありまして、間を取って現在の仕様となっています。

    将来的にはオプションでこういった部分を設定できるようになると良さそうですね。ご意見は今後の開発の参考にさせていただきたいと思います。

     |  Kuro  |  返信
  5. ご返信ありがとうございます。

    なるほど、Delphiのコンポーネントなのですね…。
    しかもAMDが当たるとは。
    気になりはするものの、編集操作に影響のある話ではありませんので、原因が分かっただけでひとまずは十分だと思います。

    ファイル名の表示については、確かに人によるところでしょうね。
    個人的には、複数フォルダに同じ構造があるので(ワーク、バックアップ)、常にファイル名のみだと編集したいファイルと別のファイルを操作してしまう可能性があり、それはそれで困ります。
    エクスプローラでもタイトルの表示を選べますし、オプションの方が良い気がしますね。

     |  mio  |  返信
  6. 横から失礼します

    > ファイル名の表示については、

    こういう需要の無さそうな設定は、オプションには無い方が良いと思います

    以下のようなマクロはいかがでしょうか?

    Status = Document.FullName;

    ステータスバーにフルパスを表示します
    適当なイベントで実行すれば便利かもしれません

     |  シリル  |  返信
  7. これはフルパスが知りたいというよりは、おもに他のエディタから乗り換えてこられたユーザさんで、以前使っていたエディタに外観を近づけたいということでご要望をいただくことが多いですね。

    常にフルパスにしたい、常にファイル名のみにしたい、常にファイル名なしの「Mery」だけにしたい、など色々です。

    ちなみに私は秀〇ユーザだったので、アクティブ時はフルパス、非アクティブ時はファイル名のみ派です ^^;

    > こういう需要の無さそうな設定は、オプションには無い方が良いと思います

    ご意見ありがとうございます。そうですね、慎重に検討してみたいと思います。

     |  Kuro  |  返信
  8. こんにちは。

    最小化からの復帰時の挙動についてですが Ver 2.8.5 で対策してみました。AMD 系のグラボが手元にないので現象が完全に防げているかどうかはわかりませんが… ^^;

    それからタイトルバーの表示ですが、オプション画面には不要とのご意見もありますので、とりあえず Ver 2.8.5 で隠しオプションとして実装してみました。

    Mery.ini の [File] セクションに NoFullPathIfNotActive (非アクティブ時フルパスにしない [デフォルト 1]) を 0 で追記します。

    [File]
    NoFullPathIfNotActive=0

    ★ Mery.ini は Mery を閉じた状態でメモ帳などで編集してください
    ★ [File] セクションはすでに存在しているはずなので探してみてください

    [File] セクションの NoFullPathIfNotActive という項目にしましたが、将来的にオプション画面上に表示させることがあった場合など、セクション名と項目名は変更になることがあるかもしれませんがそのときはご了承くださいませ。

     |  Kuro  |  返信
  9. ご対応ありがとうございます。
    要望を次々取り入れていただき、感謝に堪えません。

    最小化からの復帰時の挙動については、背景がクライアント領域色で塗られるようになったことで目立たなくなったと思います。
    スクロールバーはまだ二重ですしチラつきはしますが、しばらく使っていれば気にならなくなるかな、と思っています。

    タイトルバーの表示については、実装方式はこちらで十分です。
    ありがとうございました。

     |  mio  |  返信
  10. こちらこそ動作検証にご協力いただき、ありがとうございます。

    > タイトルバーの表示については、実装方式はこちらで十分です。

    隠し機能なので恐縮ですが、そう言っていただけると助かります。

    > 最小化からの復帰時の挙動については、背景がクライアント領域色で塗られるようになったことで目立たなくなったと思います。

    ご確認ありがとうございます。なるほど、そうなりますか。根本的な解決にはなっていないようですね。

    > スクロールバーはまだ二重ですしチラつきはしますが、しばらく使っていれば気にならなくなるかな、と思っています。

    そうですか…。私はどうも気になってしまいまして…。

    お手数をおかけして申し訳ありませんが、お時間がある時で結構ですので、もうひとつ別の方法を使ったバージョンを試してみていただけませんでしょうか? (これでダメなら諦めがつきそうです ^^;)

    開発環境 (Delphi) の内部のソースコードにパッチをあてたバージョンで、チラつき対策以外は Ver 2.8.5 と同じです。

    便宜上 Ver 2.8.5.1 と表記していますが内部バージョンは Ver 2.8.5 です。

    環境を汚さないポータブル版なので適当なフォルダに解凍していただくだけで使用できます。(32 ビット版と 64 ビット版のどちらでも結構です)

    ▼ Ver 2.8.5.1 ポータブル版

    http://download.haijin-boys.com/download/MeryPortable-2.8.5.1.zip
    32 ビット版 (MeryPortable-2.8.5.1.zip)

    http://download.haijin-boys.com/download/MeryPortable-x64-2.8.5.1.zip
    64 ビット版 (MeryPortable-x64-2.8.5.1.zip)

    ウイルスチェックは下記 URL (VirusTotal) で行っています。

    MeryPortable-2.8.5.1.zip
    https://www.virustotal.com/#/file/1381c41f2afcea695dcc35b4c8d6940ed34e4410f0bea49f106b8b602d364cc0

    MeryPortable-x64-2.8.5.1.zip
    https://www.virustotal.com/#/file/74954eec4a208adf682a89d1784fd33cc5e23579d79c12254d770515bac45835

    よろしくお願いいたします。

     |  Kuro  |  返信
  11. 横から失礼します。

    > Ver 2.8.5.1 ポータブル版
    WinXP sp3 (32bit, intel atom) にてトピ主さんと同じ状況だったものが改善されました。
    一発で通常ウインドウサイズの名残のチラつき完全なしで(背景壁紙ふくめて)の最大化復帰!
    ウインドウを最大化して使うことがほとんどなかったため今までの状態に不満はありませんでしたが、たしかにこれがあるべきかたち(?)だとおもうと気持ちEですね。…(*´д`)アハァ…

     |  sukemaru  |  返信
  12. ご協力ありがとうございます。

    おおー、チラつきませんか。成功しているのかな…

    トピ主の mio さんの環境は確か 4K ディスプレイだったと思うので、最大化へのウィンドウの移動距離が普通のディスプレイと比べて長いはずですから、改善されていない可能性もありますが…

    XP だと発生するのかと思って確認してみましたが、うちの XP マシン (32bit、Intel Core Duo T2400、グラボはオンボの 945GM Express) だと、最大化アニメーションをオンにしてても、チラつき以前の問題で、どのアプリも最大化アニメーション中はタイトルバーだけウニョーと動いてウィンドウの内部は何も表示されませんでした ^^;

    > たしかにこれがあるべきかたち(?)だとおもうと気持ちEですね。…(*´д`)アハァ…

    Delphi のおおもとのソースコードを書き換えちゃってるので、他の部分への影響が予測できないという問題があります。

    引き続き検証を行っていこうと思いますので、最大化関連での副作用など、お気づきの点がございましたらご協力いただけると助かります。

     |  Kuro  |  返信
  13. そもそもロースペすぎてのオマ環的な事情もあるかとおもって話に参加するのをためらっていましたが、最大化アニメーションを有効にしてバックグラウンドで CPU に負荷をかけた状態でも、最大化で不自然な描画やチラつきはないですね(エディタ領域内の描画はワンテンポ遅れますが、これはロースペ PC ゆえで、 Mery にかぎらず他のソフトでもなります)。 …アニメーション設定がどこにあるか忘れたので、数年ぶりに「いじくるつく~る」を起動しました。 :D
    ※グラフィックはオンボの Mobile Intel 945 Express (w/ IntelGraphics Media Accelerator Driver for Mobile) です。

    FullHD のモニターを VGA でつないで拡張マルチディスプレイ状態でもテストしてみましたが、FullHD のディスプレイ2側でも同じく不自然な描画はありませんでした。
    また、折り返し設定による水平スクロールバー あり/なし の影響もないようです。

    > 最大化関連での副作用など、お気づきの点がございましたらご協力いただけると助かります。
    了解です …が、Mery を最大化して使うこと自体ほとんどありませんので…。

     |  sukemaru  |  返信
  14. ありがとうございます。

    ポータブル版を試してみたところ、たしかにスクロールバーが二つ出ることもなく、瞬時に最大化されますね。
    他のアプリととくに変わらない感覚です。

    欲を言えば起動時や通常→最大化でも類似のタイミングが見られるのですが、同じような話なのでしょうね。

    最大化していることについては、ワークスペースとして開いている数が多いから、という理由です。
    タブは一段にしておきたいが、左右ボタンも出したくない、という。

    環境的には…どうなんでしょう。A10-7800の内蔵GPUで、物理メモリ32GBから2GB割いています。
    高スペックではないにしても、低いというほどでもないと思っていますが。

     |  mio  |  返信
  15. >> sukemaru さん

    動作検証のご協力ありがとうございます。

    > FullHD のモニターを VGA でつないで拡張マルチディスプレイ状態でもテストしてみましたが、FullHD のディスプレイ2側でも同じく不自然な描画はありませんでした。

    おおー、それは心強いお言葉ですね ^^

    > エディタ領域内の描画はワンテンポ遅れますが、これはロースペ PC ゆえで、 Mery にかぎらず他のソフトでもなります

    そのようですね。私も、最大化アニメーションを何度も試してスクリーンショットを取っていると、領域内の描画が遅れているシーンを撮影することができました。

    これは Mery に限らずその他のアプリ (explorer.exe でも ^^;) で確認することができましたので Windows 側の仕様な気が…。

    > 了解です …が、Mery を最大化して使うこと自体ほとんどありませんので…。

    ありがとうございます。私のほうでもしばらく最大化を意識して使ってみて問題なさそうなら次のバージョンで対応してみようと思います。

    >> mio さん

    ご確認ありがとうございます。

    うまくいったようで良かったです。

    > 欲を言えば起動時や通常→最大化でも類似のタイミングが見られるのですが、同じような話なのでしょうね。

    そのケースだと私の環境でも目視できるぐらいのチラつきが発生しますが、これは Mery に限らず他のアプリでも発生しますね。

    秀〇さん
    https://imgur.com/KQbMaah

    E〇Editor さん
    https://imgur.com/0VCDOEd

    Windows のエクスプローラーのウィンドウですら発生するので、OS がらみの問題の可能性もありますね…。こればっかりは対策が難しいと思います。

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