Zhiyi Zhang : comctl32/button: Support BS_PUSHLIKE for themed group boxes.

Alexandre Julliard julliard at winehq.org
Thu Nov 11 16:01:28 CST 2021


Module: wine
Branch: master
Commit: 3a2d2adc4ea771fcfb03fe60dc7afe568e1bfaf0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=3a2d2adc4ea771fcfb03fe60dc7afe568e1bfaf0

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Thu Nov 11 15:04:19 2021 +0800

comctl32/button: Support BS_PUSHLIKE for themed group boxes.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/comctl32/button.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/dlls/comctl32/button.c b/dlls/comctl32/button.c
index 74de83b461a..f158a7423b9 100644
--- a/dlls/comctl32/button.c
+++ b/dlls/comctl32/button.c
@@ -448,7 +448,7 @@ static int get_draw_state(const BUTTON_INFO *infoPtr)
         return style & BS_PUSHLIKE ? pushlike_rb_states[check_state][state]
                                    : rb_states[check_state][state];
     case BS_GROUPBOX:
-        return gb_states[state];
+        return style & BS_PUSHLIKE ? pb_states[state] : gb_states[state];
     default:
         WARN("Unsupported button type 0x%08x\n", type);
         return PBS_NORMAL;
@@ -2883,6 +2883,7 @@ static void GB_ThemedPaint(HTHEME theme, const BUTTON_INFO *infoPtr, HDC hDC, in
     HFONT font, hPrevFont = NULL;
     BOOL created_font = FALSE;
     TEXTMETRICW textMetric;
+    int part;
 
     HRESULT hr = GetThemeFont(theme, hDC, BP_GROUPBOX, state, TMT_FONT, &lf);
     if (SUCCEEDED(hr)) {
@@ -2914,9 +2915,10 @@ static void GB_ThemedPaint(HTHEME theme, const BUTTON_INFO *infoPtr, HDC hDC, in
         ExtSelectClipRgn(hDC, textRegion, RGN_DIFF);
     }
 
-    if (IsThemeBackgroundPartiallyTransparent(theme, BP_GROUPBOX, state))
+    part = GetWindowLongW(infoPtr->hwnd, GWL_STYLE) & BS_PUSHLIKE ? BP_PUSHBUTTON : BP_GROUPBOX;
+    if (IsThemeBackgroundPartiallyTransparent(theme, part, state))
         DrawThemeParentBackground(infoPtr->hwnd, hDC, NULL);
-    DrawThemeBackground(theme, hDC, BP_GROUPBOX, state, &bgRect, NULL);
+    DrawThemeBackground(theme, hDC, part, state, &bgRect, NULL);
 
     if (dtFlags != (UINT)-1)
     {
@@ -2928,7 +2930,7 @@ static void GB_ThemedPaint(HTHEME theme, const BUTTON_INFO *infoPtr, HDC hDC, in
             SelectClipRgn(hDC, textRegion);
             DeleteObject(textRegion);
         }
-        BUTTON_DrawThemedLabel(infoPtr, hDC, dtFlags, &imageRect, &textRect, theme, BP_GROUPBOX, state);
+        BUTTON_DrawThemedLabel(infoPtr, hDC, dtFlags, &imageRect, &textRect, theme, part, state);
     }
 
     SelectClipRgn(hDC, region);




More information about the wine-cvs mailing list