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;
|
const WCHAR *pos;
|
||||||
ME_Cursor *p = NULL;
|
ME_Cursor *p = NULL;
|
||||||
|
int freeSpace;
|
||||||
|
|
||||||
|
/* FIXME really HERE ? */
|
||||||
|
if (ME_IsSelection(editor))
|
||||||
|
ME_DeleteSelection(editor);
|
||||||
|
|
||||||
/* FIXME: is this too slow? */
|
/* FIXME: is this too slow? */
|
||||||
/* Didn't affect performance for WM_SETTEXT (around 50sec/30K) */
|
/* 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 */
|
/* text operations set modified state */
|
||||||
editor->nModifyStep = 1;
|
editor->nModifyStep = 1;
|
||||||
|
|
||||||
assert(style);
|
assert(style);
|
||||||
|
|
||||||
/* FIXME really HERE ? */
|
|
||||||
if (ME_IsSelection(editor))
|
|
||||||
ME_DeleteSelection(editor);
|
|
||||||
|
|
||||||
assert(nCursor>=0 && nCursor<editor->nCursors);
|
assert(nCursor>=0 && nCursor<editor->nCursors);
|
||||||
if (len == -1)
|
if (len == -1)
|
||||||
len = lstrlenW(str);
|
len = lstrlenW(str);
|
||||||
|
|
|
@ -1019,7 +1019,9 @@ static void test_EM_LIMITTEXT(void)
|
||||||
static void test_EM_EXLIMITTEXT(void)
|
static void test_EM_EXLIMITTEXT(void)
|
||||||
{
|
{
|
||||||
int i, selBegin, selEnd, len1, len2;
|
int i, selBegin, selEnd, len1, len2;
|
||||||
|
int result;
|
||||||
char text[1024 + 1];
|
char text[1024 + 1];
|
||||||
|
char buffer[1024 + 1];
|
||||||
int textlimit = 0; /* multiple of 100 */
|
int textlimit = 0; /* multiple of 100 */
|
||||||
HWND hwndRichEdit = new_richedit(NULL);
|
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",
|
"EM_EXLIMITTEXT: No Change Expected\nOld Length: %d, New Length: %d, Limit: %d\n",
|
||||||
len1,len2,i);
|
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);
|
DestroyWindow(hwndRichEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue