◀Unicode版開発トップへ
  • 1374 Commit報告(Fix) Undo/Redoでルーラーと行番号の間の隙間が更新されない
  • [1374] Commit報告(Fix) Undo/Redoでルーラーと行番号の間の隙間が更新されない ryoji 2010年08月21日 11:05

    リビジョン:
    rev1813

    変更種別:
    バグ修正

    内容:
    Fix: Undo/Redoでルーラーと行番号の間の隙間が更新されない

    【再現手順】
    ●設定
    ルーラーとテキストの間の隙間を 0 以外の値にしておく
    画面キャッシュを ON の設定にしておく
    ルーラーや行番号の背景色は目立つ色にしておくとわかりやすいです
    ●操作
    ちょうど 100 行のテキストを用意して以下の操作を実行
    (1) 任意の行を削除する → 行数が 2 桁になり、行番号の幅が狭くなる(正常)
    (2) Undo を実行 → 行番号の幅が広がるが行番号の上の隙間の帯が更新されない(異常)
    (3) F5 キーで再描画 → 行番号の上の隙間の帯が更新される(正常)
    (4) Redo を実行 → 行番号の幅が狭くなるが行番号の上の隙間の帯が更新されない(異常)

    ルーラー再描画の必要があるときは DispRuler() ではなく他の部分と同時に Call_OnPaint() で描画することで対策しました。
    行番号表示に必要な幅を更新する処理は OPE_INSERT/OPE_DELETE 処理内で実施済みで、画面更新後の DetectWidthOfLineNumberAreaAllPane() は無用なので除去しました。