[ 新規に投稿する ]

キャレットのちらつきNo.36228
聖人(きよと) さん 17/12/19 22:24 [ コメントを投稿する ]
  お世話になっております。

秀丸エディタ / 秀丸メールの編集エリアにおいて、キーの長押しなどでキャレット移動中に、
キャレットが点滅したり、酷い時には画面から消えてしまうことがあります。
(現象の出方に数分〜程度の周期的な揺らぎがあるようです。つまり、一時的に問題ないときもあります。)
移動を止めた際には正しく表示されます。

確か、以前は「カーソル点滅」の設定によらず、キャレット移動中はキャレットが消えることなく常に表示されていたと記憶していて、
特に困ることはなかったのですが、今の挙動になってしまってからキャレットを見失うことが増え、少々困っています…。

もし何か設定等で回避できるのであれば、教えていただけないでしょうか?
また、それが不可能であれば、対策して頂くことは可能でしょうか?

以下、詳細です。

・近場のWindows 10機すべてで同様の現象が出ました(x86 / x64、1703又は1709)。
  グラフィックドライバはいずれもnVidiaかIntelのもので、Radeon系は試せていません。
・現象が出る環境では、最新版(v8.77)だけでなく、v4.19といった古いバージョンでも発生します。
・同一機材のWin7環境下では、キャレットが消えることはなかったと記憶しています(既にアップグレード済のため、確認できません…)。
・念のため古い機材(Win95 OSR1相当 + v4.19)でも確認してみましたが、現象は出ませんでした。
・「トラブル対策」や「独自キャレット」、「カーソル形状」、「文字の描画」については、設定を変えても特に変化がないようです。
・カーソル移動の加速をしていない環境でも出ます(33ms周期のキーリピートでカーソル移動した場合でもちらつきが確認できます)。
・検索エリアなど、エディットボックス内ではキャレットのちらつきはありません。
[ ]
RE:36228 キャレットのちらつきNo.36229
秀丸担当 さん 17/12/20 09:02 [ コメントを投稿する ]
 
秀丸エディタのキャレットは、Windows標準のキャレットのときも、独自キャレットのときも、実際に画面に描画した後に画面の内容を反転しているので、タイミング次第では一瞬反転しなく見える可能性はあると思います。
ただすごく一瞬のことで、見えない状態が続くのはうまく確認できませんでした。こちらで確認できたのは、1秒間に何回も点滅していそうな素早い点滅状態はありました。
Windows 7以下やクラシック表示のときでもその可能性はあるはずと思いますが、Windows 8以降ではGPUを使ったウィンドウ合成(DWM)のみになったため、違いがあるのかもしれません。

検索ダイアログの入力は小さいためかわかりづらいですが、メモ帳でも同じような点滅は起きるようです。
あらかじめ反転したものを描画する方式か、レイヤーウィンドウの方式にすると回避できるとは思いますが、はたしてそこまでするべきかは何とも言えないです。

場当たり的な対策になってしまうかもしれませんが、[その他]→[ファイルタイプ別の設定]→[デザイン]のところで、「カーソル位置の縦線」をONにしておくと、見失うことは防げると思いますが、どうでしょうか。
あと「カーソル行」は「下線モード」にしておくと十字になって見やすいと思います。
[ ]
RE:36229 キャレットのちらつきNo.36230
聖人(きよと) さん 17/12/20 19:53 [ コメントを投稿する ]
  早速のご回答ありがとうございます。

>ただすごく一瞬のことで、見えない状態が続くのはうまく確認できませんでした。こちらで確認できたのは、1秒間に何回も点滅していそうな素早い点滅状態はありました。

カーソル移動の加速で、リピート間隔を画面のリフレッシュ周期前後(例えば14ms)にすると発生しやすくなると思います。
# 当方、普段より外部のプログラム上でキーリピート間隔を約15msにして使用しているため、この影響をモロに受けている状態です…。


>検索ダイアログの入力は小さいためかわかりづらいですが、メモ帳でも同じような点滅は起きるようです。

すみません、こちらでもWin10環境下にてメモ帳のカーソル点滅が起きることを確認できました。
(行移動やスクロールをすると急に酷くなるようです。)

少なくとも、秀丸固有の問題という訳では無さそうですね…。


>場当たり的な対策になってしまうかもしれませんが、[その他]→[ファイルタイプ別の設定]→[デザイン]のところで、「カーソル位置の縦線」をONにしておくと、見失うことは防げると思いますが、どうでしょうか。
>あと「カーソル行」は「下線モード」にしておくと十字になって見やすいと思います。

どうもありがとうございます。
早速試したところ、こちらの場合は長さがある為か、前述の周期で移動させてもどこかしら線が残ってくれるようでして、これであれば見失わずに済みそうです。
このままこちらを使わさせて頂こうと思います。
[ ]
RE:36230 キャレットのちらつきNo.36232
秀丸担当 さん 17/12/21 09:49 [ コメントを投稿する ]
 
秀丸エディタの動作環境にもカーソル移動の加速があるのと、秀capsにもカーソル移動の加速があり、10ms〜24msくらいの範囲で試してみたところでは、点滅具合にばらつきがあるようでした。
右矢印キーで一秒に60桁進むとして、そのうち2〜4桁くらい見えない場合が、何回かに一度はあるようでした。

