Module: wine Branch: master Commit: ee7ddd1ed38a3b2f41bdb676f42e3453021968c1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ee7ddd1ed38a3b2f41bdb676f4...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue Oct 10 20:37:18 2017 +0300
comctl32/listview: Pass WM_NCCREATE down to default procedure.
Problem analyzed by Vadim Druzhin cdslow@mail.ru.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/comctl32/listview.c | 7 ++++--- dlls/comctl32/tests/listview.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c index 73eceff..3587797 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c @@ -9473,7 +9473,7 @@ static VOID CALLBACK LISTVIEW_DelayedEditItem(HWND hwnd, UINT uMsg, UINT_PTR idE * Success: TRUE * Failure: FALSE */ -static LRESULT LISTVIEW_NCCreate(HWND hwnd, const CREATESTRUCTW *lpcs) +static LRESULT LISTVIEW_NCCreate(HWND hwnd, WPARAM wParam, const CREATESTRUCTW *lpcs) { LISTVIEW_INFO *infoPtr; LOGFONTW logFont; @@ -9532,7 +9532,8 @@ static LRESULT LISTVIEW_NCCreate(HWND hwnd, const CREATESTRUCTW *lpcs) if (!(infoPtr->hdpaPosX = DPA_Create(10))) goto fail; if (!(infoPtr->hdpaPosY = DPA_Create(10))) goto fail; if (!(infoPtr->hdpaColumns = DPA_Create(10))) goto fail; - return TRUE; + + return DefWindowProcW(hwnd, WM_NCCREATE, wParam, (LPARAM)lpcs);
fail: DestroyWindow(infoPtr->hwndHeader); @@ -11691,7 +11692,7 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return LISTVIEW_Command(infoPtr, wParam, lParam);
case WM_NCCREATE: - return LISTVIEW_NCCreate(hwnd, (LPCREATESTRUCTW)lParam); + return LISTVIEW_NCCreate(hwnd, wParam, (LPCREATESTRUCTW)lParam);
case WM_CREATE: return LISTVIEW_Create(hwnd, (LPCREATESTRUCTW)lParam); diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 4bc95bb..0c1d878 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -1523,6 +1523,8 @@ static LRESULT CALLBACK create_test_wndproc(HWND hwnd, UINT uMsg, WPARAM wParam,
static void test_create(void) { + static const WCHAR testtextW[] = {'t','e','s','t',' ','t','e','x','t',0}; + char buff[16]; HWND hList; HWND hHeader; LONG_PTR ret; @@ -1734,6 +1736,23 @@ static void test_create(void) ok_sequence(sequences, PARENT_SEQ_INDEX, create_ownerdrawfixed_parent_seq, "created with LVS_OWNERDRAWFIXED|LVS_REPORT - parent seq", FALSE); DestroyWindow(hList); + + /* Test that window text is preserved. */ + hList = CreateWindowExA(0, WC_LISTVIEWA, "test text", WS_CHILD | WS_BORDER | WS_VISIBLE, + 0, 0, 100, 100, hwndparent, NULL, GetModuleHandleA(NULL), NULL); + ok(hList != NULL, "Failed to create ListView window.\n"); + *buff = 0; + GetWindowTextA(hList, buff, sizeof(buff)); + ok(!strcmp(buff, "test text"), "Unexpected window text %s.\n", buff); + DestroyWindow(hList); + + hList = CreateWindowExW(0, WC_LISTVIEWW, testtextW, WS_CHILD | WS_BORDER | WS_VISIBLE, + 0, 0, 100, 100, hwndparent, NULL, GetModuleHandleA(NULL), NULL); + ok(hList != NULL, "Failed to create ListView window.\n"); + *buff = 0; + GetWindowTextA(hList, buff, sizeof(buff)); + ok(!strcmp(buff, "test text"), "Unexpected window text %s.\n", buff); + DestroyWindow(hList); }
static void test_redraw(void)