-
Notifications
You must be signed in to change notification settings - Fork 163
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
マウスドラッグ時のスクロール速度を制限する #1853
マウスドラッグ時のスクロール速度を制限する #1853
Conversation
❌ Build sakura 1.0.4151 failed (commit 43cc4e77c4 by @dep5) |
✅ Build sakura 1.0.4158 completed (commit fadfb6b2bc by @dep5) |
良さそうに見えます。
マウスでドラッグ中、かつ、スクロール量が7行未満の場合に |
sanomari さん |
どれくらい遅くなるかテストしてみました。
Windows 10では Windows 8.1では |
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.
自分もこれでいったんマージで良いと思います。
あるべき姿としては、
特定の条件を満たした場合 CCaret::MoveCursor
を呼ばない、
という修正を加えるのがベターなんじゃないかと思いました。
CCaret::MoveCursor
の中を変えようとするから「他に影響するかも...」と心配になるわけなので改善の余地があるんですが、このPRをマージすればとりあえず「困り事」は解決するので進める価値はあると思います。
一方、一度マージしたものは「困り事がない限り決して変更してはならない」みたいなローカルルールにしたい場合にはこの状態でマージしてはいけないことになるんですが、ぼくは「リリースしないバージョンには冒険的変更を含めても構わない」と思うので approve してしまいます。(こういう approve をするからリリースできないんですけど 😃 )
配列の要素を増やすとWindows8.1でのさらにスピードを落とせました。 もう少しシンプルにできそうに思っていろいろいじってみましたが、わたしにはこれ以上何もできなさそうです。 berryzplus さん |
SonarCloud Quality Gate failed. |
✅ Build sakura 1.0.4161 completed (commit 394250bb88 by @dep5) |
@@ -300,7 +300,7 @@ CLayoutInt CCaret::MoveCursor( | |||
Int nScrollRowNum; | |||
DWORD dwTime; | |||
}; | |||
static std::array<ScrollRowRecord, 128> s_records{}; | |||
static std::array<ScrollRowRecord, 512> s_records{}; |
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.
4倍の根拠 = 試してみて値が大きいほうがいい感じだったから。
Windows 10で要素数を変えながら5秒間のスクロール行数を確認してみました。 4-85 要素が6以上だと増やしてもスクロール行数に影響がないようにに思います。 要素数が8,128,512の時とmasterそのまま、と4つビルドして 22df168 数値を変えるとスクロールスピードを変更できる以下のコードについて
Windows 10 Windows 8.1 https://github.com/sakura-editor/sakura/pull/1694/files 512が多すぎるなら256や384ではどうでしょうか? ユーザーの方の感想によってはスクロール速度を少し速くするかも知れないので、その場合は512も必要ないです |
とくに反対意見もつかないのでマージじておきます。 |
注:このPRでの「スクロール」とは、「ステータスバーを表示中」に
ドラッグ & ドロップ編集
マウスによる範囲選択
ここに書かれているドラッグ操作を行った時に起きるスクロールのことを指します。
このPRでは編集部分の「上端」および「下端から2~3行上」にあるマウスドラッグ中に越えるとスクロールが始まるラインのことを「スクロールライン」と呼びます
PR の目的
カテゴリ
PR の背景
最近のmasterでステータスバーを表示していると、v2.4.1に比べスクロールがなめらかになっています。
スクロールラインを越えた位置でマウスを静止しても、スクロールが続き、減速しなくなっています。快適なスクロールになりました。
編集画面の行数が20行以上あると、スクロールしすぎてもスクロールライン内にマウスを戻してスクロールを停止し、選択の終点を選ぶことができます。
しかし、慣れないマウスだったり、ウィンドウを小さくする・フォントを大きくするなど10行以内しか表示していない時はスクロールが進みすぎてしまうことも多く、スクロールがちょっと速いように思います。
PR のメリット
PR のデメリット (トレードオフとかあれば)
(長い文書の先頭・最後に移動するのは速いですが)
仕様・動作説明
スクロールラインを越えた数行に限り、スクロールスピードを制限します。
#1714 (comment)
beru@f1f0849
beruさんが書いてくださったコードをもとに条件などを追加しています。
beruさんのコードからの変更点と、変更可能な値(必要個所の抜粋)
5-- スクロール速度を落とせるようになります。
6-- 5の影響で通常の範囲選択でスクロールがストップするので「test(カーソル移動はしない)」をfalseに変更
2-- 矢印キーのキーリピートで不正な描画になるので、マウス選択中・ドラッグアンドドロップ中に限定
4-- ドラッグアンドドロップでは上側のスクロール可能な行がが1行分しかなく増速が見込めないので速度を速めにしています
1-- 数値を変更すると速度制限をするスクロールラインからの行数を変更できます
3-- 数値を増やすと速度制限中の行のスクロール速度が遅くなります
v2.4.1に比べ
#1714 (comment)
なぜ速度が落ちるのか細かいところまで理解できていないのですが
の間スクロールをストップするのを強制的に挟み込むことでスクロールスピードを落としている…んでしょうか?
PR の影響範囲
PR のデメリットを参照
テスト内容
いろいろスクロールしてみる。
テスト1
手順
関連 issue, PR
#1714
参考資料