For a radio button even if the initial style includes WS_TABSTOP the
first BM_SETCHECK 0 will clear it (even if the state was clear).
diff --git a/controls/button.c b/controls/button.c
index 12c6188..7e92dae 100644
--- a/controls/button.c
+++ b/controls/button.c
@@ -371,14 +371,14 @@
case BM_SETCHECK:
if (wParam > maxCheckState[btn_type]) wParam = maxCheckState[btn_type];
state = get_button_state( hWnd );
+ if ((btn_type == BS_RADIOBUTTON) || (btn_type == BS_AUTORADIOBUTTON))
+ {
+ if (wParam) style |= WS_TABSTOP;
+ else style &= ~WS_TABSTOP;
+ SetWindowLongA( hWnd, GWL_STYLE, style );
+ }
if ((state & 3) != wParam)
{
- if ((btn_type == BS_RADIOBUTTON) || (btn_type == BS_AUTORADIOBUTTON))
- {
- if (wParam) style |= WS_TABSTOP;
- else style &= ~WS_TABSTOP;
- SetWindowLongA( hWnd, GWL_STYLE, style );
- }
set_button_state( hWnd, (state & ~3) | wParam );
paint_button( hWnd, btn_type, ODA_SELECT );
}