-
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
BSキーでカーソル前を削除時に画面が余計に再描画される事を防ぐ #1754
Conversation
…BlkRedawCount をインクリメントする処理を追加 キャレット移動の CMoveCaretOpe 追加では再描画は必要無いはず
Kudos, SonarCloud Quality Gate passed! |
✅ Build sakura 1.0.3973 completed (commit c151ac2640 by @beru) |
@@ -857,6 +857,7 @@ void CViewCommander::Command_DELETE_BACK( void ) | |||
GetCaret().GetCaretLogicPos() | |||
) | |||
); | |||
GetDocument()->m_cDocEditor.m_nOpeBlkRedawCount++; |
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.
修正内容はここだけ(1行追加)ですよね?
↓
他の処理から「本来必要な処理」を抜いてきて貼り付けた、ってことですよね?
【このPRの修正の成り立ち(推定)】
再描画が遅くならないようにする機構がもともと存在していた。
BSキー押下時の処理にはこの機構を有効にするための1文が抜けている(ように見えた)。
・・・ので、「~したときのコード」から必要な1文をコピってきた。
PR本文の説明とまるで違うので、そうではないんだろうな、と思いました。
成り立ちが上記想定に一致するなら入れてしまってもいいと思います。
現状、自分はこの件で困ってないです。
BSだとエディタによっては処理遅延が発生するので、
削除範囲を選択してから削除するクセがついてるためかと思います。
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.
既存の記述を参考というかコピってきたのはその通りです。DELキーだとビューの全再描画はされていなかったのでその仕組みを真似ています。
PR本文の説明にそれが書かれていないのは、多分書いた人に親切心が足りてないからだと思われます。
なおミニマップを表示していない時でもBSキー時に全ビューを再描画する挙動は同じなのですがそこまで重くないです。気づかない間に密かに無駄遣いしていたんですね。
動作確認して問題なければ入れていいんじゃないかと思います。 |
「動作確認しました!」と申告したら「よし通れ!」と Approve つけて頂けるのでしょうか? |
他の方にレビューを任せます、という意味です。 |
このPRのレビューや動作確認をberryzplusさんにして頂けないのは残念ですが、今まで数多くのPRを作成したりレビューしてくれて多大な貢献を行ってくれたので非常に感謝してます。きっと非効率なマウス操作を行う世界から卒業してしまったんですね。 |
このPRの修正内容は、表面的には妥当だと思います。 レビュアー独自の観点で深堀すると異なる結論になりそうなことと、 |
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.
だいぶスムーズになったと思います。
レビュ=ありがとうございました。Mergeします。 |
PR の目的
BSキー押しでカーソル前を削除時に、余計な画面の再描画が行われないようにするのが目的です。
カテゴリ
PR の背景
ミニマップを表示するとBSキーで文字を連続で削除するのが明らかに遅いです。
DELキーでの連続削除だとそこまで遅くは無いです。
PR のメリット
BSキーで文字を削除する際に余計な再描画が行われなくなる事で操作の応答性が良くなります。
PR のデメリット (トレードオフとかあれば)
余計だと思っていた再描画がもし必要だった場合に、再描画されない問題が発生する可能性があります。
仕様・動作説明
CViewCommander::Command_DELETE_BACK
でCDocEditor::m_nOpeBlkRedawCount
をインクリメントする処理を追加する事で後で画面全体の再描画が行われる事を防ぎます。キャレット移動のCMoveCaretOpe
追加では再描画は必要無いはずです。全てのペインを再描画する
CEditWnd::RedrawAllViews
の呼び出しはCEditView::SetUndoBuffer
で行われてます。その呼び出しはCViewCommander::HandleCommand
の最後で行われます。PR の影響範囲
BSキーでカーソル前削除時の画面描画の挙動
テスト内容
テスト1
手順
sakura_core\sakura_rc.rc
)関連 issue, PR
参考資料
https://egg.5ch.net/test/read.cgi/software/1587603412/423