Clinton Stimpson : riched20: Fix text replacement with text limit.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Mar 29 14:43:33 CDT 2007
Module: wine
Branch: master
Commit: 4152c14df45819c0f2ea591d448293e61e7ab8c0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4152c14df45819c0f2ea591d448293e61e7ab8c0
Author: Clinton Stimpson <cjstimpson at utwire.net>
Date: Wed Mar 28 07:03:41 2007 -0600
riched20: Fix text replacement with text limit.
---
dlls/riched20/caret.c | 12 +++++++-----
dlls/riched20/tests/editor.c | 14 ++++++++++++++
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index f6e0d7f..3f9547e 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -431,19 +431,21 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor,
{
const WCHAR *pos;
ME_Cursor *p = NULL;
+ int freeSpace;
+
+ /* FIXME really HERE ? */
+ if (ME_IsSelection(editor))
+ ME_DeleteSelection(editor);
+
/* FIXME: is this too slow? */
/* Didn't affect performance for WM_SETTEXT (around 50sec/30K) */
- int freeSpace = editor->nTextLimit - ME_GetTextLength(editor);
+ freeSpace = editor->nTextLimit - ME_GetTextLength(editor);
/* text operations set modified state */
editor->nModifyStep = 1;
assert(style);
- /* FIXME really HERE ? */
- if (ME_IsSelection(editor))
- ME_DeleteSelection(editor);
-
assert(nCursor>=0 && nCursor<editor->nCursors);
if (len == -1)
len = lstrlenW(str);
diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c
index 71e82cb..4f95bfe 100644
--- a/dlls/riched20/tests/editor.c
+++ b/dlls/riched20/tests/editor.c
@@ -1019,7 +1019,9 @@ static void test_EM_LIMITTEXT(void)
static void test_EM_EXLIMITTEXT(void)
{
int i, selBegin, selEnd, len1, len2;
+ int result;
char text[1024 + 1];
+ char buffer[1024 + 1];
int textlimit = 0; /* multiple of 100 */
HWND hwndRichEdit = new_richedit(NULL);
@@ -1087,6 +1089,18 @@ static void test_EM_EXLIMITTEXT(void)
"EM_EXLIMITTEXT: No Change Expected\nOld Length: %d, New Length: %d, Limit: %d\n",
len1,len2,i);
+ /* set text up to the limit, select all the text, then add a char */
+ textlimit = 5;
+ memset(text, 'W', textlimit);
+ text[textlimit] = 0;
+ SendMessage(hwndRichEdit, EM_EXLIMITTEXT, 0, textlimit);
+ SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM) text);
+ SendMessage(hwndRichEdit, EM_SETSEL, 0, -1);
+ SendMessage(hwndRichEdit, WM_CHAR, 'A', 1);
+ SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buffer);
+ result = strcmp(buffer, "A");
+ ok(0 == result, "got string = \"%s\"\n", buffer);
+
DestroyWindow(hwndRichEdit);
}
More information about the wine-cvs
mailing list