Huw Davies : riched20: Pass a run ptr to the run joining function.

Alexandre Julliard julliard at winehq.org
Tue Oct 13 15:42:03 CDT 2020


Module: wine
Branch: master
Commit: 3cade70f14aeb12afef4ba53ec14eff3418abbd8
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=3cade70f14aeb12afef4ba53ec14eff3418abbd8

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Oct 13 11:16:36 2020 +0100

riched20: Pass a run ptr to the run joining function.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/riched20/editor.h |  2 +-
 dlls/riched20/run.c    | 33 ++++++++++++++++++---------------
 dlls/riched20/wrap.c   |  2 +-
 3 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index f61caa6478..de029f5bcb 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -131,7 +131,7 @@ int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Run *run, BOOL closest, B
 int ME_PointFromCharContext(ME_Context *c, ME_Run *pRun, int nOffset, BOOL visual_order) DECLSPEC_HIDDEN;
 int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset, BOOL visual_order) DECLSPEC_HIDDEN;
 BOOL ME_CanJoinRuns(const ME_Run *run1, const ME_Run *run2) DECLSPEC_HIDDEN;
-void ME_JoinRuns(ME_TextEditor *editor, ME_DisplayItem *p) DECLSPEC_HIDDEN;
+void run_join( ME_TextEditor *editor, ME_Run *run ) DECLSPEC_HIDDEN;
 ME_DisplayItem *ME_SplitRunSimple(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN;
 void ME_UpdateRunFlags(ME_TextEditor *editor, ME_Run *run) DECLSPEC_HIDDEN;
 SIZE ME_GetRunSizeCommon(ME_Context *c, const ME_Paragraph *para, ME_Run *run, int nLen,
diff --git a/dlls/riched20/run.c b/dlls/riched20/run.c
index c3bc7f50b3..eb5aeff050 100644
--- a/dlls/riched20/run.c
+++ b/dlls/riched20/run.c
@@ -237,31 +237,34 @@ void ME_RunOfsFromCharOfs(ME_TextEditor *editor,
 }
 
 /******************************************************************************
- * ME_JoinRuns
+ * run_join
  * 
  * Merges two adjacent runs, the one given as a parameter and the next one.
  */    
-void ME_JoinRuns(ME_TextEditor *editor, ME_DisplayItem *p)
+void run_join( ME_TextEditor *editor, ME_Run *run )
 {
-  ME_DisplayItem *pNext = p->next;
+  ME_Run *next = run_next( run );
   int i;
-  assert(p->type == diRun && pNext->type == diRun);
-  assert(p->member.run.nCharOfs != -1);
-  para_mark_rewrap( editor, &ME_GetParagraph( p )->member.para );
+
+  assert( run );
+  assert( run->nCharOfs != -1 );
+  para_mark_rewrap( editor, run->para );
 
   /* Update all cursors so that they don't contain the soon deleted run */
-  for (i=0; i<editor->nCursors; i++) {
-    if (editor->pCursors[i].pRun == pNext) {
-      editor->pCursors[i].pRun = p;
-      editor->pCursors[i].nOffset += p->member.run.len;
+  for (i = 0; i < editor->nCursors; i++)
+  {
+    if (&editor->pCursors[i].pRun->member.run == next)
+    {
+      editor->pCursors[i].pRun = run_get_di( run );
+      editor->pCursors[i].nOffset += run->len;
     }
   }
 
-  p->member.run.len += pNext->member.run.len;
-  ME_Remove(pNext);
-  ME_DestroyDisplayItem(pNext);
-  ME_UpdateRunFlags(editor, &p->member.run);
-  ME_CheckCharOffsets(editor);
+  run->len += next->len;
+  ME_Remove( run_get_di( next ) );
+  ME_DestroyDisplayItem( run_get_di( next ) );
+  ME_UpdateRunFlags( editor, run );
+  ME_CheckCharOffsets( editor );
 }
 
 /******************************************************************************
diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c
index c7b99f5ee2..fda1d99557 100644
--- a/dlls/riched20/wrap.c
+++ b/dlls/riched20/wrap.c
@@ -714,7 +714,7 @@ static void ME_PrepareParagraphForWrapping( ME_TextEditor *editor, ME_Context *c
         if (p->type == diRun)
         {
             while (p->next->type == diRun && ME_CanJoinRuns( &p->member.run, &p->next->member.run ))
-                ME_JoinRuns( c->editor, p );
+                run_join( c->editor, &p->member.run );
         }
     }
 }




More information about the wine-cvs mailing list