[PATCH 4/5] riched20: Pass a run ptr to the run joining function.
Huw Davies
huw at codeweavers.com
Tue Oct 13 05:16:36 CDT 2020
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
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 f61caa64788..de029f5bcb4 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 c3bc7f50b39..eb5aeff0502 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 c7b99f5ee24..fda1d995577 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 );
}
}
}
--
2.23.0
More information about the wine-devel
mailing list