From c0c36fba709a53eecdebf8b7cd4b4e37027a3a89 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Mon, 30 Mar 2015 19:39:13 +0200 Subject: [PATCH] riched20: EM_SETSEL should not return 0. --- dlls/riched20/editor.c | 3 +-- dlls/riched20/tests/editor.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index 146e4be79c6..171ec692513 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -3308,8 +3308,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, } case EM_SETSEL: { - handle_EM_EXSETSEL( editor, wParam, lParam ); - return 0; + return handle_EM_EXSETSEL( editor, wParam, lParam ); } case EM_SETSCROLLPOS: { diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c index 151fcbae4aa..65752afe702 100644 --- a/dlls/riched20/tests/editor.c +++ b/dlls/riched20/tests/editor.c @@ -4454,6 +4454,43 @@ static void test_EM_EXSETSEL(void) DestroyWindow(hwndRichEdit); } +static void check_EM_SETSEL(HWND hwnd, const struct exsetsel_s *setsel, int id) { + LRESULT result; + int start, end; + + result = SendMessageA(hwnd, EM_SETSEL, setsel->min, setsel->max); + + ok(result == setsel->expected_retval, "EM_SETSEL(%d): expected: %ld actual: %ld\n", id, setsel->expected_retval, result); + + SendMessageA(hwnd, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + + if (setsel->_getsel_todo_wine) { + todo_wine { + ok(start == setsel->expected_getsel_start && end == setsel->expected_getsel_end, "EM_SETSEL(%d): expected (%d,%d) actual:(%d,%d)\n", id, setsel->expected_getsel_start, setsel->expected_getsel_end, start, end); + } + } else { + ok(start == setsel->expected_getsel_start && end == setsel->expected_getsel_end, "EM_SETSEL(%d): expected (%d,%d) actual:(%d,%d)\n", id, setsel->expected_getsel_start, setsel->expected_getsel_end, start, end); + } +} + +static void test_EM_SETSEL(void) +{ + HWND hwndRichEdit = new_richedit(NULL); + int i; + const int num_tests = sizeof(exsetsel_tests)/sizeof(struct exsetsel_s); + + /* sending some text to the window */ + SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"testing selection"); + /* 01234567890123456*/ + /* 10 */ + + for (i = 0; i < num_tests; i++) { + check_EM_SETSEL(hwndRichEdit, &exsetsel_tests[i], i); + } + + DestroyWindow(hwndRichEdit); +} + static void test_EM_REPLACESEL(int redraw) { HWND hwndRichEdit = new_richedit(NULL); @@ -7658,6 +7695,7 @@ START_TEST( editor ) test_EM_GETLIMITTEXT(); test_WM_SETFONT(); test_EM_GETMODIFY(); + test_EM_SETSEL(); test_EM_EXSETSEL(); test_WM_PASTE(); test_EM_STREAMIN(); -- 2.11.4.GIT