Fix residual glyphs on background when drawing treeview buttons with themes that contains transparent button glyphs.
Signed-off-by: Zhiyi Zhang zzhang@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))