Menu

#1006 改行文字部分とそれより後ろのキャレット移動に関して

open
nobody
None
5
2015-10-24
2015-10-16
ds14050
No

プロポーショナルフォント対応によって、Command_RIGHTにあった「とりあえず 1だけ右に移動する」コードの意味が「1(文字)」から「1(ピクセル)」に変わっています。それによりカーソル移動が遅くなることが掲示板で報告されていますが、それだけでなく、改行文字をまたぐようにカーソルを移動するとき、改行マークの幅を無視して{半角 1文字分しか移動していなかった/1ピクセルだけしか移動していない}ことがはっきりしてしまいました。フリーカーソルモードや矩形選択状態で改行マークを右に向かって選択すると、選択表示とカーソルの位置が整合していないように見えてしまいます。

ずいぶん久しぶりにコードを見ましたし、すでにある HACKに HACKを重ねたコードになっていますが、全体に大外しはしていないだろう、どなたかの手間が減るのではないか、とパッチを投稿します。

//
// 選択描画の問題を直すつもりで CFigure_Eol.cppを
// 眺めるところから手を付けたのは秘密です。
//

1 Attachments

Related

PatchUnicode: #1047

Discussion

  • syat

    syat - 2015-10-24

    パッチの動きを確認しました。よさそうだと思います。助かります^^

    ただ過去のバージョンを試したところ、改行文字の表示幅は無視されてルーラーに合わせてカーソル移動しているようなので、パッチを修正しました。(dx_eol = dx_default としただけ)

     
  • ds14050

    ds14050 - 2015-10-24
    • (パッチの修正) 文字の間隔を 1以上にしたとき改行マークの右へ移動しすぎていた。
    • (パッチの修正) 改行マークの幅を正確に計算しないのなら不要なヘッダインクルードを削除した。
    • (パッチに追加) 折り返し線とぶら下がっている改行文字が重なっているときに、正しくぶら下がっていると判断できるように。

    3番目は、ぶら下がっている改行が折り返し線ぴったりではなくちょっとだけ前に出てくるケースへの対応です。文字が半角グリッドに並ぶことを暗黙の前提にしていたようです。

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.