Signed-off-by: Huw Davies <huw(a)codeweavers.com>
---
dlls/riched20/caret.c | 2 +-
dlls/riched20/editor.h | 14 ++++++++------
dlls/riched20/para.c | 38 +++++++++++++++++++-------------------
dlls/riched20/table.c | 10 +++++-----
dlls/riched20/undo.c | 20 ++++++++++----------
5 files changed, 43 insertions(+), 41 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index ffea3ee0c35..cce4755257c 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -619,7 +619,7 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor,
run = &cursor->pRun->member.run;
}
- new_para = &ME_SplitParagraph( editor, run_get_di( run ), style, eol_str, eol_len, 0 )->member.para;
+ new_para = para_split( editor, run, style, eol_str, eol_len, 0 );
end_run = para_end_run( para_prev( new_para ) );
/* Move any cursors that were at the end of the previous run to the beginning of the new para */
diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index fba9616ab4f..b0c3ec46214 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -198,7 +198,6 @@ void ME_SendRequestResize(ME_TextEditor *editor, BOOL force) DECLSPEC_HIDDEN;
ME_DisplayItem *ME_GetParagraph(ME_DisplayItem *run) DECLSPEC_HIDDEN;
void ME_GetSelectionParas(ME_TextEditor *editor, ME_DisplayItem **para, ME_DisplayItem **para_end) DECLSPEC_HIDDEN;
void ME_MakeFirstParagraph(ME_TextEditor *editor) DECLSPEC_HIDDEN;
-ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *rp, ME_Style *style, const WCHAR *eol_str, int eol_len, int paraFlags) DECLSPEC_HIDDEN;
ME_DisplayItem *ME_JoinParagraphs(ME_TextEditor *editor, ME_DisplayItem *tp,
BOOL keepFirstParaFormat) DECLSPEC_HIDDEN;
void ME_DumpParaStyle(ME_Paragraph *s) DECLSPEC_HIDDEN;
@@ -207,16 +206,19 @@ BOOL ME_SetSelectionParaFormat(ME_TextEditor *editor, const PARAFORMAT2 *pFmt) D
void ME_GetSelectionParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN;
void ME_MarkAllForWrapping(ME_TextEditor *editor) DECLSPEC_HIDDEN;
void ME_SetDefaultParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN;
-void para_num_init( ME_Context *c, ME_Paragraph *para ) DECLSPEC_HIDDEN;
-void para_num_clear( struct para_num *pn ) DECLSPEC_HIDDEN;
int get_total_width(ME_TextEditor *editor) DECLSPEC_HIDDEN;
-void para_mark_rewrap( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Run *para_end_run( ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Run *para_first_run( ME_Paragraph *para ) DECLSPEC_HIDDEN;
void para_mark_add( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
void para_mark_remove( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
+void para_mark_rewrap( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
ME_Paragraph *para_next( ME_Paragraph *para ) DECLSPEC_HIDDEN;
+void para_num_clear( struct para_num *pn ) DECLSPEC_HIDDEN;
+void para_num_init( ME_Context *c, ME_Paragraph *para ) DECLSPEC_HIDDEN;
ME_Paragraph *para_prev( ME_Paragraph *para ) DECLSPEC_HIDDEN;
-ME_Run *para_first_run( ME_Paragraph *para ) DECLSPEC_HIDDEN;
-ME_Run *para_end_run( ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Paragraph *para_split( ME_TextEditor *editor, ME_Run *run, ME_Style *style,
+ const WCHAR *eol_str, int eol_len, int paraFlags ) DECLSPEC_HIDDEN;
+
static inline ME_DisplayItem *para_get_di(ME_Paragraph *para)
{
return (ME_DisplayItem *)((ptrdiff_t)para - offsetof(ME_DisplayItem, member));
diff --git a/dlls/riched20/para.c b/dlls/riched20/para.c
index e9246fa7cf7..7251d1620a6 100644
--- a/dlls/riched20/para.c
+++ b/dlls/riched20/para.c
@@ -512,40 +512,40 @@ static BOOL ME_SetParaFormat(ME_TextEditor *editor, ME_Paragraph *para, const PA
}
/* split paragraph at the beginning of the run */
-ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
- ME_Style *style, const WCHAR *eol_str, int eol_len,
- int paraFlags)
+ME_Paragraph *para_split( ME_TextEditor *editor, ME_Run *run, ME_Style *style,
+ const WCHAR *eol_str, int eol_len, int paraFlags )
{
ME_Paragraph *new_para = para_create( editor ), *old_para, *next_para;
ME_Run *end_run, *next_run;
int ofs, i;
int run_flags = MERF_ENDPARA;
- if (!editor->bEmulateVersion10) { /* v4.1 */
+ if (!editor->bEmulateVersion10) /* v4.1 */
+ {
/* At most 1 of MEPF_CELL, MEPF_ROWSTART, or MEPF_ROWEND should be set. */
- assert(!(paraFlags & ~(MEPF_CELL|MEPF_ROWSTART|MEPF_ROWEND)));
- assert(!(paraFlags & (paraFlags-1)));
+ assert( !(paraFlags & ~(MEPF_CELL | MEPF_ROWSTART | MEPF_ROWEND)) );
+ assert( !(paraFlags & (paraFlags-1)) );
if (paraFlags == MEPF_CELL)
- run_flags |= MERF_ENDCELL;
+ run_flags |= MERF_ENDCELL;
else if (paraFlags == MEPF_ROWSTART)
- run_flags |= MERF_TABLESTART|MERF_HIDDEN;
- } else { /* v1.0 - v3.0 */
- assert(!(paraFlags & (MEPF_CELL|MEPF_ROWSTART|MEPF_ROWEND)));
+ run_flags |= MERF_TABLESTART | MERF_HIDDEN;
}
- assert(run->type == diRun);
- old_para = &ME_GetParagraph( run )->member.para;
+ else /* v1.0 - v3.0 */
+ assert( !(paraFlags & (MEPF_CELL |MEPF_ROWSTART | MEPF_ROWEND)) );
+
+ old_para = run->para;
assert( old_para->fmt.cbSize == sizeof(PARAFORMAT2) );
/* Clear any cached para numbering following this paragraph */
if (old_para->fmt.wNumbering)
para_num_clear_list( editor, old_para, &old_para->fmt );
- new_para->text = ME_VSplitString( old_para->text, run->member.run.nCharOfs );
+ new_para->text = ME_VSplitString( old_para->text, run->nCharOfs );
end_run = run_create( style, run_flags );
- ofs = end_run->nCharOfs = run->member.run.nCharOfs;
+ ofs = end_run->nCharOfs = run->nCharOfs;
end_run->len = eol_len;
- end_run->para = run->member.run.para;
+ end_run->para = run->para;
ME_AppendString( old_para->text, eol_str, eol_len );
next_para = &old_para->next_para->member.para;
@@ -555,14 +555,14 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
for (i = 0; i < editor->nCursors; i++)
{
if (editor->pCursors[i].pPara == para_get_di( old_para ) &&
- run->member.run.nCharOfs <= editor->pCursors[i].pRun->member.run.nCharOfs)
+ run->nCharOfs <= editor->pCursors[i].pRun->member.run.nCharOfs)
{
editor->pCursors[i].pPara = para_get_di( new_para );
}
}
/* the new paragraph will have a different starting offset, so update its runs */
- for (next_run = &run->member.run; next_run; next_run = run_next( next_run ))
+ for (next_run = run; next_run; next_run = run_next( next_run ))
{
next_run->nCharOfs -= ofs;
next_run->para = new_para;
@@ -584,7 +584,7 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
next_para->prev_para = para_get_di( new_para );
/* insert end run of the old paragraph, and new paragraph, into DI double linked list */
- ME_InsertBefore( run, para_get_di( new_para ) );
+ ME_InsertBefore( run_get_di( run ), para_get_di( new_para ) );
ME_InsertBefore( para_get_di( new_para ), run_get_di( end_run ) );
/* Fix up the paras' eop_run ptrs */
@@ -651,7 +651,7 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
ME_PropagateCharOffset( para_get_di( next_para ), eol_len );
editor->nParagraphs++;
- return para_get_di( new_para );
+ return new_para;
}
/* join tp with tp->member.para.next_para, keeping tp's style; this
diff --git a/dlls/riched20/table.c b/dlls/riched20/table.c
index 95b0fb0a8a6..876244c9706 100644
--- a/dlls/riched20/table.c
+++ b/dlls/riched20/table.c
@@ -64,16 +64,16 @@ static ME_DisplayItem* ME_InsertEndParaFromCursor(ME_TextEditor *editor,
int paraFlags)
{
ME_Style *pStyle = ME_GetInsertStyle(editor, nCursor);
- ME_DisplayItem *tp;
+ ME_Paragraph *para;
ME_Cursor* cursor = &editor->pCursors[nCursor];
if (cursor->nOffset) run_split( editor, cursor );
- tp = ME_SplitParagraph(editor, cursor->pRun, pStyle, eol_str, eol_len, paraFlags);
+ para = para_split( editor, &cursor->pRun->member.run, pStyle, eol_str, eol_len, paraFlags );
ME_ReleaseStyle(pStyle);
- cursor->pPara = tp;
- cursor->pRun = ME_FindItemFwd(tp, diRun);
- return tp;
+ cursor->pPara = para_get_di( para );
+ cursor->pRun = run_get_di( para_first_run( para ) );
+ return para_get_di( para );
}
ME_DisplayItem* ME_InsertTableRowStartFromCursor(ME_TextEditor *editor)
diff --git a/dlls/riched20/undo.c b/dlls/riched20/undo.c
index 3f3fd48bebd..5616c64005a 100644
--- a/dlls/riched20/undo.c
+++ b/dlls/riched20/undo.c
@@ -379,29 +379,29 @@ static void ME_PlayUndoItem(ME_TextEditor *editor, struct undo_item *undo)
case undo_split_para:
{
ME_Cursor tmp;
- ME_DisplayItem *this_para, *new_para;
+ ME_Paragraph *this_para, *new_para;
BOOL bFixRowStart;
int paraFlags = undo->u.split_para.flags & (MEPF_ROWSTART|MEPF_CELL|MEPF_ROWEND);
cursor_from_char_ofs( editor, undo->u.split_para.pos, &tmp );
if (tmp.nOffset) run_split( editor, &tmp );
- this_para = tmp.pPara;
- bFixRowStart = this_para->member.para.nFlags & MEPF_ROWSTART;
+ this_para = &tmp.pPara->member.para;
+ bFixRowStart = this_para->nFlags & MEPF_ROWSTART;
if (bFixRowStart)
{
/* Re-insert the paragraph before the table, making sure the nFlag value
* is correct. */
- this_para->member.para.nFlags &= ~MEPF_ROWSTART;
+ this_para->nFlags &= ~MEPF_ROWSTART;
}
- new_para = ME_SplitParagraph(editor, tmp.pRun, tmp.pRun->member.run.style,
- undo->u.split_para.eol_str->szData, undo->u.split_para.eol_str->nLen, paraFlags);
+ new_para = para_split( editor, &tmp.pRun->member.run, tmp.pRun->member.run.style,
+ undo->u.split_para.eol_str->szData, undo->u.split_para.eol_str->nLen, paraFlags );
if (bFixRowStart)
- new_para->member.para.nFlags |= MEPF_ROWSTART;
- new_para->member.para.fmt = undo->u.split_para.fmt;
- new_para->member.para.border = undo->u.split_para.border;
+ new_para->nFlags |= MEPF_ROWSTART;
+ new_para->fmt = undo->u.split_para.fmt;
+ new_para->border = undo->u.split_para.border;
if (paraFlags)
{
- ME_DisplayItem *pCell = new_para->member.para.pCell;
+ ME_DisplayItem *pCell = new_para->pCell;
pCell->member.cell.nRightBoundary = undo->u.split_para.cell_right_boundary;
pCell->member.cell.border = undo->u.split_para.cell_border;
}
--
2.23.0