カーソル位置の縦線の他に対策できそうなこととしては、事前に反転したものを描画することなどが考えられますが、それは根本的な修正になりそうなので、他には独自キャレットを使う場合に限っての反転の仕方の対策は考えられそうです。
現状で、いったん反転を消してから、移動先でまた反転とするので、隙があります。
先に移動先で反転してから、元の場所を反転して消すように修正すれば隙は無くなるので、そういう対策も検討してみます。ただ、その代わりに一瞬二重になって見えることがあるかもしれません。
[ ]
RE:36232 キャレットのちらつきNo.36236
聖人(きよと) さん 17/12/22 01:15 [ コメントを投稿する ]
  >秀丸エディタの動作環境にもカーソル移動の加速があるのと、秀capsにもカーソル移動の加速があり、10ms〜24msくらいの範囲で試してみたところでは、点滅具合にばらつきがあるようでした。
>右矢印キーで一秒に60桁進むとして、そのうち2〜4桁くらい見えない場合が、何回かに一度はあるようでした。

この状態で暫く使っていると(10分周期程度?)、数桁飛びが常態化した上で0.2〜0.5秒位カーソルが消える現象も出るようになると思います(つまり、10桁近く飛ぶ)。
秀capsの加速をこちらでも試してみましたが、どうも出力間隔が長い(まとめて投げてる?)ようですので、恐らくこちらでは出にくいと思います。
こちらでは、前述したような現象が秀丸側の加速を有効化(14ms。キーボード側のリピートレート不問)で再現できます。

# もしかしたら、システムタイマと画面のリフレッシュ周期の精度にもよるのかもしれませんが…。

尚、こちらでは普段カーネルモードで加速処理させているので、ディスパッチ間隔のジッタが少ないのか、
はまり出すともっと長期間消えることがあります(数秒間内で一瞬正しく表示されるのが数回ある程度…。つまり行内移動程度では移動中全く位置把握できなくなります)。


>カーソル位置の縦線の他に対策できそうなこととしては、事前に反転したものを描画することなどが考えられますが、それは根本的な修正になりそうなので、他には独自キャレットを使う場合に限っての反転の仕方の対策は考えられそうです。
>現状で、いったん反転を消してから、移動先でまた反転とするので、隙があります。
>先に移動先で反転してから、元の場所を反転して消すように修正すれば隙は無くなるので、そういう対策も検討してみます。ただ、その代わりに一瞬二重になって見えることがあるかもしれません。

こちらでは独自キャレットを使わない設定にはしていませんので、そういった対策をしていただけるのであれば大変有り難いです。
移動中に画面上から全く消えてしまうよりは良いと思います。
[ ]
RE:36236 キャレットのちらつきNo.36238
秀丸担当 さん 17/12/22 10:59 [ コメントを投稿する ]
 
詳しい情報ありがとうございます。
反転することは、ルーラーの描画をするタイミングでも一瞬キャレットの反転があって、それも影響しているようでした。
一応手元ではマシになったように見えるのですが、もう少し調整して次のβ版で修正したいと思います。
[ ]
RE:36238 キャレットのちらつきNo.36244
聖人(きよと) さん 17/12/23 23:33 [ コメントを投稿する ]
  ご対応ありがとうございます。
β版が出ましたらこちらでも確認したいと思います。
[ ]
RE:36244 キャレットのちらつきNo.36247
秀丸担当 さん 17/12/25 09:18 [ コメントを投稿する ]
 
V8.79β3で調整してみました。
以下のページの「先行開発バージョンはこちら」から試していただくことができます。
http://hide.maruo.co.jp/software/hidemaru.html
少なくとも自分のところではそれなりに軽減されましたが、ルーラーの描画時にも無意味な点滅があったのでそれを無くして、独自キャレットでないときも軽減されました。しかしルーラーの表示をOFFにするとWindows標準でも独自キャレットでも症状があり、因果関係は無いはずなのですが、やはりタイミング次第ではおきてしまうのかもしれません。
V8.79β3においては、ルーラーの表示がOFFであっても、高さがゼロのルーラーがあるかのようにしてほぼ同等の処理にしてみています。
一応こちらで確認する限りにおいては、ON/OFFどちらでもいいようです。

[ ]
RE:36247 キャレットのちらつきNo.36251
聖人(きよと) さん 17/12/27 02:17 [ コメントを投稿する ]
  ご対応ありがとうございました。

暫く使ってみましたが、こちらで見る限り、独自キャレットON /OFF共に、点滅はほとんど無くなりました。
ごくまれにちらつくことはあるようですが、カーソルを見失うほど長期間の消失は無くなりましたので(60カラム/秒として、稀に1〜2カラム程度)、全く問題ないと思います。

# 念のため確認ですが、ルーラの表示と、文字入力に伴うカーソル移動については変更無しでしょうか? (どちらも点滅するので)
# 個人的にはカーソルキーでの移動でキャレットの点滅がなければ良いので、β3の対応内容でも困りません。


>少なくとも自分のところではそれなりに軽減されましたが、ルーラーの描画時にも無意味な点滅があったのでそれを無くして、独自キャレットでないときも軽減されました。しかしルーラーの表示をOFFにするとWindows標準でも独自キャレットでも症状があり、因果関係は無いはずなのですが、やはりタイミング次第ではおきてしまうのかもしれません。

タイミング依存とすると嫌ですね…。
その辺りの法則性がわかれば再発の危険も無くなって安心なのですが…(描画命令の発行数?? 等々)。
[ ]
RE:36251 キャレットのちらつきNo.36252
秀丸担当 さん 17/12/27 08:34 [ コメントを投稿する ]
 
ご確認ありがとうございます。
β3でよさそうということで、よかったです。
文字入力については、今回の修正は直接的にはいじっていないです。
タイミング次第で起きる可能性はあるかもしれないですが、現状で様子を見ようと思います。
[ ]

[ 新規に投稿する ]