Huw Davies : riched20: Pass a character ptr and length to SplitParagraph.
Alexandre Julliard
julliard at winehq.org
Tue Feb 5 13:25:26 CST 2013
Module: wine
Branch: master
Commit: 872a2ad0312c14fd5b1d40609f36f374204b6158
URL: http://source.winehq.org/git/wine.git/?a=commit;h=872a2ad0312c14fd5b1d40609f36f374204b6158
Author: Huw Davies <huw at codeweavers.com>
Date: Tue Feb 5 13:19:39 2013 +0000
riched20: Pass a character ptr and length to SplitParagraph.
---
dlls/riched20/caret.c | 13 ++++++-------
dlls/riched20/editor.h | 2 +-
dlls/riched20/para.c | 10 ++++++----
dlls/riched20/table.c | 13 +++++--------
dlls/riched20/undo.c | 4 +---
5 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index 4c7ee8a..1457778 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -558,13 +558,12 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor,
WCHAR space = ' ';
ME_InternalInsertTextFromCursor(editor, nCursor, &space, 1, style, 0);
} else {
- ME_String *eol_str;
+ const WCHAR cr = '\r', *eol_str = str;
- if (!editor->bEmulateVersion10) {
- WCHAR cr = '\r';
- eol_str = ME_MakeStringN(&cr, 1);
- } else {
- eol_str = ME_MakeStringN(str, eol_len);
+ if (!editor->bEmulateVersion10)
+ {
+ eol_str = &cr;
+ eol_len = 1;
}
p = &editor->pCursors[nCursor];
@@ -572,7 +571,7 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor,
ME_SplitRunSimple(editor, p);
tmp_style = ME_GetInsertStyle(editor, nCursor);
/* ME_SplitParagraph increases style refcount */
- tp = ME_SplitParagraph(editor, p->pRun, p->pRun->member.run.style, eol_str, 0);
+ tp = ME_SplitParagraph(editor, p->pRun, p->pRun->member.run.style, eol_str, eol_len, 0);
p->pRun = ME_FindItemFwd(tp, diRun);
p->pPara = tp;
end_run = ME_FindItemBack(tp, diRun);
diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index de1a7bc..2dbd7e0 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -202,7 +202,7 @@ 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, ME_String *eol_str, int paraFlags) 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;
diff --git a/dlls/riched20/para.c b/dlls/riched20/para.c
index 7960972..ccb025a 100644
--- a/dlls/riched20/para.c
+++ b/dlls/riched20/para.c
@@ -192,7 +192,7 @@ static BOOL ME_SetParaFormat(ME_TextEditor *editor, ME_DisplayItem *para, const
/* split paragraph at the beginning of the run */
ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
- ME_Style *style, ME_String *eol_str,
+ ME_Style *style, const WCHAR *eol_str, int eol_len,
int paraFlags)
{
ME_DisplayItem *next_para = NULL;
@@ -202,6 +202,7 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
int ofs, i;
ME_DisplayItem *pp;
int run_flags = MERF_ENDPARA;
+ ME_String *str;
if (!editor->bEmulateVersion10) { /* v4.1 */
/* At most 1 of MEPF_CELL, MEPF_ROWSTART, or MEPF_ROWEND should be set. */
@@ -218,7 +219,8 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
run_para = ME_GetParagraph(run);
assert(run_para->member.para.pFmt->cbSize == sizeof(PARAFORMAT2));
- end_run = ME_MakeRun(style, eol_str, run_flags);
+ str = ME_MakeStringN( eol_str, eol_len );
+ end_run = ME_MakeRun(style, str, run_flags);
ofs = end_run->member.run.nCharOfs = run->member.run.nCharOfs;
end_run->member.run.para = run->member.run.para;
@@ -244,7 +246,7 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
pp = ME_FindItemFwd(pp, diRunOrParagraphOrEnd);
}
new_para->member.para.nCharOfs = run_para->member.para.nCharOfs + ofs;
- new_para->member.para.nCharOfs += eol_str->nLen;
+ new_para->member.para.nCharOfs += eol_len;
new_para->member.para.nFlags = MEPF_REWRAP;
/* FIXME initialize format style and call ME_SetParaFormat blah blah */
@@ -311,7 +313,7 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run,
new_para->member.para.prev_para->member.para.nFlags |= MEPF_REWRAP;
/* we've added the end run, so we need to modify nCharOfs in the next paragraphs */
- ME_PropagateCharOffset(next_para, eol_str->nLen);
+ ME_PropagateCharOffset(next_para, eol_len);
editor->nParagraphs++;
return new_para;
diff --git a/dlls/riched20/table.c b/dlls/riched20/table.c
index 06287fb..d5fbfcb 100644
--- a/dlls/riched20/table.c
+++ b/dlls/riched20/table.c
@@ -58,7 +58,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit_lists);
static ME_DisplayItem* ME_InsertEndParaFromCursor(ME_TextEditor *editor,
int nCursor,
- ME_String *eol_str,
+ const WCHAR *eol_str, int eol_len,
int paraFlags)
{
ME_Style *pStyle = ME_GetInsertStyle(editor, nCursor);
@@ -67,7 +67,7 @@ static ME_DisplayItem* ME_InsertEndParaFromCursor(ME_TextEditor *editor,
if (cursor->nOffset)
ME_SplitRunSimple(editor, cursor);
- tp = ME_SplitParagraph(editor, cursor->pRun, pStyle, eol_str, paraFlags);
+ tp = ME_SplitParagraph(editor, cursor->pRun, pStyle, eol_str, eol_len, paraFlags);
ME_ReleaseStyle(pStyle);
cursor->pPara = tp;
cursor->pRun = ME_FindItemFwd(tp, diRun);
@@ -78,8 +78,7 @@ ME_DisplayItem* ME_InsertTableRowStartFromCursor(ME_TextEditor *editor)
{
ME_DisplayItem *para;
WCHAR cr_lf[] = {'\r', '\n', 0};
- ME_String *eol_str = ME_MakeStringN(cr_lf, 2);
- para = ME_InsertEndParaFromCursor(editor, 0, eol_str, MEPF_ROWSTART);
+ para = ME_InsertEndParaFromCursor(editor, 0, cr_lf, 2, MEPF_ROWSTART);
return para->member.para.prev_para;
}
@@ -122,8 +121,7 @@ ME_DisplayItem* ME_InsertTableCellFromCursor(ME_TextEditor *editor)
{
ME_DisplayItem *para;
WCHAR tab = '\t';
- ME_String *eol_str = ME_MakeStringN(&tab, 1);
- para = ME_InsertEndParaFromCursor(editor, 0, eol_str, MEPF_CELL);
+ para = ME_InsertEndParaFromCursor(editor, 0, &tab, 1, MEPF_CELL);
return para;
}
@@ -131,8 +129,7 @@ ME_DisplayItem* ME_InsertTableRowEndFromCursor(ME_TextEditor *editor)
{
ME_DisplayItem *para;
WCHAR cr_lf[] = {'\r', '\n', 0};
- ME_String *eol_str = ME_MakeStringN(cr_lf, 2);
- para = ME_InsertEndParaFromCursor(editor, 0, eol_str, MEPF_ROWEND);
+ para = ME_InsertEndParaFromCursor(editor, 0, cr_lf, 2, MEPF_ROWEND);
return para->member.para.prev_para;
}
diff --git a/dlls/riched20/undo.c b/dlls/riched20/undo.c
index bfac1ed..07926ed 100644
--- a/dlls/riched20/undo.c
+++ b/dlls/riched20/undo.c
@@ -394,9 +394,7 @@ static void ME_PlayUndoItem(ME_TextEditor *editor, struct undo_item *undo)
this_para->member.para.nFlags &= ~MEPF_ROWSTART;
}
new_para = ME_SplitParagraph(editor, tmp.pRun, tmp.pRun->member.run.style,
- undo->u.split_para.eol_str, paraFlags);
- /* ME_SplitParagraph owns eol_str */
- undo->u.split_para.eol_str = NULL;
+ 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.pFmt = undo->u.split_para.fmt;
More information about the wine-cvs
mailing list