Module: wine Branch: master Commit: 1fac98d3c1f28346f1e4c273c4dacfb12cca12d8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1fac98d3c1f28346f1e4c273c4...
Author: Nikolay Sivov bunglehead@gmail.com Date: Sun May 3 03:12:50 2009 +0400
comctl32/listview: Test WM_ERASEBKGND forwarding to parent on CL_NONE background.
---
dlls/comctl32/tests/listview.c | 47 +++++++++++++++++++++++++++++++++------ 1 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 6b575dc..42bb189 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -26,9 +26,10 @@ #include "wine/test.h" #include "msg.h"
-#define PARENT_SEQ_INDEX 0 -#define LISTVIEW_SEQ_INDEX 1 -#define NUM_MSG_SEQUENCES 2 +#define PARENT_SEQ_INDEX 0 +#define PARENT_FULL_SEQ_INDEX 1 +#define LISTVIEW_SEQ_INDEX 2 +#define NUM_MSG_SEQUENCES 3
#define LISTVIEW_ID 0 #define HEADER_ID 1 @@ -162,6 +163,11 @@ static const struct message empty_seq[] = { { 0 } };
+static const struct message forward_erasebkgnd_parent_seq[] = { + { WM_ERASEBKGND, sent }, + { 0 } +}; + struct subclass_info { WNDPROC oldproc; @@ -173,6 +179,12 @@ static LRESULT WINAPI parent_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LP LRESULT ret; struct message msg;
+ msg.message = message; + msg.flags = sent|wparam|lparam; + if (defwndproc_counter) msg.flags |= defwinproc; + msg.wParam = wParam; + msg.lParam = lParam; + /* log system messages, except for painting */ if (message < WM_USER && message != WM_PAINT && @@ -185,13 +197,9 @@ static LRESULT WINAPI parent_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LP { trace("parent: %p, %04x, %08lx, %08lx\n", hwnd, message, wParam, lParam);
- msg.message = message; - msg.flags = sent|wparam|lparam; - if (defwndproc_counter) msg.flags |= defwinproc; - msg.wParam = wParam; - msg.lParam = lParam; add_message(sequences, PARENT_SEQ_INDEX, &msg); } + add_message(sequences, PARENT_FULL_SEQ_INDEX, &msg);
defwndproc_counter++; ret = DefWindowProcA(hwnd, message, wParam, lParam); @@ -1058,6 +1066,8 @@ static void test_create(void) static void test_redraw(void) { HWND hwnd, hwndheader; + HDC hdc; + BOOL res;
hwnd = create_listview_control(0); hwndheader = subclass_header(hwnd); @@ -1071,6 +1081,27 @@ static void test_redraw(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ /* forward WM_ERASEBKGND to parent on CLR_NONE background color */ + res = ListView_SetBkColor(hwnd, CLR_NONE); + expect(TRUE, res); + + hdc = GetWindowDC(hwndparent); + + flush_sequences(sequences, NUM_MSG_SEQUENCES); + SendMessageA(hwnd, WM_ERASEBKGND, (WPARAM)hdc, 0); + ok_sequence(sequences, PARENT_FULL_SEQ_INDEX, forward_erasebkgnd_parent_seq, + "forward WM_ERASEBKGND on CLR_NONE", TRUE); + + res = ListView_SetBkColor(hwnd, CLR_DEFAULT); + expect(TRUE, res); + + flush_sequences(sequences, NUM_MSG_SEQUENCES); + SendMessageA(hwnd, WM_ERASEBKGND, (WPARAM)hdc, 0); + ok_sequence(sequences, PARENT_FULL_SEQ_INDEX, empty_seq, + "don't forward WM_ERASEBKGND on non-CLR_NONE", FALSE); + + ReleaseDC(hwndparent, hdc); + DestroyWindow(hwnd); }