[PATCH 5/8] riched20: Maintain a ptr to the end-of-paragraph run.

Huw Davies huw at codeweavers.com
Fri Oct 7 04:49:34 CDT 2016


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/riched20/editstr.h | 1 +
 dlls/riched20/para.c    | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h
index 0e60a3d..fb88f71 100644
--- a/dlls/riched20/editstr.h
+++ b/dlls/riched20/editstr.h
@@ -201,6 +201,7 @@ typedef struct tagME_Paragraph
   POINT pt;
   int nHeight, nWidth;
   int nRows;
+  ME_Run *eop_run; /* ptr to the end-of-para run */
   struct tagME_DisplayItem *prev_para, *next_para;
 } ME_Paragraph;
 
diff --git a/dlls/riched20/para.c b/dlls/riched20/para.c
index e246e37..0174252 100644
--- a/dlls/riched20/para.c
+++ b/dlls/riched20/para.c
@@ -81,6 +81,8 @@ void ME_MakeFirstParagraph(ME_TextEditor *editor)
   run->member.run.len = eol_len;
   run->member.run.para = &para->member.para;
 
+  para->member.para.eop_run = &run->member.run;
+
   ME_InsertBefore(text->pLast, para);
   ME_InsertBefore(text->pLast, run);
   para->member.para.prev_para = text->pFirst;
@@ -272,6 +274,10 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
   ME_InsertBefore(run, new_para);
   ME_InsertBefore(new_para, end_run);
 
+  /* Fix up the paras' eop_run ptrs */
+  new_para->member.para.eop_run = run_para->member.para.eop_run;
+  run_para->member.para.eop_run = &end_run->member.run;
+
   if (!editor->bEmulateVersion10) { /* v4.1 */
     if (paraFlags & (MEPF_ROWSTART|MEPF_CELL))
     {
@@ -429,6 +435,9 @@ ME_DisplayItem *ME_JoinParagraphs(ME_TextEditor *editor, ME_DisplayItem *tp,
     pTmp->member.run.para = &tp->member.para;
   } while(1);
 
+  /* Fix up the para's eop_run ptr */
+  tp->member.para.eop_run = pNext->member.para.eop_run;
+
   ME_Remove(pRun);
   ME_DestroyDisplayItem(pRun);
 
-- 
2.8.2




More information about the wine-patches mailing list