From: Zhiyi Zhang zzhang@codeweavers.com
Tested manually on XP, Win 7 and Win 10.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53049 Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com --- dlls/comctl32/toolbar.c | 31 +++++++++++++++++-------------- include/commctrl.h | 2 +- 2 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c index 9b059996b65..bea294958c5 100644 --- a/dlls/comctl32/toolbar.c +++ b/dlls/comctl32/toolbar.c @@ -1062,20 +1062,23 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc,
if (theme) { - 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); + 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); diff --git a/include/commctrl.h b/include/commctrl.h index b829e4498ea..725ef64764f 100644 --- a/include/commctrl.h +++ b/include/commctrl.h @@ -1380,7 +1380,7 @@ typedef struct _NMTBCUSTOMDRAW #define TBCDRF_NOETCHEDEFFECT 0x00100000 /* No etched effect for */ /* disabled items */ #define TBCDRF_BLENDICON 0x00200000 /* ILD_BLEND50 on the icon image */ -#define TBCDRF_NOBACKGROUND 0x00400000 /* ILD_BLEND50 on the icon image */ +#define TBCDRF_NOBACKGROUND 0x00400000 /* Don't draw button background */ #define TBCDRF_USECDCOLORS 0x00800000