Module: wine Branch: master Commit: 050bda2ece4f249d2973c3d4e1a1f5f3671de053 URL: http://source.winehq.org/git/wine.git/?a=commit;h=050bda2ece4f249d2973c3d4e1...
Author: Mark Harmstone hellas@burntcomma.com Date: Sat Feb 28 16:37:08 2015 +0000
comctl32: Call OpenThemeData on themed scrollbars.
---
dlls/comctl32/theme_scrollbar.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/comctl32/theme_scrollbar.c b/dlls/comctl32/theme_scrollbar.c index 9978598..ed2c051 100644 --- a/dlls/comctl32/theme_scrollbar.c +++ b/dlls/comctl32/theme_scrollbar.c @@ -38,7 +38,39 @@ LRESULT CALLBACK THEMING_ScrollbarSubclassProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, ULONG_PTR dwRefData) { + const WCHAR* themeClass = WC_SCROLLBARW; + HTHEME theme; + LRESULT result; + TRACE("(%p, 0x%x, %lu, %lu, %lu)\n", hwnd, msg, wParam, lParam, dwRefData);
- return THEMING_CallOriginalClass (hwnd, msg, wParam, lParam); + switch (msg) { + case WM_CREATE: + result = THEMING_CallOriginalClass(hwnd, msg, wParam, lParam); + OpenThemeData(hwnd, themeClass); + return result; + + case WM_DESTROY: + theme = GetWindowTheme(hwnd); + CloseThemeData(theme); + return THEMING_CallOriginalClass(hwnd, msg, wParam, lParam); + + case WM_THEMECHANGED: + theme = GetWindowTheme(hwnd); + CloseThemeData(theme); + OpenThemeData(hwnd, themeClass); + break; + + case WM_SYSCOLORCHANGE: + theme = GetWindowTheme(hwnd); + if (!theme) return THEMING_CallOriginalClass(hwnd, msg, wParam, lParam); + /* Do nothing. When themed, a WM_THEMECHANGED will be received, too, + * which will do the repaint. */ + break; + + default: + return THEMING_CallOriginalClass(hwnd, msg, wParam, lParam); + } + + return 0; }