Huw Davies : riched20: Pass the character ptr and string length directly to the break proc helper .
Alexandre Julliard
julliard at winehq.org
Tue Feb 5 13:25:25 CST 2013
Module: wine
Branch: master
Commit: 48b9ab37ac8029c4bb6625db976c166cacabc27d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=48b9ab37ac8029c4bb6625db976c166cacabc27d
Author: Huw Davies <huw at codeweavers.com>
Date: Mon Feb 4 09:53:38 2013 +0000
riched20: Pass the character ptr and string length directly to the break proc helper.
---
dlls/riched20/caret.c | 22 ++++++++++++----------
dlls/riched20/editor.h | 2 +-
dlls/riched20/string.c | 10 +++++-----
3 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index b5b618b..4c7ee8a 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -680,19 +680,21 @@ ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs)
/* Backward movement */
while (TRUE)
{
- nOffset = ME_CallWordBreakProc(editor, pRun->member.run.strText,
- nOffset, WB_MOVEWORDLEFT);
+ nOffset = ME_CallWordBreakProc(editor, get_text( &pRun->member.run, 0 ),
+ pRun->member.run.len, nOffset, WB_MOVEWORDLEFT);
if (nOffset)
break;
pOtherRun = ME_FindItemBack(pRun, diRunOrParagraph);
if (pOtherRun->type == diRun)
{
- if (ME_CallWordBreakProc(editor, pOtherRun->member.run.strText,
+ if (ME_CallWordBreakProc(editor, get_text( &pOtherRun->member.run, 0 ),
+ pOtherRun->member.run.len,
pOtherRun->member.run.len - 1,
WB_ISDELIMITER)
&& !(pRun->member.run.nFlags & MERF_ENDPARA)
&& !(cursor->pRun == pRun && cursor->nOffset == 0)
- && !ME_CallWordBreakProc(editor, pRun->member.run.strText, 0,
+ && !ME_CallWordBreakProc(editor, get_text( &pRun->member.run, 0 ),
+ pRun->member.run.len, 0,
WB_ISDELIMITER))
break;
pRun = pOtherRun;
@@ -724,18 +726,18 @@ ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs)
while (TRUE)
{
- if (last_delim && !ME_CallWordBreakProc(editor, pRun->member.run.strText,
- nOffset, WB_ISDELIMITER))
+ if (last_delim && !ME_CallWordBreakProc(editor, get_text( &pRun->member.run, 0 ),
+ pRun->member.run.len, nOffset, WB_ISDELIMITER))
break;
- nOffset = ME_CallWordBreakProc(editor, pRun->member.run.strText,
- nOffset, WB_MOVEWORDRIGHT);
+ nOffset = ME_CallWordBreakProc(editor, get_text( &pRun->member.run, 0 ),
+ pRun->member.run.len, nOffset, WB_MOVEWORDRIGHT);
if (nOffset < pRun->member.run.len)
break;
pOtherRun = ME_FindItemFwd(pRun, diRunOrParagraphOrEnd);
if (pOtherRun->type == diRun)
{
- last_delim = ME_CallWordBreakProc(editor, pRun->member.run.strText,
- nOffset - 1, WB_ISDELIMITER);
+ last_delim = ME_CallWordBreakProc(editor, get_text( &pRun->member.run, 0 ),
+ pRun->member.run.len, nOffset - 1, WB_ISDELIMITER);
pRun = pOtherRun;
nOffset = 0;
}
diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index f01494c..de1a7bc 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -105,7 +105,7 @@ void ME_DestroyString(ME_String *s) DECLSPEC_HIDDEN;
void ME_AppendString(ME_String *s1, const ME_String *s2) DECLSPEC_HIDDEN;
ME_String *ME_VSplitString(ME_String *orig, int nVPos) DECLSPEC_HIDDEN;
int ME_FindNonWhitespaceV(const ME_String *s, int nVChar) DECLSPEC_HIDDEN;
-int ME_CallWordBreakProc(ME_TextEditor *editor, ME_String *str, INT start, INT code) DECLSPEC_HIDDEN;
+int ME_CallWordBreakProc(ME_TextEditor *editor, WCHAR *str, INT len, INT start, INT code) DECLSPEC_HIDDEN;
void ME_StrDeleteV(ME_String *s, int nVChar, int nChars) DECLSPEC_HIDDEN;
/* smart helpers for A<->W conversions, they reserve/free memory and call MultiByte<->WideChar functions */
LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz) DECLSPEC_HIDDEN;
diff --git a/dlls/riched20/string.c b/dlls/riched20/string.c
index 1c0da24..8db1a3b 100644
--- a/dlls/riched20/string.c
+++ b/dlls/riched20/string.c
@@ -180,20 +180,20 @@ ME_WordBreakProc(LPWSTR s, INT start, INT len, INT code)
int
-ME_CallWordBreakProc(ME_TextEditor *editor, ME_String *str, INT start, INT code)
+ME_CallWordBreakProc(ME_TextEditor *editor, WCHAR *str, INT len, INT start, INT code)
{
if (!editor->pfnWordBreak) {
- return ME_WordBreakProc(str->szData, start, str->nLen*sizeof(WCHAR), code);
+ return ME_WordBreakProc(str, start, len * sizeof(WCHAR), code);
} else if (!editor->bEmulateVersion10) {
/* MSDN lied about the third parameter for EditWordBreakProc being the number
* of characters, it is actually the number of bytes of the string. */
- return editor->pfnWordBreak(str->szData, start, str->nLen*sizeof(WCHAR), code);
+ return editor->pfnWordBreak(str, start, len * sizeof(WCHAR), code);
} else {
int result;
- int buffer_size = WideCharToMultiByte(CP_ACP, 0, str->szData, str->nLen,
+ int buffer_size = WideCharToMultiByte(CP_ACP, 0, str, len,
NULL, 0, NULL, NULL);
char *buffer = heap_alloc(buffer_size);
- WideCharToMultiByte(CP_ACP, 0, str->szData, str->nLen,
+ WideCharToMultiByte(CP_ACP, 0, str, len,
buffer, buffer_size, NULL, NULL);
result = editor->pfnWordBreak((WCHAR*)buffer, start, buffer_size, code);
heap_free(buffer);
More information about the wine-cvs
mailing list