[スレッド全体]

2008/5/27 (火) 18:46:44 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5303] 問題について
▼ なすこじさん
> A:入力毎に全ラインを走査してテキストの最大幅を求めています。そしてAdjustScrollBars()でそれを使っています。

他エディタではどれも、
・最大幅の拡大を監視してスクロール幅をそれにあわせて拡大する
・最大幅の縮小は監視せずスクロール幅を縮小することはしない

になっていると思います。
たいてい、長ーい行を貼り付けるとスクロール幅が広がりますが、削除しても狭くはなりません。
つまり、スクロール幅は常に全ラインを走査して現在の最大幅に合わせるのではなく、変更された行だけを走査して編集開始以後に記録した過去最大幅に合わせておくこと(ある意味手抜き)で性能を確保しているような気がしますが、違いますかね?

> B:OnSize()にて折り返し位置の変更を呼び出しています。こちらの方が負荷が高いです。

常に折り返すのは、どっちかというと付加的な機能ですし性能にさほど過敏になる必要はないと思いますけど...

> ■分割ウィンドウの問題(Bのみ)
> 左右に分割すると、左側のウィンドウが右側のウィンドウサイズで折り返されます。


どちらかのビュー幅の桁数に他方の桁数をあわせるので良いと思います。同時スクロールはそのほうが見やすい、とも。EmEditorだと左側のビューの桁数に右側の桁数を合わせているみたいですね。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.000][st:0.000]