richedit: Remove always FALSE parameter from ME_PaintContent.

Dylan Smith dylan.ah.smith at gmail.com
Mon May 7 21:11:55 CDT 2012


MEPF_REPAINT is now only needed for marking paragraphs to call
InvalidateRect on, so is cleared right after this call. Ensuring that
the repaint flag is always cleared fixes bug 30614, where it wasn't
cleared for hidden text.
---
 dlls/riched20/editor.c |    2 +-
 dlls/riched20/editor.h |    2 +-
 dlls/riched20/paint.c  |   28 ++++++++--------------------
 dlls/riched20/wrap.c   |    1 +
 4 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index f3764df..e61aac4 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -4463,7 +4463,7 @@ static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
         ps.rcPaint.right = editor->rcFormat.right;
       }
 
-      ME_PaintContent(editor, hDC, FALSE, &ps.rcPaint);
+      ME_PaintContent(editor, hDC, &ps.rcPaint);
       EndPaint(editor->hWnd, &ps);
       return 0;
     }
diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index 8cded51..7a56b1a 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -207,7 +207,7 @@ void ME_MarkAllForWrapping(ME_TextEditor *editor) DECLSPEC_HIDDEN;
 void ME_SetDefaultParaFormat(PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN;
 
 /* paint.c */
-void ME_PaintContent(ME_TextEditor *editor, HDC hDC, BOOL bOnlyNew, const RECT *rcUpdate) DECLSPEC_HIDDEN;
+void ME_PaintContent(ME_TextEditor *editor, HDC hDC, const RECT *rcUpdate) DECLSPEC_HIDDEN;
 void ME_Repaint(ME_TextEditor *editor) DECLSPEC_HIDDEN;
 void ME_RewrapRepaint(ME_TextEditor *editor) DECLSPEC_HIDDEN;
 void ME_UpdateRepaint(ME_TextEditor *editor, BOOL update_now) DECLSPEC_HIDDEN;
diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c
index e1f838e..18b2da4 100644
--- a/dlls/riched20/paint.c
+++ b/dlls/riched20/paint.c
@@ -25,7 +25,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit);
 
 static void ME_DrawParagraph(ME_Context *c, ME_DisplayItem *paragraph);
 
-void ME_PaintContent(ME_TextEditor *editor, HDC hDC, BOOL bOnlyNew, const RECT *rcUpdate)
+void ME_PaintContent(ME_TextEditor *editor, HDC hDC, const RECT *rcUpdate)
 {
   ME_DisplayItem *item;
   ME_Context c;
@@ -71,17 +71,14 @@ void ME_PaintContent(ME_TextEditor *editor, HDC hDC, BOOL bOnlyNew, const RECT *
       ys -= item->member.para.pCell->member.cell.yTextOffset;
     }
 
-    if (!bOnlyNew || (item->member.para.nFlags & MEPF_REPAINT))
+    /* Draw the paragraph if any of the paragraph is in the update region. */
+    if (ys < rcUpdate->bottom && ye > rcUpdate->top)
     {
-      /* Draw the paragraph if any of the paragraph is in the update region. */
-      if (ys < rcUpdate->bottom && ye > rcUpdate->top)
-      {
-        ME_DrawParagraph(&c, item);
-        /* Clear the repaint flag if the whole paragraph is in the
-         * update region. */
-        if (rcUpdate->top <= ys && rcUpdate->bottom >= ye)
-          item->member.para.nFlags &= ~MEPF_REPAINT;
-      }
+      ME_DrawParagraph(&c, item);
+      /* Clear the repaint flag if the whole paragraph is in the
+       * update region. */
+      if (rcUpdate->top <= ys && rcUpdate->bottom >= ye)
+        item->member.para.nFlags &= ~MEPF_REPAINT;
     }
     item = item->member.para.next_para;
   }
@@ -94,15 +91,6 @@ void ME_PaintContent(ME_TextEditor *editor, HDC hDC, BOOL bOnlyNew, const RECT *
     rc.bottom = c.rcView.bottom;
     rc.right = c.rcView.right;
 
-    if (bOnlyNew)
-    {
-      /* Only erase region drawn from previous call to ME_PaintContent */
-      if (editor->nTotalLength < editor->nLastTotalLength)
-        rc.bottom = c.pt.y + editor->nLastTotalLength;
-      else
-        SetRectEmpty(&rc);
-    }
-
     IntersectRect(&rc, &rc, rcUpdate);
 
     if (!IsRectEmpty(&rc))
diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c
index cca2cb1..2d19119 100644
--- a/dlls/riched20/wrap.c
+++ b/dlls/riched20/wrap.c
@@ -753,6 +753,7 @@ void ME_InvalidateMarkedParagraphs(ME_TextEditor *editor)
                       + item->member.para.nHeight - ofs,
                       c.rcView.bottom);
       ITextHost_TxInvalidateRect(editor->texthost, &rc, TRUE);
+      item->member.para.nFlags &= ~MEPF_REPAINT;
     }
     item = item->member.para.next_para;
   }
-- 
1.7.4.1



More information about the wine-patches mailing list