riched20: Fix text replacement with text limit.
This commit is contained in:
parent
6d1402cd89
commit
4152c14df4
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue