comctl32/button: Use the brush from WM_CTLCOLORBTN to fill background for push buttons.
The brush from WM_CTLCOLORBTN is used for filling background for push buttons after a DrawThemeParentBackground() call according to tests. Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
179117a689
commit
509d6a1d5f
|
@ -2729,6 +2729,7 @@ static void PB_ThemedPaint(HTHEME theme, const BUTTON_INFO *infoPtr, HDC hDC, in
|
||||||
{
|
{
|
||||||
RECT bgRect, labelRect, imageRect, textRect, focusRect;
|
RECT bgRect, labelRect, imageRect, textRect, focusRect;
|
||||||
NMCUSTOMDRAW nmcd;
|
NMCUSTOMDRAW nmcd;
|
||||||
|
HBRUSH brush;
|
||||||
LRESULT cdrf;
|
LRESULT cdrf;
|
||||||
HWND parent;
|
HWND parent;
|
||||||
|
|
||||||
|
@ -2748,7 +2749,13 @@ static void PB_ThemedPaint(HTHEME theme, const BUTTON_INFO *infoPtr, HDC hDC, in
|
||||||
if (cdrf & CDRF_SKIPDEFAULT) return;
|
if (cdrf & CDRF_SKIPDEFAULT) return;
|
||||||
|
|
||||||
if (IsThemeBackgroundPartiallyTransparent(theme, BP_PUSHBUTTON, state))
|
if (IsThemeBackgroundPartiallyTransparent(theme, BP_PUSHBUTTON, state))
|
||||||
|
{
|
||||||
DrawThemeParentBackground(infoPtr->hwnd, hDC, NULL);
|
DrawThemeParentBackground(infoPtr->hwnd, hDC, NULL);
|
||||||
|
/* Tests show that the brush from WM_CTLCOLORBTN is used for filling background after a
|
||||||
|
* DrawThemeParentBackground() call */
|
||||||
|
brush = (HBRUSH)SendMessageW(parent, WM_CTLCOLORBTN, (WPARAM)hDC, (LPARAM)infoPtr->hwnd);
|
||||||
|
FillRect(hDC, &bgRect, brush ? brush : GetSysColorBrush(COLOR_BTNFACE));
|
||||||
|
}
|
||||||
DrawThemeBackground(theme, hDC, BP_PUSHBUTTON, state, &bgRect, NULL);
|
DrawThemeBackground(theme, hDC, BP_PUSHBUTTON, state, &bgRect, NULL);
|
||||||
|
|
||||||
if (cdrf & CDRF_NOTIFYPOSTERASE)
|
if (cdrf & CDRF_NOTIFYPOSTERASE)
|
||||||
|
|
|
@ -841,15 +841,15 @@ static void test_themed_background(void)
|
||||||
tests[] =
|
tests[] =
|
||||||
{
|
{
|
||||||
{ANIMATE_CLASSA, 0, empty_seq, TRUE},
|
{ANIMATE_CLASSA, 0, empty_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_PUSHBUTTON, pushbutton_seq, TRUE},
|
{WC_BUTTONA, BS_PUSHBUTTON, pushbutton_seq},
|
||||||
{WC_BUTTONA, BS_DEFPUSHBUTTON, defpushbutton_seq, TRUE},
|
{WC_BUTTONA, BS_DEFPUSHBUTTON, defpushbutton_seq},
|
||||||
{WC_BUTTONA, BS_CHECKBOX, checkbox_seq, TRUE},
|
{WC_BUTTONA, BS_CHECKBOX, checkbox_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_AUTOCHECKBOX, checkbox_seq, TRUE},
|
{WC_BUTTONA, BS_AUTOCHECKBOX, checkbox_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_RADIOBUTTON, radiobutton_seq, TRUE},
|
{WC_BUTTONA, BS_RADIOBUTTON, radiobutton_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_3STATE, checkbox_seq, TRUE},
|
{WC_BUTTONA, BS_3STATE, checkbox_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_AUTO3STATE, checkbox_seq, TRUE},
|
{WC_BUTTONA, BS_AUTO3STATE, checkbox_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_GROUPBOX, groupbox_seq, TRUE},
|
{WC_BUTTONA, BS_GROUPBOX, groupbox_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_USERBUTTON, pushbutton_seq, TRUE},
|
{WC_BUTTONA, BS_USERBUTTON, pushbutton_seq},
|
||||||
{WC_BUTTONA, BS_AUTORADIOBUTTON, radiobutton_seq, TRUE},
|
{WC_BUTTONA, BS_AUTORADIOBUTTON, radiobutton_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_PUSHBOX, radiobutton_seq, TRUE},
|
{WC_BUTTONA, BS_PUSHBOX, radiobutton_seq, TRUE},
|
||||||
{WC_BUTTONA, BS_OWNERDRAW, ownerdrawbutton_seq},
|
{WC_BUTTONA, BS_OWNERDRAW, ownerdrawbutton_seq},
|
||||||
|
|
Loading…
Reference in New Issue