[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-patches
Subject: [PATCH] comctl32: Call OpenThemeData on themed scrollbars.
From: Mark Harmstone <hellas () burntcomma ! com>
Date: 2015-02-28 16:37:08
Message-ID: 54F1EEB4.20305 () burntcomma ! com
[Download RAW message or body]
---
dlls/comctl32/theme_scrollbar.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
["0001-comctl32-Call-OpenThemeData-on-themed-scrollbars.patch" (text/x-patch)]
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;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic