riched20: Return a para ptr from the insert start table row functions.
Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
fe70e7beb5
commit
caa1d4a480
|
@ -585,27 +585,29 @@ void ME_RTFParAttrHook(RTF_Info *info)
|
|||
|
||||
if (!info->editor->bEmulateVersion10) /* v4.1 */
|
||||
{
|
||||
if (info->tableDef && info->tableDef->tableRowStart &&
|
||||
info->tableDef->tableRowStart->member.para.nFlags & MEPF_ROWEND)
|
||||
if (info->tableDef && info->tableDef->row_start &&
|
||||
info->tableDef->row_start->nFlags & MEPF_ROWEND)
|
||||
{
|
||||
ME_Cursor cursor;
|
||||
ME_DisplayItem *para;
|
||||
ME_Paragraph *para;
|
||||
/* We are just after a table row. */
|
||||
RTFFlushOutputBuffer(info);
|
||||
cursor = info->editor->pCursors[0];
|
||||
para = cursor.pPara;
|
||||
if (para == info->tableDef->tableRowStart->member.para.next_para
|
||||
para = &cursor.pPara->member.para;
|
||||
if (para == para_next( info->tableDef->row_start )
|
||||
&& !cursor.nOffset && !cursor.pRun->member.run.nCharOfs)
|
||||
{
|
||||
/* Since the table row end, no text has been inserted, and the \intbl
|
||||
* control word has not be used. We can confirm that we are not in a
|
||||
* table anymore.
|
||||
*/
|
||||
info->tableDef->tableRowStart = NULL;
|
||||
info->tableDef->row_start = NULL;
|
||||
info->canInheritInTbl = FALSE;
|
||||
}
|
||||
}
|
||||
} else { /* v1.0 - v3.0 */
|
||||
}
|
||||
else /* v1.0 - v3.0 */
|
||||
{
|
||||
info->fmt.dwMask |= PFM_TABLE;
|
||||
info->fmt.wEffects &= ~PFE_TABLE;
|
||||
}
|
||||
|
@ -613,26 +615,26 @@ void ME_RTFParAttrHook(RTF_Info *info)
|
|||
case rtfNestLevel:
|
||||
if (!info->editor->bEmulateVersion10) /* v4.1 */
|
||||
{
|
||||
while (info->rtfParam > info->nestingLevel) {
|
||||
while (info->rtfParam > info->nestingLevel)
|
||||
{
|
||||
RTFTable *tableDef = heap_alloc_zero(sizeof(*tableDef));
|
||||
tableDef->parent = info->tableDef;
|
||||
info->tableDef = tableDef;
|
||||
|
||||
RTFFlushOutputBuffer(info);
|
||||
if (tableDef->tableRowStart &&
|
||||
tableDef->tableRowStart->member.para.nFlags & MEPF_ROWEND)
|
||||
if (tableDef->row_start && tableDef->row_start->nFlags & MEPF_ROWEND)
|
||||
{
|
||||
ME_Paragraph *para = para_next( tableDef->row_start );
|
||||
tableDef->row_start = table_insert_row_start_at_para( info->editor, para );
|
||||
}
|
||||
else
|
||||
{
|
||||
ME_DisplayItem *para = tableDef->tableRowStart;
|
||||
para = para->member.para.next_para;
|
||||
para = ME_InsertTableRowStartAtParagraph(info->editor, para);
|
||||
tableDef->tableRowStart = para;
|
||||
} else {
|
||||
ME_Cursor cursor;
|
||||
WCHAR endl = '\r';
|
||||
cursor = info->editor->pCursors[0];
|
||||
if (cursor.nOffset || cursor.pRun->member.run.nCharOfs)
|
||||
ME_InsertTextFromCursor(info->editor, 0, &endl, 1, info->style);
|
||||
tableDef->tableRowStart = ME_InsertTableRowStartFromCursor(info->editor);
|
||||
tableDef->row_start = table_insert_row_start( info->editor, info->editor->pCursors );
|
||||
}
|
||||
|
||||
info->nestingLevel++;
|
||||
|
@ -647,21 +649,19 @@ void ME_RTFParAttrHook(RTF_Info *info)
|
|||
if (info->nestingLevel < 1)
|
||||
{
|
||||
RTFTable *tableDef;
|
||||
ME_Paragraph *para;
|
||||
|
||||
if (!info->tableDef)
|
||||
info->tableDef = heap_alloc_zero(sizeof(*info->tableDef));
|
||||
tableDef = info->tableDef;
|
||||
RTFFlushOutputBuffer(info);
|
||||
if (tableDef->tableRowStart &&
|
||||
tableDef->tableRowStart->member.para.nFlags & MEPF_ROWEND)
|
||||
{
|
||||
ME_DisplayItem *para = tableDef->tableRowStart;
|
||||
para = para->member.para.next_para;
|
||||
para = ME_InsertTableRowStartAtParagraph(info->editor, para);
|
||||
tableDef->tableRowStart = para;
|
||||
}
|
||||
if (tableDef->row_start && tableDef->row_start->nFlags & MEPF_ROWEND)
|
||||
para = para_next( tableDef->row_start );
|
||||
else
|
||||
tableDef->tableRowStart = ME_InsertTableRowStartAtParagraph( info->editor,
|
||||
info->editor->pCursors[0].pPara );
|
||||
para = &info->editor->pCursors[0].pPara->member.para;
|
||||
|
||||
tableDef->row_start = table_insert_row_start_at_para( info->editor, para );
|
||||
|
||||
info->nestingLevel = 1;
|
||||
info->canInheritInTbl = TRUE;
|
||||
}
|
||||
|
@ -956,25 +956,24 @@ void ME_RTFSpecialCharHook(RTF_Info *info)
|
|||
if (!tableDef)
|
||||
break;
|
||||
RTFFlushOutputBuffer(info);
|
||||
if (!info->editor->bEmulateVersion10) { /* v4.1 */
|
||||
if (tableDef->tableRowStart)
|
||||
if (!info->editor->bEmulateVersion10) /* v4.1 */
|
||||
{
|
||||
if (tableDef->row_start)
|
||||
{
|
||||
if (!info->nestingLevel &&
|
||||
tableDef->tableRowStart->member.para.nFlags & MEPF_ROWEND)
|
||||
if (!info->nestingLevel && tableDef->row_start->nFlags & MEPF_ROWEND)
|
||||
{
|
||||
ME_DisplayItem *para = tableDef->tableRowStart;
|
||||
para = para->member.para.next_para;
|
||||
para = ME_InsertTableRowStartAtParagraph(info->editor, para);
|
||||
tableDef->tableRowStart = para;
|
||||
ME_Paragraph *para = para_next( tableDef->row_start );
|
||||
tableDef->row_start = table_insert_row_start_at_para( info->editor, para );
|
||||
info->nestingLevel = 1;
|
||||
}
|
||||
ME_InsertTableCellFromCursor(info->editor);
|
||||
}
|
||||
} else { /* v1.0 - v3.0 */
|
||||
ME_DisplayItem *para = info->editor->pCursors[0].pPara;
|
||||
PARAFORMAT2 *pFmt = ¶->member.para.fmt;
|
||||
if (pFmt->dwMask & PFM_TABLE && pFmt->wEffects & PFE_TABLE &&
|
||||
tableDef->numCellsInserted < tableDef->numCellsDefined)
|
||||
}
|
||||
else /* v1.0 - v3.0 */
|
||||
{
|
||||
ME_Paragraph *para = &info->editor->pCursors[0].pPara->member.para;
|
||||
|
||||
if (para_in_table( para ) && tableDef->numCellsInserted < tableDef->numCellsDefined)
|
||||
{
|
||||
WCHAR tab = '\t';
|
||||
ME_InsertTextFromCursor(info->editor, 0, &tab, 1, info->style);
|
||||
|
@ -988,26 +987,24 @@ void ME_RTFSpecialCharHook(RTF_Info *info)
|
|||
/* else fall through since v4.1 treats rtfNestRow and rtfRow the same */
|
||||
case rtfRow:
|
||||
{
|
||||
ME_DisplayItem *para, *cell, *run;
|
||||
ME_DisplayItem *cell, *run;
|
||||
ME_Paragraph *para;
|
||||
int i;
|
||||
|
||||
if (!tableDef)
|
||||
break;
|
||||
RTFFlushOutputBuffer(info);
|
||||
if (!info->editor->bEmulateVersion10) { /* v4.1 */
|
||||
if (!tableDef->tableRowStart)
|
||||
break;
|
||||
if (!info->nestingLevel &&
|
||||
tableDef->tableRowStart->member.para.nFlags & MEPF_ROWEND)
|
||||
if (!info->editor->bEmulateVersion10) /* v4.1 */
|
||||
{
|
||||
if (!tableDef->row_start) break;
|
||||
if (!info->nestingLevel && tableDef->row_start->nFlags & MEPF_ROWEND)
|
||||
{
|
||||
para = tableDef->tableRowStart;
|
||||
para = para->member.para.next_para;
|
||||
para = ME_InsertTableRowStartAtParagraph(info->editor, para);
|
||||
tableDef->tableRowStart = para;
|
||||
para = para_next( tableDef->row_start );
|
||||
tableDef->row_start = table_insert_row_start_at_para( info->editor, para );
|
||||
info->nestingLevel++;
|
||||
}
|
||||
para = tableDef->tableRowStart;
|
||||
cell = ME_FindItemFwd(para, diCell);
|
||||
para = tableDef->row_start;
|
||||
cell = ME_FindItemFwd( para_get_di( para ), diCell );
|
||||
assert(cell && !cell->member.cell.prev_cell);
|
||||
if (tableDef->numCellsDefined < 1)
|
||||
{
|
||||
|
@ -1021,10 +1018,12 @@ void ME_RTFSpecialCharHook(RTF_Info *info)
|
|||
nRightBoundary += defaultCellSize;
|
||||
cell->member.cell.nRightBoundary = nRightBoundary;
|
||||
}
|
||||
para = ME_InsertTableCellFromCursor(info->editor);
|
||||
cell = para->member.para.pCell;
|
||||
para = &ME_InsertTableCellFromCursor(info->editor)->member.para;
|
||||
cell = para->pCell;
|
||||
cell->member.cell.nRightBoundary = nRightBoundary;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < tableDef->numCellsDefined; i++)
|
||||
{
|
||||
RTFCell *cellDef = &tableDef->cells[i];
|
||||
|
@ -1034,8 +1033,8 @@ void ME_RTFSpecialCharHook(RTF_Info *info)
|
|||
cell = cell->member.cell.next_cell;
|
||||
if (!cell)
|
||||
{
|
||||
para = ME_InsertTableCellFromCursor(info->editor);
|
||||
cell = para->member.para.pCell;
|
||||
para = &ME_InsertTableCellFromCursor(info->editor)->member.para;
|
||||
cell = para->pCell;
|
||||
}
|
||||
}
|
||||
/* Cell for table row delimiter is empty */
|
||||
|
@ -1057,45 +1056,47 @@ void ME_RTFSpecialCharHook(RTF_Info *info)
|
|||
nChars, TRUE);
|
||||
}
|
||||
|
||||
para = ME_InsertTableRowEndFromCursor(info->editor);
|
||||
para->member.para.fmt.dxOffset = abs(info->tableDef->gapH);
|
||||
para->member.para.fmt.dxStartIndent = info->tableDef->leftEdge;
|
||||
ME_ApplyBorderProperties(info, ¶->member.para.border,
|
||||
tableDef->border);
|
||||
para = &ME_InsertTableRowEndFromCursor(info->editor)->member.para;
|
||||
para->fmt.dxOffset = abs(info->tableDef->gapH);
|
||||
para->fmt.dxStartIndent = info->tableDef->leftEdge;
|
||||
ME_ApplyBorderProperties( info, ¶->border, tableDef->border );
|
||||
info->nestingLevel--;
|
||||
if (!info->nestingLevel)
|
||||
{
|
||||
if (info->canInheritInTbl) {
|
||||
tableDef->tableRowStart = para;
|
||||
} else {
|
||||
while (info->tableDef) {
|
||||
if (info->canInheritInTbl) tableDef->row_start = para;
|
||||
else
|
||||
{
|
||||
while (info->tableDef)
|
||||
{
|
||||
tableDef = info->tableDef;
|
||||
info->tableDef = tableDef->parent;
|
||||
heap_free(tableDef);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
info->tableDef = tableDef->parent;
|
||||
heap_free(tableDef);
|
||||
}
|
||||
} else { /* v1.0 - v3.0 */
|
||||
}
|
||||
else /* v1.0 - v3.0 */
|
||||
{
|
||||
WCHAR endl = '\r';
|
||||
ME_DisplayItem *para = info->editor->pCursors[0].pPara;
|
||||
PARAFORMAT2 *pFmt = ¶->member.para.fmt;
|
||||
pFmt->dxOffset = info->tableDef->gapH;
|
||||
pFmt->dxStartIndent = info->tableDef->leftEdge;
|
||||
|
||||
ME_ApplyBorderProperties(info, ¶->member.para.border,
|
||||
tableDef->border);
|
||||
para = &info->editor->pCursors[0].pPara->member.para;
|
||||
para->fmt.dxOffset = info->tableDef->gapH;
|
||||
para->fmt.dxStartIndent = info->tableDef->leftEdge;
|
||||
|
||||
ME_ApplyBorderProperties( info, ¶->border, tableDef->border );
|
||||
while (tableDef->numCellsInserted < tableDef->numCellsDefined)
|
||||
{
|
||||
WCHAR tab = '\t';
|
||||
ME_InsertTextFromCursor(info->editor, 0, &tab, 1, info->style);
|
||||
tableDef->numCellsInserted++;
|
||||
}
|
||||
pFmt->cTabCount = min(tableDef->numCellsDefined, MAX_TAB_STOPS);
|
||||
if (!tableDef->numCellsDefined)
|
||||
pFmt->wEffects &= ~PFE_TABLE;
|
||||
para->fmt.cTabCount = min(tableDef->numCellsDefined, MAX_TAB_STOPS);
|
||||
if (!tableDef->numCellsDefined) para->fmt.wEffects &= ~PFE_TABLE;
|
||||
ME_InsertTextFromCursor(info->editor, 0, &endl, 1, info->style);
|
||||
tableDef->numCellsInserted = 0;
|
||||
}
|
||||
|
@ -1103,13 +1104,13 @@ void ME_RTFSpecialCharHook(RTF_Info *info)
|
|||
}
|
||||
case rtfTab:
|
||||
case rtfPar:
|
||||
if (info->editor->bEmulateVersion10) { /* v1.0 - 3.0 */
|
||||
ME_DisplayItem *para;
|
||||
PARAFORMAT2 *pFmt;
|
||||
if (info->editor->bEmulateVersion10) /* v1.0 - 3.0 */
|
||||
{
|
||||
ME_Paragraph *para;
|
||||
|
||||
RTFFlushOutputBuffer(info);
|
||||
para = info->editor->pCursors[0].pPara;
|
||||
pFmt = ¶->member.para.fmt;
|
||||
if (pFmt->dwMask & PFM_TABLE && pFmt->wEffects & PFE_TABLE)
|
||||
para = &info->editor->pCursors[0].pPara->member.para;
|
||||
if (para_in_table( para ))
|
||||
{
|
||||
/* rtfPar is treated like a space within a table. */
|
||||
info->rtfClass = rtfText;
|
||||
|
@ -1695,13 +1696,14 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre
|
|||
/* do the parsing */
|
||||
RTFRead(&parser);
|
||||
RTFFlushOutputBuffer(&parser);
|
||||
if (!editor->bEmulateVersion10) { /* v4.1 */
|
||||
if (parser.tableDef && parser.tableDef->tableRowStart &&
|
||||
if (!editor->bEmulateVersion10) /* v4.1 */
|
||||
{
|
||||
if (parser.tableDef && parser.tableDef->row_start &&
|
||||
(parser.nestingLevel > 0 || parser.canInheritInTbl))
|
||||
{
|
||||
/* Delete any incomplete table row at the end of the rich text. */
|
||||
int nOfs, nChars;
|
||||
ME_DisplayItem *para;
|
||||
ME_Paragraph *para;
|
||||
|
||||
parser.rtfMinor = rtfRow;
|
||||
/* Complete the table row before deleting it.
|
||||
|
@ -1712,23 +1714,24 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre
|
|||
{
|
||||
while (parser.nestingLevel > 1)
|
||||
ME_RTFSpecialCharHook(&parser); /* Decrements nestingLevel */
|
||||
para = parser.tableDef->tableRowStart;
|
||||
para = parser.tableDef->row_start;
|
||||
ME_RTFSpecialCharHook(&parser);
|
||||
} else {
|
||||
para = parser.tableDef->tableRowStart;
|
||||
}
|
||||
else
|
||||
{
|
||||
para = parser.tableDef->row_start;
|
||||
ME_RTFSpecialCharHook(&parser);
|
||||
assert(para->member.para.nFlags & MEPF_ROWEND);
|
||||
para = para->member.para.next_para;
|
||||
assert( para->nFlags & MEPF_ROWEND );
|
||||
para = para_next( para );
|
||||
}
|
||||
|
||||
editor->pCursors[1].pPara = para;
|
||||
editor->pCursors[1].pRun = ME_FindItemFwd(para, diRun);
|
||||
editor->pCursors[1].pPara = para_get_di( para );
|
||||
editor->pCursors[1].pRun = run_get_di( para_first_run( para ) );
|
||||
editor->pCursors[1].nOffset = 0;
|
||||
nOfs = ME_GetCursorOfs(&editor->pCursors[1]);
|
||||
nChars = ME_GetCursorOfs(&editor->pCursors[0]) - nOfs;
|
||||
ME_InternalDeleteText(editor, &editor->pCursors[1], nChars, TRUE);
|
||||
if (parser.tableDef)
|
||||
parser.tableDef->tableRowStart = NULL;
|
||||
if (parser.tableDef) parser.tableDef->row_start = NULL;
|
||||
}
|
||||
}
|
||||
ME_CheckTablesForCorruption(editor);
|
||||
|
|
|
@ -279,12 +279,11 @@ ME_Paragraph *editor_first_para( ME_TextEditor *editor ) DECLSPEC_HIDDEN;
|
|||
|
||||
/* table.c */
|
||||
BOOL ME_IsInTable(ME_DisplayItem *pItem) DECLSPEC_HIDDEN;
|
||||
ME_DisplayItem *ME_InsertTableRowStartFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN;
|
||||
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_insert_row_start( ME_TextEditor *editor, ME_Cursor *cursor ) DECLSPEC_HIDDEN;
|
||||
ME_Paragraph *table_insert_row_start_at_para( ME_TextEditor *editor, ME_Paragraph *para ) 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;
|
||||
|
|
|
@ -1035,10 +1035,10 @@ struct RTFTable
|
|||
int numCellsInserted;
|
||||
|
||||
/* v4.1 */
|
||||
/* tableRowStart may be the start row paragraph of the table row,
|
||||
/* row_start may be the start row paragraph of the table row,
|
||||
* or it may store the end of the previous row if it may still be
|
||||
* continued, otherwise NULL is stored. */
|
||||
ME_DisplayItem *tableRowStart;
|
||||
ME_Paragraph *row_start;
|
||||
|
||||
/* Table definitions are stored as a stack to support nested tables. */
|
||||
RTFTable *parent;
|
||||
|
|
|
@ -73,44 +73,41 @@ static ME_Paragraph* table_insert_end_para( ME_TextEditor *editor, ME_Cursor *cu
|
|||
return para;
|
||||
}
|
||||
|
||||
ME_DisplayItem* ME_InsertTableRowStartFromCursor(ME_TextEditor *editor)
|
||||
ME_Paragraph* table_insert_row_start( ME_TextEditor *editor, ME_Cursor *cursor )
|
||||
{
|
||||
ME_Paragraph *para;
|
||||
|
||||
para = table_insert_end_para( editor, editor->pCursors, cr_lf, 2, MEPF_ROWSTART );
|
||||
return para_get_di( para_prev( para ) );
|
||||
para = table_insert_end_para( editor, cursor, cr_lf, 2, MEPF_ROWSTART );
|
||||
return para_prev( para );
|
||||
}
|
||||
|
||||
ME_DisplayItem* ME_InsertTableRowStartAtParagraph(ME_TextEditor *editor,
|
||||
ME_DisplayItem *para)
|
||||
ME_Paragraph* table_insert_row_start_at_para( ME_TextEditor *editor, ME_Paragraph *para )
|
||||
{
|
||||
ME_DisplayItem *prev_para, *end_para;
|
||||
ME_Cursor savedCursor = editor->pCursors[0];
|
||||
ME_DisplayItem *startRowPara;
|
||||
editor->pCursors[0].pPara = para;
|
||||
editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun);
|
||||
editor->pCursors[0].nOffset = 0;
|
||||
editor->pCursors[1] = editor->pCursors[0];
|
||||
startRowPara = ME_InsertTableRowStartFromCursor(editor);
|
||||
savedCursor.pPara = ME_GetParagraph(savedCursor.pRun);
|
||||
editor->pCursors[0] = savedCursor;
|
||||
editor->pCursors[1] = editor->pCursors[0];
|
||||
ME_Paragraph *prev_para, *end_para, *start_row;
|
||||
ME_Cursor cursor;
|
||||
|
||||
end_para = editor->pCursors[0].pPara->member.para.next_para;
|
||||
prev_para = startRowPara->member.para.next_para;
|
||||
para = prev_para->member.para.next_para;
|
||||
while (para != end_para)
|
||||
{
|
||||
para->member.para.pCell = prev_para->member.para.pCell;
|
||||
para->member.para.nFlags |= MEPF_CELL;
|
||||
para->member.para.nFlags &= ~(MEPF_ROWSTART|MEPF_ROWEND);
|
||||
para->member.para.fmt.dwMask |= PFM_TABLE|PFM_TABLEROWDELIMITER;
|
||||
para->member.para.fmt.wEffects |= PFE_TABLE;
|
||||
para->member.para.fmt.wEffects &= ~PFE_TABLEROWDELIMITER;
|
||||
prev_para = para;
|
||||
para = para->member.para.next_para;
|
||||
}
|
||||
return startRowPara;
|
||||
cursor.pPara = para_get_di( para );
|
||||
cursor.pRun = run_get_di( para_first_run( para ) );
|
||||
cursor.nOffset = 0;
|
||||
|
||||
start_row = table_insert_row_start( editor, &cursor );
|
||||
|
||||
end_para = para_next( &editor->pCursors[0].pPara->member.para );
|
||||
prev_para = para_next( start_row );
|
||||
para = para_next( prev_para );
|
||||
|
||||
while (para != end_para)
|
||||
{
|
||||
para->pCell = prev_para->pCell;
|
||||
para->nFlags |= MEPF_CELL;
|
||||
para->nFlags &= ~(MEPF_ROWSTART | MEPF_ROWEND);
|
||||
para->fmt.dwMask |= PFM_TABLE | PFM_TABLEROWDELIMITER;
|
||||
para->fmt.wEffects |= PFE_TABLE;
|
||||
para->fmt.wEffects &= ~PFE_TABLEROWDELIMITER;
|
||||
prev_para = para;
|
||||
para = para_next( para );
|
||||
}
|
||||
return start_row;
|
||||
}
|
||||
|
||||
/* Inserts a diCell and starts a new paragraph for the next cell.
|
||||
|
@ -419,7 +416,7 @@ ME_Paragraph* table_append_row( ME_TextEditor *editor, ME_Paragraph *table_row )
|
|||
editor->pCursors[0].pRun = run_get_di( run );
|
||||
editor->pCursors[0].nOffset = 0;
|
||||
editor->pCursors[1] = editor->pCursors[0];
|
||||
para = &ME_InsertTableRowStartFromCursor(editor)->member.para;
|
||||
para = table_insert_row_start( editor, editor->pCursors );
|
||||
insertedCell = ME_FindItemFwd( para_get_di( para ), diCell );
|
||||
/* Copy cell properties */
|
||||
insertedCell->member.cell.nRightBoundary = cell->member.cell.nRightBoundary;
|
||||
|
|
Loading…
Reference in New Issue