From 1dc3ec2cdc83da0c1cab96f2dc61b2c917fd1e29 Mon Sep 17 00:00:00 2001 From: Fabian Maurer Date: Mon, 4 Nov 2019 10:30:28 +0300 Subject: [PATCH] comctl32/combo: Properly handle WM_CTLCOLOR* messages. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46417 Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/comctl32/combo.c | 10 ++++++++++ dlls/comctl32/tests/combo.c | 3 --- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/comctl32/combo.c b/dlls/comctl32/combo.c index 8a52a0bdc0c..599817aed4f 100644 --- a/dlls/comctl32/combo.c +++ b/dlls/comctl32/combo.c @@ -1963,6 +1963,16 @@ static LRESULT CALLBACK COMBO_WindowProc( HWND hwnd, UINT message, WPARAM wParam if (GET_WHEEL_DELTA_WPARAM(wParam) < 0) return SendMessageW(hwnd, WM_KEYDOWN, VK_DOWN, 0); return TRUE; + case WM_CTLCOLOR: + case WM_CTLCOLORMSGBOX: + case WM_CTLCOLOREDIT: + case WM_CTLCOLORLISTBOX: + case WM_CTLCOLORBTN: + case WM_CTLCOLORDLG: + case WM_CTLCOLORSCROLLBAR: + case WM_CTLCOLORSTATIC: + return SendMessageW(lphc->owner, message, wParam, lParam); + /* Combo messages */ case CB_ADDSTRING: if (lphc->dwStyle & CBS_LOWERCASE) diff --git a/dlls/comctl32/tests/combo.c b/dlls/comctl32/tests/combo.c index be4ee53c227..4757fa3cc61 100644 --- a/dlls/comctl32/tests/combo.c +++ b/dlls/comctl32/tests/combo.c @@ -1306,7 +1306,6 @@ static void test_combo_ctlcolor(void) for (i = 0; i < ARRAY_SIZE(messages); ++i) { brush = (HBRUSH)SendMessageA(combo, messages[i], 0, (LPARAM)info.hwndItem); - todo_wine ok(brush == brush_red, "%u: unexpected brush %p, expected got %p.\n", i, brush, brush_red); } @@ -1317,7 +1316,6 @@ static void test_combo_ctlcolor(void) for (i = 0; i < ARRAY_SIZE(messages); ++i) { brush = (HBRUSH)SendMessageA(combo, messages[i], 0, (LPARAM)info.hwndItem); - todo_wine ok(!brush, "%u: unexpected brush %p.\n", i, brush); } @@ -1344,7 +1342,6 @@ static void test_combo_ctlcolor(void) for (i = 0; i < ARRAY_SIZE(messages); ++i) { brush = (HBRUSH)SendMessageA(combo, messages[i], 0, (LPARAM)info.hwndItem); - todo_wine ok(!brush, "%u: unexpected brush %p.\n", i, brush); }