[PATCH 2/6] comctl32/treeview: Draw parent background before drawing control parts.

Zhiyi Zhang zzhang at codeweavers.com
Tue Jun 22 03:20:56 CDT 2021


Fix residual glyphs on background when drawing treeview buttons with themes that contains
transparent button glyphs.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
 dlls/comctl32/treeview.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index 98cf5489f2b..f4a387dd0d2 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -2901,6 +2901,7 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, const RECT *rc)
     HWND hwnd = infoPtr->hwnd;
     RECT rect = *rc;
     TREEVIEW_ITEM *item;
+    HTHEME theme;
 
     if (infoPtr->clientHeight == 0 || infoPtr->clientWidth == 0)
     {
@@ -2917,6 +2918,12 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, const RECT *rc)
 	return;
     }
 
+    if (infoPtr->dwStyle & TVS_HASBUTTONS && (theme = GetWindowTheme(infoPtr->hwnd)))
+    {
+        if (IsThemeBackgroundPartiallyTransparent(theme, TVP_GLYPH, 0))
+            DrawThemeParentBackground(infoPtr->hwnd, hdc, NULL);
+    }
+
     for (item = infoPtr->root->firstChild;
          item != NULL;
          item = TREEVIEW_GetNextListItem(infoPtr, item))
-- 
2.30.2




More information about the wine-devel mailing list