-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
アウトライン解析ダイアログボックスをドッキング時にスプリッターをドラッグしてリサイズするとウィンドウの描画がちらつく問題を解消 #1592
アウトライン解析ダイアログボックスをドッキング時にスプリッターをドラッグしてリサイズするとウィンドウの描画がちらつく問題を解消 #1592
Conversation
リソースファイルの IDD_FUNCLIST に WS_EX_COMPOSITED 拡張スタイルを指定 CDlgFuncList::OnSize においてコントロールに対して行っていた 「ちらつき防止用の試行錯誤」 の UpdateWindow 呼び出しを削除
Kudos, SonarCloud Quality Gate passed! |
✅ Build sakura 1.0.3563 completed (commit 66cfcef7e0 by @beru) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Windows 10 環境で動かしてみましたが良さそうに見えました。Windows 7 の DWM 無効モードでも正しく動作するのかどうかが少し気になります。
アウトライン解析ウィンドウをドラッグしてエディタウィンドウにドッキングする
こんな機能があったとは…!
「ちらつく」という感覚的表現は嫌いなのですが、この修正に問題はないと思います。 「ちらつき現象」は、背景をクリアした⇒描画した⇒・・・を1回以上繰り返したときに発生します。 本来、描画命令がダイレクトに画面に反映させるプログラムを書くほうがちょっと大変な作業なんですが、サクラエディタの背景クリアは基本的に「全域クリア」なので「クリアそのもの」に時間がかかり、これがちらつきの原因となっております。対策として考えられるのは引数なしのInvalidateRectやUpdateWindowをできるだけコールしないことなんすけど、作業的にめんどいのが難点なんですよね。 Windows7は今年の初めにEOLを迎えたので気にしなくてよい認識っす。 |
レビューありがとうございました。Merge します。 |
もうしばらく Windows 7 使っていないのと動かせるPCを持っていないので確認が難しいです。 DWMはWindows Vistaから導入されましたね。デスクトップ描画で3フレーム遅延する問題があるみたいですね。
個人的にはドッキングするとエディタの画面が狭くなって使いづらい感じがするので使ってません。 |
ハードウェアに関してはPCが登場してからもう何十年も経って色々と強化され続けているので(とはいえ値段相応に性能差は存在しますが)どちらかというとソフトウェア側の問題だとは思います。 ソフトウェア側が色々と描画を行いますが、きりの良いタイミングで表示の更新が行われない場合に、本来は表示するべきではない描画途中の絵が一時的に画面表示されてしまい、それをユーザーがちらつきと感じるんだと思います。 サクラエディタはコモンコントロールやGDIを使っているので行える対策としてはオフスクリーンバッファを使うようにする事と不必要な再描画をなるべく控えるという事だと思います。 もう20年くらい前に詳しい人に Windows API のプログラミングは何でいちいち まぁそんなこんなで今となってもレガシーな実装のサクラエディタではちらつき現象がちょっと残ってます。 |
#1600 のテストをしようと思って下記のファイル https://raw.githubusercontent.com/erlang/epmd/master/src/epmd.erl を保存してサクラエディタで表示してみたんですが、アウトライン解析の表示がはげしく変になっています。 |
ちらつきを減らす為にダイアログ側に拡張スタイルの |
PR の目的
タイトルに書かれている通りです。
カテゴリ
PR の背景
リサイズ時に表示がちらつく問題があるので対処を行いました。
PR のメリット
アウトライン解析ウィンドウの表示がちらつく問題が解消されます。
PR のデメリット (トレードオフとかあれば)
特にないと思います。
強いて言えばウィンドウの拡張スタイルに
WS_EX_COMPOSITED
を指定したのでメモリ使用量が少し増加するかもしれません。仕様・動作説明
従来実装で
CDlgFuncList::OnSize
においてコントロールに対して行っていた 「ちらつき防止用の試行錯誤」 の UpdateWindow 呼び出しを削除しました。これを削除しないとちらつきが残ってしまうためです。PR の影響範囲
画面表示に関してだけ影響があると思います。
テスト内容
テスト1
手順
関連 issue, PR
#1424
参考資料
https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles
WS_EX_COMPOSITED