Mark Harmstone : comctl32: Call OpenThemeData on themed scrollbars.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 2 08:51:51 CST 2015
Module: wine
Branch: master
Commit: 050bda2ece4f249d2973c3d4e1a1f5f3671de053
URL: http://source.winehq.org/git/wine.git/?a=commit;h=050bda2ece4f249d2973c3d4e1a1f5f3671de053
Author: Mark Harmstone <hellas at 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;
}
More information about the wine-cvs
mailing list