[PATCH 7/7] comctl32/button: Use pressed state when a pushlike checkbox or radio button is checked and hovered.

Zhiyi Zhang zzhang at codeweavers.com
Thu Feb 10 00:57:36 CST 2022


On XP, when a pushlike checkbox or radio button is checked and hovered,
PBS_HOT is used. In later versions of Windows, PBS_PRESSED is used. This
patch changes pushlike checkboxes and radio buttons to use the new
behavior because it seems more intuitive.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52436
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
 dlls/comctl32/button.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/comctl32/button.c b/dlls/comctl32/button.c
index 2ce12252460..ee7c2c288b1 100644
--- a/dlls/comctl32/button.c
+++ b/dlls/comctl32/button.c
@@ -396,7 +396,7 @@ static int get_draw_state(const BUTTON_INFO *infoPtr)
     static const int pushlike_cb_states[3][DRAW_STATE_COUNT] =
     {
         { PBS_NORMAL, PBS_DISABLED, PBS_HOT, PBS_PRESSED, PBS_NORMAL },
-        { PBS_PRESSED, PBS_PRESSED, PBS_HOT, PBS_PRESSED, PBS_PRESSED },
+        { PBS_PRESSED, PBS_PRESSED, PBS_PRESSED, PBS_PRESSED, PBS_PRESSED },
         { PBS_NORMAL, PBS_DISABLED, PBS_HOT, PBS_PRESSED, PBS_NORMAL }
     };
     static const int rb_states[2][DRAW_STATE_COUNT] =
@@ -407,7 +407,7 @@ static int get_draw_state(const BUTTON_INFO *infoPtr)
     static const int pushlike_rb_states[2][DRAW_STATE_COUNT] =
     {
         { PBS_NORMAL, PBS_DISABLED, PBS_HOT, PBS_PRESSED, PBS_NORMAL },
-        { PBS_PRESSED, PBS_PRESSED, PBS_HOT, PBS_PRESSED, PBS_PRESSED }
+        { PBS_PRESSED, PBS_PRESSED, PBS_PRESSED, PBS_PRESSED, PBS_PRESSED }
     };
     static const int gb_states[DRAW_STATE_COUNT] = { GBS_NORMAL, GBS_DISABLED, GBS_NORMAL, GBS_NORMAL, GBS_NORMAL };
     LONG style = GetWindowLongW(infoPtr->hwnd, GWL_STYLE);
-- 
2.32.0



More information about the wine-devel mailing list