Ticket #336 (closed 不具合: fixed)

Opened 2 years ago

Last modified 2 years ago

fringeにごみが残る

Reported by: fujii Assigned to: yamazaki
Priority: minor Milestone:
Component: 画面表示 Version: 3.00 (開発中)
Keywords: Cc:

Description

undoを実行したときにfrigeの行折り返しの記号の描画が残ったままになることがあります。 再現方法は以下のとおりです。

  1. バッファにテキストを適当に3行以上入力する。テキストの内容は折り返すほど長くなければ特に何でもよく、空行でもよい。
    aaa
    aaa
    aaa
    
  2. 上記テキストよりも上の行に、C-u 300 b などとして、折り返しで少なくとも3物理行以上になる長い一論理行のテキストを一回の操作で入力する。yank とかでもよい。このとき折り返し記号がfrigeに表示されるはずです。(trac ではテキストが折り返しされないので、下記は改行を入れています。)
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    aaa
    aaa
    aaa
    
  3. undoを実行すると、上記のfrige内の折り返し記号の描画が残ったままです。C-lなどで再描画させれば消えます。

Attachments

Change History

2006年08月17日 16時38分50秒 changed by anonymous

mw32_WndProc (mw32fns.c) の WM_PAINT イベントの処理を r4132 のものに戻してみたところ、正常動作しました。

#根拠もない第一感ですが、sleep(2) は MW32_BLOCK_FRAME_HDC/MW32_UNBLOCK_FRAME_HDC の外にあるべきだったりしませんかね?

(follow-up: ↓ 3 ) 2006年08月17日 18時59分48秒 changed by miyoshi

描画領域に問題があるようです。

r4135の変更の一部をr4143で取り消しました。 問題が解決することを確認して、チケットを閉じてください。

また、同じ趣旨の修正をする場合には、この問題が生じないようにお願いします。

(in reply to: ↑ 2 ) 2006年08月17日 23時06分16秒 changed by fujii

  • status changed from new to closed.
  • resolution set to fixed.

Replying to miyoshi:

描画領域に問題があるようです。 r4135の変更の一部をr4143で取り消しました。 問題が解決することを確認して、チケットを閉じてください。

直っていることを確認しました。ありがとうございます。

2006年08月19日 19時55分20秒 changed by yamazaki

こちらも、反応が遅くなりました。

すでにRevertされ、closeとなっていますが、問題の原因は、mw32i_scroll_run ()@mw32term.cでのスクロール領域の計算で、fringeの領域が省かれているためと思われます。現在のCVS HEADでは、この部分が削除されています。(x_scroll_run@w32term.cでは、rev1.189で削除されています。)

こちらでは、以下のパッチとr4135の実装で、問題発生手順で再現しないことを確認しました。

Index: mw32term.c
===================================================================
--- mw32term.c  (revision 4148)
+++ mw32term.c  (working copy)
@@ -2987,10 +2987,6 @@
      fringes of W.  */
   window_box (w, -1, &x, &y, &width, &height);

-  /* Exclude fringe areas.  */
-  width -= FRAME_TOTAL_FRINGE_WIDTH (f);
-  x += FRAME_LEFT_FRINGE_WIDTH (f);
-
   from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y);
   to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y);
   bottom_y = y + height;

r4135の修正の趣旨は、できるだけクライアント領域全体に対しての再描画をなくすことにありました。また、Meadowでも2.1やr3978より前ではBeginPaint?で得た領域のみexpose_frameに渡していたこともあり、問題ないと判断していました。(ですが、問題があったということですね。)

(follow-up: ↓ 6 ) 2006年08月20日 07時40分21秒 changed by miyoshi

なるほど、mw32i_scroll_run()に問題がありましたか。

これで問題が解決するのであれば、この変更を取り込んだ上で、r4143の修正を取消してもらえませんか?

(in reply to: ↑ 5 ) 2006年08月22日 21時50分34秒 changed by yamazaki

  • status changed from closed to reopened.
  • resolution deleted.

Replying to miyoshi:

これで問題が解決するのであれば、この変更を取り込んだ上で、r4143の修正を取消してもらえませんか?

r4149で上記対処を盛り込みました。問題がありましたら、ご報告お願いいたします。

2006年08月22日 21時50分43秒 changed by yamazaki

  • owner set to yamazaki.
  • status changed from reopened to new.

2006年09月11日 22時19分47秒 changed by yamazaki

  • status changed from new to closed.
  • resolution set to fixed.

特に問題ないようですので、closeします。


Add/Change #336 (fringeにごみが残る)




Change Properties
Action