[PATCH 4/5] riched20: Pass and return paragraph ptrs in the table append row function.
Huw Davies
huw at codeweavers.com
Wed Oct 21 04:05:55 CDT 2020
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/riched20/editor.c | 6 +-
dlls/riched20/editor.h | 4 +-
dlls/riched20/table.c | 126 +++++++++++++++++++++--------------------
3 files changed, 70 insertions(+), 66 deletions(-)
diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index dfb066d5976..5cf1ad35f59 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -2504,7 +2504,7 @@ static BOOL handle_enter(ME_TextEditor *editor)
if (para->member.para.nFlags & MEPF_ROWEND)
{
/* Add a new table row after this row. */
- para = ME_AppendTableRow(editor, para);
+ para = para_get_di( table_append_row( editor, ¶->member.para ) );
para = para->member.para.next_para;
editor->pCursors[0].pPara = para;
editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun);
@@ -2552,7 +2552,7 @@ static BOOL handle_enter(ME_TextEditor *editor)
if (from == to)
{
ME_ContinueCoalescingTransaction(editor);
- para = ME_AppendTableRow(editor, para);
+ para = para_get_di( table_append_row( editor, ¶->member.para ) );
editor->pCursors[0].pPara = para;
editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun);
editor->pCursors[0].nOffset = 0;
@@ -2583,7 +2583,7 @@ static BOOL handle_enter(ME_TextEditor *editor)
else
{
editor->pCursors[1] = editor->pCursors[0];
- para = ME_AppendTableRow(editor, para);
+ para = para_get_di( table_append_row( editor, ¶->member.para ) );
editor->pCursors[0].pPara = para;
editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun);
editor->pCursors[0].nOffset = 0;
diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index a43a6c2c1ed..b1cd75f2946 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -284,12 +284,12 @@ ME_DisplayItem *ME_InsertTableRowStartAtParagraph(ME_TextEditor *editor,
ME_DisplayItem *para) DECLSPEC_HIDDEN;
ME_DisplayItem *ME_InsertTableCellFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN;
ME_DisplayItem *ME_InsertTableRowEndFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN;
+ME_Paragraph *table_append_row( ME_TextEditor *editor, ME_Paragraph *table_row ) DECLSPEC_HIDDEN;
+ME_Paragraph *table_outer_para( ME_Paragraph *para ) DECLSPEC_HIDDEN;
ME_Paragraph *table_row_end( ME_Paragraph *para ) DECLSPEC_HIDDEN;
ME_Paragraph *table_row_start( ME_Paragraph *para ) DECLSPEC_HIDDEN;
-ME_Paragraph *table_outer_para( ME_Paragraph *para ) DECLSPEC_HIDDEN;
void ME_CheckTablesForCorruption(ME_TextEditor *editor) DECLSPEC_HIDDEN;
void ME_ProtectPartialTableDeletion(ME_TextEditor *editor, ME_Cursor *c, int *nChars) DECLSPEC_HIDDEN;
-ME_DisplayItem* ME_AppendTableRow(ME_TextEditor *editor, ME_DisplayItem *table_row) DECLSPEC_HIDDEN;
void ME_TabPressedInTable(ME_TextEditor *editor, BOOL bSelectedRow) DECLSPEC_HIDDEN;
void ME_MoveCursorFromTableRowStartParagraph(ME_TextEditor *editor) DECLSPEC_HIDDEN;
struct RTFTable *ME_MakeTableDef(ME_TextEditor *editor) DECLSPEC_HIDDEN;
diff --git a/dlls/riched20/table.c b/dlls/riched20/table.c
index 08c8fcb7ebf..a26715a5d80 100644
--- a/dlls/riched20/table.c
+++ b/dlls/riched20/table.c
@@ -398,98 +398,98 @@ void ME_ProtectPartialTableDeletion(ME_TextEditor *editor, ME_Cursor *c, int *nC
}
}
-ME_DisplayItem* ME_AppendTableRow(ME_TextEditor *editor,
- ME_DisplayItem *table_row)
+ME_Paragraph* table_append_row( ME_TextEditor *editor, ME_Paragraph *table_row )
{
WCHAR endl = '\r', tab = '\t';
- ME_DisplayItem *run;
+ ME_Run *run;
PARAFORMAT2 *pFmt;
int i;
assert(table_row);
- assert(table_row->type == diParagraph);
- if (!editor->bEmulateVersion10) { /* v4.1 */
- ME_DisplayItem *insertedCell, *para, *cell, *prevTableEnd;
- cell = ME_FindItemFwd( para_get_di( table_row_start( &table_row->member.para ) ), diCell );
- prevTableEnd = para_get_di( table_row_end( &table_row->member.para ) );
- para = prevTableEnd->member.para.next_para;
- run = ME_FindItemFwd(para, diRun);
- editor->pCursors[0].pPara = para;
- editor->pCursors[0].pRun = run;
+ if (!editor->bEmulateVersion10) /* v4.1 */
+ {
+ ME_DisplayItem *insertedCell, *cell;
+ ME_Paragraph *para, *prev_table_end;
+
+ cell = ME_FindItemFwd( para_get_di( table_row_start( table_row ) ), diCell );
+ prev_table_end = table_row_end( table_row );
+ para = para_next( prev_table_end );
+ run = para_first_run( para );
+ editor->pCursors[0].pPara = para_get_di( para );
+ editor->pCursors[0].pRun = run_get_di( run );
editor->pCursors[0].nOffset = 0;
editor->pCursors[1] = editor->pCursors[0];
- para = ME_InsertTableRowStartFromCursor(editor);
- insertedCell = ME_FindItemFwd(para, diCell);
+ para = &ME_InsertTableRowStartFromCursor(editor)->member.para;
+ insertedCell = ME_FindItemFwd( para_get_di( para ), diCell );
/* Copy cell properties */
insertedCell->member.cell.nRightBoundary = cell->member.cell.nRightBoundary;
insertedCell->member.cell.border = cell->member.cell.border;
- while (cell->member.cell.next_cell) {
+ while (cell->member.cell.next_cell)
+ {
cell = cell->member.cell.next_cell;
- para = ME_InsertTableCellFromCursor(editor);
- insertedCell = ME_FindItemBack(para, diCell);
+ para = &ME_InsertTableCellFromCursor( editor )->member.para;
+ insertedCell = ME_FindItemBack( para_get_di( para ), diCell );
/* Copy cell properties */
insertedCell->member.cell.nRightBoundary = cell->member.cell.nRightBoundary;
insertedCell->member.cell.border = cell->member.cell.border;
};
- para = ME_InsertTableRowEndFromCursor(editor);
- para->member.para.fmt = prevTableEnd->member.para.fmt;
+ para = &ME_InsertTableRowEndFromCursor(editor)->member.para;
+ para->fmt = prev_table_end->fmt;
/* return the table row start for the inserted paragraph */
- return ME_FindItemFwd(cell, diParagraph)->member.para.next_para;
- } else { /* v1.0 - 3.0 */
- run = ME_FindItemBack(table_row->member.para.next_para, diRun);
- pFmt = &table_row->member.para.fmt;
+ return para_next( &ME_FindItemFwd( cell, diParagraph )->member.para );
+ }
+ else /* v1.0 - 3.0 */
+ {
+ run = para_end_run( table_row );
+ pFmt = &table_row->fmt;
assert(pFmt->dwMask & PFM_TABLE && pFmt->wEffects & PFE_TABLE);
- editor->pCursors[0].pPara = table_row;
- editor->pCursors[0].pRun = run;
+ editor->pCursors[0].pPara = para_get_di( table_row );
+ editor->pCursors[0].pRun = run_get_di( run );
editor->pCursors[0].nOffset = 0;
editor->pCursors[1] = editor->pCursors[0];
- ME_InsertTextFromCursor(editor, 0, &endl, 1, run->member.run.style);
- run = editor->pCursors[0].pRun;
- for (i = 0; i < pFmt->cTabCount; i++) {
- ME_InsertTextFromCursor(editor, 0, &tab, 1, run->member.run.style);
- }
- return table_row->member.para.next_para;
+ ME_InsertTextFromCursor( editor, 0, &endl, 1, run->style );
+ run = &editor->pCursors[0].pRun->member.run;
+ for (i = 0; i < pFmt->cTabCount; i++)
+ ME_InsertTextFromCursor(editor, 0, &tab, 1, run->style);
+
+ return para_next( table_row );
}
}
/* Selects the next table cell or appends a new table row if at end of table */
-static void ME_SelectOrInsertNextCell(ME_TextEditor *editor,
- ME_DisplayItem *run)
+static void ME_SelectOrInsertNextCell( ME_TextEditor *editor, ME_DisplayItem *run )
{
- ME_DisplayItem *para = ME_GetParagraph(run);
+ ME_Paragraph *para = run->member.run.para;
int i;
assert(run && run->type == diRun);
assert(ME_IsInTable(run));
- if (!editor->bEmulateVersion10) { /* v4.1 */
+ if (!editor->bEmulateVersion10) /* v4.1 */
+ {
ME_DisplayItem *cell;
/* Get the initial cell */
- if (para->member.para.nFlags & MEPF_ROWSTART) {
- cell = para->member.para.next_para->member.para.pCell;
- } else if (para->member.para.nFlags & MEPF_ROWEND) {
- cell = para->member.para.prev_para->member.para.pCell;
- } else {
- cell = para->member.para.pCell;
- }
+ if (para->nFlags & MEPF_ROWSTART) cell = para_next( para )->pCell;
+ else if (para->nFlags & MEPF_ROWEND) cell = para_prev( para )->pCell;
+ else cell = para->pCell;
assert(cell);
+
/* Get the next cell. */
if (cell->member.cell.next_cell &&
cell->member.cell.next_cell->member.cell.next_cell)
{
cell = cell->member.cell.next_cell;
} else {
- para = table_row_end( &ME_FindItemFwd( cell, diParagraph )->member.para )->next_para;
- assert(para);
- if (para->member.para.nFlags & MEPF_ROWSTART) {
- cell = para->member.para.next_para->member.para.pCell;
- } else {
+ para = para_next( table_row_end( &ME_FindItemFwd( cell, diParagraph )->member.para ) );
+ if (para->nFlags & MEPF_ROWSTART) cell = para_next( para )->pCell;
+ else
+ {
/* Insert row */
- para = para->member.para.prev_para;
- para = ME_AppendTableRow( editor, para_get_di( table_row_start( ¶->member.para ) ) );
+ para = para_prev( para );
+ para = table_append_row( editor, table_row_start( para ) );
/* Put cursor at the start of the new table row */
- para = para->member.para.next_para;
- editor->pCursors[0].pPara = para;
- editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun);
+ para = para_next( para );
+ editor->pCursors[0].pPara = para_get_di( para );
+ editor->pCursors[0].pRun = run_get_di( para_first_run( para ) );
editor->pCursors[0].nOffset = 0;
editor->pCursors[1] = editor->pCursors[0];
ME_WrapMarkedParagraphs(editor);
@@ -506,7 +506,9 @@ static void ME_SelectOrInsertNextCell(ME_TextEditor *editor,
editor->pCursors[0].pPara = ME_GetParagraph(editor->pCursors[0].pRun);
editor->pCursors[0].nOffset = 0;
assert(editor->pCursors[1].pRun);
- } else { /* v1.0 - 3.0 */
+ }
+ else /* v1.0 - 3.0 */
+ {
if (run->member.run.nFlags & MERF_ENDPARA &&
ME_IsInTable(ME_FindItemFwd(run, diParagraphOrEnd)))
{
@@ -520,21 +522,23 @@ static void ME_SelectOrInsertNextCell(ME_TextEditor *editor,
run = ME_FindItemFwd(run, diRunOrParagraphOrEnd);
if (run->type != diRun)
{
- para = run;
- if (ME_IsInTable(para))
+ para = &run->member.para;
+ if (para_in_table( para ))
{
- run = ME_FindItemFwd(para, diRun);
+ run = run_get_di( para_first_run( para ) );
assert(run);
- editor->pCursors[0].pPara = para;
+ editor->pCursors[0].pPara = para_get_di( para );
editor->pCursors[0].pRun = run;
editor->pCursors[0].nOffset = 0;
i = 1;
- } else {
+ }
+ else
+ {
/* Insert table row */
- para = ME_AppendTableRow(editor, para->member.para.prev_para);
+ para = table_append_row( editor, para_prev( para ) );
/* Put cursor at the start of the new table row */
- editor->pCursors[0].pPara = para;
- editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun);
+ editor->pCursors[0].pPara = para_get_di( para );
+ editor->pCursors[0].pRun = run_get_di( para_first_run( para ) );
editor->pCursors[0].nOffset = 0;
editor->pCursors[1] = editor->pCursors[0];
ME_WrapMarkedParagraphs(editor);
--
2.23.0
More information about the wine-devel
mailing list