From: Jinoh Kang jinoh.kang.kr@gmail.com
Signed-off-by: Jinoh Kang jinoh.kang.kr@gmail.com --- dlls/riched20/tests/editor.c | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+)
diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c index 03c07829ee4..79ee7007873 100644 --- a/dlls/riched20/tests/editor.c +++ b/dlls/riched20/tests/editor.c @@ -7079,6 +7079,55 @@ static void test_undo_coalescing(void) DestroyWindow(hwnd); }
+static void test_undo_status_bug(void) +{ + HWND hwnd; + LRESULT lresult; + + hwnd = new_richedit(NULL); + + lresult = SendMessageA(hwnd, EM_CANUNDO, 0, 0); + ok(lresult == FALSE, "EM_CANUNDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_UNDO, 0, 0); + ok(lresult == FALSE, "EM_UNDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_CANREDO, 0, 0); + ok(lresult == FALSE, "EM_CANREDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_REDO, 0, 0); + ok(lresult == FALSE, "EM_REDO returned %Id\n", lresult); + + SendMessageA(hwnd, EM_SETSEL, 0, -1); + SendMessageA(hwnd, EM_REPLACESEL, TRUE, (LPARAM)"lorem"); + + lresult = SendMessageA(hwnd, EM_CANREDO, 0, 0); + ok(lresult == FALSE, "EM_CANREDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_REDO, 0, 0); + ok(lresult == FALSE, "EM_REDO returned %Id\n", lresult); + + lresult = SendMessageA(hwnd, EM_CANUNDO, 0, 0); + ok(lresult == TRUE, "EM_CANUNDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_UNDO, 0, 0); + ok(lresult == TRUE, "EM_UNDO returned %Id\n", lresult); + + lresult = SendMessageA(hwnd, EM_CANUNDO, 0, 0); + ok(lresult == FALSE, "EM_CANUNDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_UNDO, 0, 0); + todo_wine + ok(lresult == TRUE, "EM_UNDO returned %Id\n", lresult); + + lresult = SendMessageA(hwnd, EM_CANREDO, 0, 0); + ok(lresult == TRUE, "EM_CANREDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_REDO, 0, 0); + ok(lresult == TRUE, "EM_REDO returned %Id\n", lresult); + + lresult = SendMessageA(hwnd, EM_CANREDO, 0, 0); + ok(lresult == FALSE, "EM_CANREDO returned %Id\n", lresult); + lresult = SendMessageA(hwnd, EM_REDO, 0, 0); + todo_wine + ok(lresult == TRUE, "EM_REDO returned %Id\n", lresult); + + DestroyWindow(hwnd); +} + static LONG CALLBACK customWordBreakProc(WCHAR *text, int pos, int bytes, int code) { int length; @@ -9080,6 +9129,7 @@ START_TEST( editor ) test_EM_AUTOURLDETECT(); test_eventMask(); test_undo_coalescing(); + test_undo_status_bug(); test_word_movement(); test_EM_CHARFROMPOS(); test_SETPARAFORMAT();