From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/comctl32/toolbar.c | 63 +++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 27 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index 0a660a85fc8..b8d5dcc8ba9 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -876,6 +876,38 @@ TOOLBAR_DrawSepDDArrow(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDRAW *tbcd, TOOLBAR_DrawArrow(hdc, rcArrow->left + offset, rcArrow->top + offset + (rcArrow->bottom - rcArrow->top - ARROW_HEIGHT) / 2, comctl32_color.clrBtnText); }
+static void +TOOLBAR_DrawSeparator (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, const RECT *rect) +{ + if (infoPtr->hTheme) + { + int part = (infoPtr->dwStyle & CCS_VERT) ? TP_SEPARATORVERT : TP_SEPARATOR; + DrawThemeBackground (infoPtr->hTheme, hdc, part, 0, rect, NULL); + return; + } + + /* with the FLAT style, iBitmap is the width and has already been taken into consideration in + * calculating the width so now we need to draw the vertical separator empirical tests show that + * iBitmap can/will be non-zero when drawing the vertical bar... */ + if ((infoPtr->dwStyle & TBSTYLE_FLAT) /* && (btnPtr->iBitmap == 0) */) + { + if (infoPtr->dwStyle & CCS_VERT) + { + RECT rcsep = *rect; + InflateRect (&rcsep, -infoPtr->szPadding.cx, -infoPtr->szPadding.cy); + TOOLBAR_DrawFlatHorizontalSeparator (&rcsep, hdc, infoPtr); + } + else + { + TOOLBAR_DrawFlatSeparator (rect, hdc, infoPtr); + } + } + else if (btnPtr->fsStyle != BTNS_SEP) + { + FIXME("Draw some kind of separator: fsStyle=%x\n", btnPtr->fsStyle); + } +} + /* draws a complete toolbar button */ static void TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, DWORD dwBaseCustDraw) @@ -898,33 +930,10 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, rcArrow = rc;
/* separator - doesn't send NM_CUSTOMDRAW */ - if (btnPtr->fsStyle & BTNS_SEP) { - if (theme) - { - DrawThemeBackground (theme, hdc, - (dwStyle & CCS_VERT) ? TP_SEPARATORVERT : TP_SEPARATOR, 0, - &rc, NULL); - } - else - /* with the FLAT style, iBitmap is the width and has already */ - /* been taken into consideration in calculating the width */ - /* so now we need to draw the vertical separator */ - /* empirical tests show that iBitmap can/will be non-zero */ - /* when drawing the vertical bar... */ - if ((dwStyle & TBSTYLE_FLAT) /* && (btnPtr->iBitmap == 0) */) { - if (dwStyle & CCS_VERT) { - RECT rcsep = rc; - InflateRect(&rcsep, -infoPtr->szPadding.cx, -infoPtr->szPadding.cy); - TOOLBAR_DrawFlatHorizontalSeparator (&rcsep, hdc, infoPtr); - } - else - TOOLBAR_DrawFlatSeparator (&rc, hdc, infoPtr); - } - else if (btnPtr->fsStyle != BTNS_SEP) { - FIXME("Draw some kind of separator: fsStyle=%x\n", - btnPtr->fsStyle); - } - return; + if (btnPtr->fsStyle & BTNS_SEP) + { + TOOLBAR_DrawSeparator (infoPtr, btnPtr, hdc, &rc); + return; }
/* get a pointer to the text */
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/comctl32/toolbar.c | 55 ++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 23 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index b8d5dcc8ba9..95a6cff25d8 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -805,7 +805,7 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, INT left, I
/* draws a blank frame for a toolbar button */ static void -TOOLBAR_DrawFrame(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDRAW *tbcd, const RECT *rect, DWORD dwItemCDFlag) +TOOLBAR_DrawFlatButtonFrame(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDRAW *tbcd, const RECT *rect, DWORD dwItemCDFlag) { HDC hdc = tbcd->nmcd.hdc; RECT rc = *rect; @@ -908,6 +908,36 @@ TOOLBAR_DrawSeparator (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hd } }
+static void TOOLBAR_DrawButtonFrame (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, + const NMTBCUSTOMDRAW *tbcd, HDC hdc, const RECT *rect, + DWORD dwItemCDFlag, BOOL drawSepDropDownArrow) +{ + if (infoPtr->hTheme) + { + if (!(dwItemCDFlag & TBCDRF_NOBACKGROUND)) + { + int partId = drawSepDropDownArrow ? TP_SPLITBUTTON : TP_BUTTON; + int stateId = TS_NORMAL; + + if (tbcd->nmcd.uItemState & CDIS_DISABLED) + stateId = TS_DISABLED; + else if (tbcd->nmcd.uItemState & CDIS_SELECTED) + stateId = TS_PRESSED; + else if (tbcd->nmcd.uItemState & CDIS_CHECKED) + stateId = (tbcd->nmcd.uItemState & CDIS_HOT) ? TS_HOTCHECKED : TS_CHECKED; + else if ((tbcd->nmcd.uItemState & CDIS_HOT) + || (drawSepDropDownArrow && btnPtr->bDropDownPressed)) + stateId = TS_HOT; + + DrawThemeBackground(infoPtr->hTheme, hdc, partId, stateId, rect, NULL); + } + + return; + } + + TOOLBAR_DrawFlatButtonFrame(infoPtr, tbcd, rect, dwItemCDFlag); +} + /* draws a complete toolbar button */ static void TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, DWORD dwBaseCustDraw) @@ -1067,28 +1097,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, } }
- if (theme) - { - if (!(dwItemCDFlag & TBCDRF_NOBACKGROUND)) - { - int partId = drawSepDropDownArrow ? TP_SPLITBUTTON : TP_BUTTON; - int stateId = TS_NORMAL; - - if (tbcd.nmcd.uItemState & CDIS_DISABLED) - stateId = TS_DISABLED; - else if (tbcd.nmcd.uItemState & CDIS_SELECTED) - stateId = TS_PRESSED; - else if (tbcd.nmcd.uItemState & CDIS_CHECKED) - stateId = (tbcd.nmcd.uItemState & CDIS_HOT) ? TS_HOTCHECKED : TS_CHECKED; - else if ((tbcd.nmcd.uItemState & CDIS_HOT) - || (drawSepDropDownArrow && btnPtr->bDropDownPressed)) - stateId = TS_HOT; - - DrawThemeBackground(theme, hdc, partId, stateId, &rc, NULL); - } - } - else - TOOLBAR_DrawFrame(infoPtr, &tbcd, &rc, dwItemCDFlag); + TOOLBAR_DrawButtonFrame(infoPtr, btnPtr, &tbcd, hdc, &rc, dwItemCDFlag, drawSepDropDownArrow);
if (drawSepDropDownArrow) {
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/comctl32/toolbar.c | 48 +++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 21 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index 95a6cff25d8..fb638b211b0 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -839,7 +839,7 @@ TOOLBAR_DrawFlatButtonFrame(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDRAW *t }
static void -TOOLBAR_DrawSepDDArrow(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDRAW *tbcd, RECT *rcArrow, BOOL bDropDownPressed, DWORD dwItemCDFlag) +TOOLBAR_DrawFlatSepDropDownArrow(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDRAW *tbcd, RECT *rcArrow, BOOL bDropDownPressed, DWORD dwItemCDFlag) { HDC hdc = tbcd->nmcd.hdc; int offset = 0; @@ -938,6 +938,31 @@ static void TOOLBAR_DrawButtonFrame (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO * TOOLBAR_DrawFlatButtonFrame(infoPtr, tbcd, rect, dwItemCDFlag); }
+static void TOOLBAR_DrawSepDropDownArrow (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, + const NMTBCUSTOMDRAW *tbcd, HDC hdc, RECT *rect, + DWORD dwItemCDFlag) +{ + if (infoPtr->hTheme) + { + int stateId = TS_NORMAL; + + if (tbcd->nmcd.uItemState & CDIS_DISABLED) + stateId = TS_DISABLED; + else if (btnPtr->bDropDownPressed || (tbcd->nmcd.uItemState & CDIS_SELECTED)) + stateId = TS_PRESSED; + else if (tbcd->nmcd.uItemState & CDIS_CHECKED) + stateId = (tbcd->nmcd.uItemState & CDIS_HOT) ? TS_HOTCHECKED : TS_CHECKED; + else if (tbcd->nmcd.uItemState & CDIS_HOT) + stateId = TS_HOT; + + DrawThemeBackground(infoPtr->hTheme, hdc, TP_DROPDOWNBUTTON, stateId, rect, NULL); + DrawThemeBackground(infoPtr->hTheme, hdc, TP_SPLITBUTTONDROPDOWN, stateId, rect, NULL); + return; + } + + TOOLBAR_DrawFlatSepDropDownArrow(infoPtr, tbcd, rect, btnPtr->bDropDownPressed, dwItemCDFlag); +} + /* draws a complete toolbar button */ static void TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, DWORD dwBaseCustDraw) @@ -1100,26 +1125,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, TOOLBAR_DrawButtonFrame(infoPtr, btnPtr, &tbcd, hdc, &rc, dwItemCDFlag, drawSepDropDownArrow);
if (drawSepDropDownArrow) - { - if (theme) - { - int stateId = TS_NORMAL; - - if (tbcd.nmcd.uItemState & CDIS_DISABLED) - stateId = TS_DISABLED; - else if (btnPtr->bDropDownPressed || (tbcd.nmcd.uItemState & CDIS_SELECTED)) - stateId = TS_PRESSED; - else if (tbcd.nmcd.uItemState & CDIS_CHECKED) - stateId = (tbcd.nmcd.uItemState & CDIS_HOT) ? TS_HOTCHECKED : TS_CHECKED; - else if (tbcd.nmcd.uItemState & CDIS_HOT) - stateId = TS_HOT; - - DrawThemeBackground (theme, hdc, TP_DROPDOWNBUTTON, stateId, &rcArrow, NULL); - DrawThemeBackground (theme, hdc, TP_SPLITBUTTONDROPDOWN, stateId, &rcArrow, NULL); - } - else - TOOLBAR_DrawSepDDArrow(infoPtr, &tbcd, &rcArrow, btnPtr->bDropDownPressed, dwItemCDFlag); - } + TOOLBAR_DrawSepDropDownArrow(infoPtr, btnPtr, &tbcd, hdc, &rcArrow, dwItemCDFlag);
oldBkMode = SetBkMode (hdc, tbcd.nStringBkMode); if (!(infoPtr->dwExStyle & TBSTYLE_EX_MIXEDBUTTONS) || (btnPtr->fsStyle & BTNS_SHOWTEXT))
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/comctl32/toolbar.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index fb638b211b0..c36bd10c8c2 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -265,6 +265,11 @@ static inline BOOL button_has_ddarrow(const TOOLBAR_INFO *infoPtr, const TBUTTON (btnPtr->fsStyle & BTNS_WHOLEDROPDOWN); }
+static BOOL TOOLBAR_IsThemed(const TOOLBAR_INFO *infoPtr) +{ + return !!infoPtr->hTheme; +} + static LPWSTR TOOLBAR_GetText(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *btnPtr) { @@ -772,7 +777,7 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, INT left, I } else if (tbcd->nmcd.uItemState & CDIS_CHECKED || ((tbcd->nmcd.uItemState & CDIS_HOT) - && ((infoPtr->dwStyle & TBSTYLE_FLAT) || infoPtr->hTheme))) + && ((infoPtr->dwStyle & TBSTYLE_FLAT) || TOOLBAR_IsThemed(infoPtr)))) { /* if hot, attempt to draw with hot image list, if fails, use default image list */ @@ -969,6 +974,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, { DWORD dwStyle = infoPtr->dwStyle; BOOL hasDropDownArrow = button_has_ddarrow( infoPtr, btnPtr ); + BOOL isThemed = TOOLBAR_IsThemed(infoPtr); BOOL drawSepDropDownArrow = hasDropDownArrow && (~btnPtr->fsStyle & BTNS_WHOLEDROPDOWN); RECT rc, rcArrow, rcBitmap, rcText; @@ -979,7 +985,6 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, INT oldBkMode; DWORD dwItemCustDraw; DWORD dwItemCDFlag; - HTHEME theme = infoPtr->hTheme;
rc = btnPtr->rect; rcArrow = rc; @@ -1104,11 +1109,11 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, (btnPtr->fsState & (TBSTATE_PRESSED | TBSTATE_CHECKED))) OffsetRect(&rcText, 1, 1);
- if (!theme && !(tbcd.nmcd.uItemState & CDIS_HOT) && + if (!isThemed && !(tbcd.nmcd.uItemState & CDIS_HOT) && ((tbcd.nmcd.uItemState & CDIS_CHECKED) || (tbcd.nmcd.uItemState & CDIS_INDETERMINATE))) TOOLBAR_DrawPattern (&rc, &tbcd);
- if (((infoPtr->dwStyle & TBSTYLE_FLAT) || theme) && (tbcd.nmcd.uItemState & CDIS_HOT)) + if (((infoPtr->dwStyle & TBSTYLE_FLAT) || isThemed) && (tbcd.nmcd.uItemState & CDIS_HOT)) { if ( dwItemCDFlag & TBCDRF_HILITEHOTTRACK ) { @@ -3523,7 +3528,7 @@ TOOLBAR_GetHotImageList (const TOOLBAR_INFO *infoPtr, WPARAM wParam) static LRESULT TOOLBAR_GetHotItem (const TOOLBAR_INFO *infoPtr) { - if (!((infoPtr->dwStyle & TBSTYLE_FLAT) || infoPtr->hTheme)) + if (!((infoPtr->dwStyle & TBSTYLE_FLAT) || TOOLBAR_IsThemed(infoPtr))) return -1;
if (infoPtr->nHotItem < 0) @@ -5407,7 +5412,7 @@ TOOLBAR_EraseBackground (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) /* If the toolbar is "transparent" then pass the WM_ERASEBKGND up * to my parent for processing. */ - if (infoPtr->hTheme || (infoPtr->dwStyle & TBSTYLE_TRANSPARENT)) { + if (TOOLBAR_IsThemed(infoPtr) || (infoPtr->dwStyle & TBSTYLE_TRANSPARENT)) { POINT pt, ptorig; HDC hdc = (HDC)wParam; HWND parent; @@ -5959,7 +5964,7 @@ TOOLBAR_MouseMove (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) if ((infoPtr->dwStyle & TBSTYLE_TOOLTIPS) && (infoPtr->hwndToolTip == NULL)) TOOLBAR_TooltipCreateControl(infoPtr);
- if ((infoPtr->dwStyle & TBSTYLE_FLAT) || infoPtr->hTheme) { + if ((infoPtr->dwStyle & TBSTYLE_FLAT) || TOOLBAR_IsThemed(infoPtr)) { /* fill in the TRACKMOUSEEVENT struct */ trackinfo.cbSize = sizeof(TRACKMOUSEEVENT); trackinfo.dwFlags = TME_QUERY; @@ -5987,7 +5992,7 @@ TOOLBAR_MouseMove (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
nHit = TOOLBAR_InternalHitTest (infoPtr, &pt, &button);
- if (((infoPtr->dwStyle & TBSTYLE_FLAT) || infoPtr->hTheme) && (!infoPtr->bAnchor || button)) + if (((infoPtr->dwStyle & TBSTYLE_FLAT) || TOOLBAR_IsThemed(infoPtr)) && (!infoPtr->bAnchor || button)) TOOLBAR_SetHotItemEx(infoPtr, button ? nHit : TOOLBAR_NOWHERE, HICF_MOUSE);
if (infoPtr->nOldHit != nHit)
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/comctl32/toolbar.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index c36bd10c8c2..64d09cb0b62 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -140,7 +140,6 @@ typedef struct INT iListGap; /* default gap between text and image for toolbar with list style */ HFONT hDefaultFont; HFONT hFont; /* text font */ - HTHEME hTheme; /* theme */ HIMAGELIST himlInt; /* image list created internally */ PIMLENTRY *himlDef; /* default image list array */ INT cimlDef; /* default image list array count */ @@ -170,6 +169,9 @@ typedef struct TBUTTON_INFO *buttons; /* pointer to button array */ LPWSTR *strings; /* pointer to string array */ TBITMAP_INFO *bitmaps; +#if __WINE_COMCTL32_VERSION == 6 + HTHEME hTheme; /* theme */ +#endif } TOOLBAR_INFO, *PTOOLBAR_INFO;
@@ -231,8 +233,6 @@ typedef enum #define GETHOTIMAGELIST(infoPtr, id) TOOLBAR_GetImageList(infoPtr->himlHot, infoPtr->cimlHot, id) #define GETDISIMAGELIST(infoPtr, id) TOOLBAR_GetImageList(infoPtr->himlDis, infoPtr->cimlDis, id)
-static const WCHAR themeClass[] = L"Toolbar"; - static BOOL TOOLBAR_GetButtonInfo(const TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb); static BOOL TOOLBAR_IsButtonRemovable(const TOOLBAR_INFO *infoPtr, int iItem, const CUSTOMBUTTON *btnInfo); static HIMAGELIST TOOLBAR_GetImageList(const PIMLENTRY *pies, INT cies, INT id); @@ -267,7 +267,11 @@ static inline BOOL button_has_ddarrow(const TOOLBAR_INFO *infoPtr, const TBUTTON
static BOOL TOOLBAR_IsThemed(const TOOLBAR_INFO *infoPtr) { +#if __WINE_COMCTL32_VERSION == 6 return !!infoPtr->hTheme; +#else + return FALSE; +#endif }
static LPWSTR @@ -884,12 +888,14 @@ TOOLBAR_DrawFlatSepDropDownArrow(const TOOLBAR_INFO *infoPtr, const NMTBCUSTOMDR static void TOOLBAR_DrawSeparator (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, const RECT *rect) { +#if __WINE_COMCTL32_VERSION == 6 if (infoPtr->hTheme) { int part = (infoPtr->dwStyle & CCS_VERT) ? TP_SEPARATORVERT : TP_SEPARATOR; DrawThemeBackground (infoPtr->hTheme, hdc, part, 0, rect, NULL); return; } +#endif
/* with the FLAT style, iBitmap is the width and has already been taken into consideration in * calculating the width so now we need to draw the vertical separator empirical tests show that @@ -917,6 +923,7 @@ static void TOOLBAR_DrawButtonFrame (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO * const NMTBCUSTOMDRAW *tbcd, HDC hdc, const RECT *rect, DWORD dwItemCDFlag, BOOL drawSepDropDownArrow) { +#if __WINE_COMCTL32_VERSION == 6 if (infoPtr->hTheme) { if (!(dwItemCDFlag & TBCDRF_NOBACKGROUND)) @@ -939,6 +946,7 @@ static void TOOLBAR_DrawButtonFrame (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *
return; } +#endif /* __WINE_COMCTL32_VERSION == 6 */
TOOLBAR_DrawFlatButtonFrame(infoPtr, tbcd, rect, dwItemCDFlag); } @@ -947,6 +955,7 @@ static void TOOLBAR_DrawSepDropDownArrow (const TOOLBAR_INFO *infoPtr, TBUTTON_I const NMTBCUSTOMDRAW *tbcd, HDC hdc, RECT *rect, DWORD dwItemCDFlag) { +#if __WINE_COMCTL32_VERSION == 6 if (infoPtr->hTheme) { int stateId = TS_NORMAL; @@ -964,6 +973,7 @@ static void TOOLBAR_DrawSepDropDownArrow (const TOOLBAR_INFO *infoPtr, TBUTTON_I DrawThemeBackground(infoPtr->hTheme, hdc, TP_SPLITBUTTONDROPDOWN, stateId, rect, NULL); return; } +#endif
TOOLBAR_DrawFlatSepDropDownArrow(infoPtr, tbcd, rect, btnPtr->bDropDownPressed, dwItemCDFlag); } @@ -5322,7 +5332,10 @@ TOOLBAR_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
SystemParametersInfoW (SPI_GETICONTITLELOGFONT, 0, &logFont, 0); infoPtr->hFont = infoPtr->hDefaultFont = CreateFontIndirectW (&logFont); - infoPtr->hTheme = OpenThemeDataForDpi (NULL, themeClass, GetDpiForWindow (hwnd)); + +#if __WINE_COMCTL32_VERSION == 6 + infoPtr->hTheme = OpenThemeDataForDpi (NULL, L"Toolbar", GetDpiForWindow (hwnd)); +#endif
TOOLBAR_CheckStyle (infoPtr);
@@ -5367,7 +5380,9 @@ TOOLBAR_Destroy (TOOLBAR_INFO *infoPtr) /* delete default font */ DeleteObject (infoPtr->hDefaultFont);
+#if __WINE_COMCTL32_VERSION == 6 CloseThemeData (infoPtr->hTheme); +#endif
/* free toolbar info data */ SetWindowLongPtrW (infoPtr->hwndSelf, 0, 0); @@ -6570,10 +6585,14 @@ TOOLBAR_SysColorChange (void) /* update theme after a WM_THEMECHANGED message */ static LRESULT theme_changed (TOOLBAR_INFO *infoPtr) { +#if __WINE_COMCTL32_VERSION == 6 CloseThemeData (infoPtr->hTheme); - infoPtr->hTheme = OpenThemeDataForDpi (NULL, themeClass, GetDpiForWindow (infoPtr->hwndSelf)); + infoPtr->hTheme = OpenThemeDataForDpi (NULL, L"Toolbar", GetDpiForWindow (infoPtr->hwndSelf)); InvalidateRect (infoPtr->hwndSelf, NULL, TRUE); return 0; +#else + return DefWindowProcW(infoPtr->hwndSelf, WM_THEMECHANGED, 0, 0); +#endif }
This merge request was approved by Nikolay Sivov.