]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/radiobut.cpp
suppress annoying beeps when enter is pressed in combobox and there is no default...
[wxWidgets.git] / src / msw / radiobut.cpp
index c596f07af561055f60dc05d7970621ee47f71c20..2b3b4925cca385208aab87af2b2f59d5ca6f74cb 100644 (file)
@@ -59,7 +59,7 @@ wxBEGIN_FLAGS( wxRadioButtonStyle )
     wxFLAGS_MEMBER(wxBORDER_RAISED)
     wxFLAGS_MEMBER(wxBORDER_STATIC)
     wxFLAGS_MEMBER(wxBORDER_NONE)
-    
+
     // old style border flags
     wxFLAGS_MEMBER(wxSIMPLE_BORDER)
     wxFLAGS_MEMBER(wxSUNKEN_BORDER)
@@ -95,7 +95,7 @@ wxEND_PROPERTIES_TABLE()
 wxBEGIN_HANDLERS_TABLE(wxRadioButton)
 wxEND_HANDLERS_TABLE()
 
-wxCONSTRUCTOR_6( wxRadioButton , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) 
+wxCONSTRUCTOR_6( wxRadioButton , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle )
 
 #else
 IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
@@ -182,20 +182,22 @@ void wxRadioButton::SetValue(bool value)
             {
                 wxRadioButton *btn = wxDynamicCast(nodeBefore->GetData(),
                                                    wxRadioButton);
-                if ( !btn )
+                if ( btn && btn->HasFlag(wxRB_SINGLE) )
                 {
-                    // the radio buttons in a group must be consecutive, so
-                    // there are no more of them
+                    // A wxRB_SINGLE button isn't part of this group
                     break;
                 }
-
-                btn->SetValue(false);
-
-                if ( btn->HasFlag(wxRB_GROUP) )
+                
+                if (btn)
                 {
-                    // even if there are other radio buttons before this one,
-                    // they're not in the same group with us
-                    break;
+                    btn->SetValue(false);
+
+                    if ( btn->HasFlag(wxRB_GROUP) )
+                    {
+                        // even if there are other radio buttons before this one,
+                        // they're not in the same group with us
+                        break;
+                    }
                 }
             }
         }
@@ -208,13 +210,14 @@ void wxRadioButton::SetValue(bool value)
             wxRadioButton *btn = wxDynamicCast(nodeAfter->GetData(),
                                                wxRadioButton);
 
-            if ( !btn || btn->HasFlag(wxRB_GROUP) )
+            if ( btn && (btn->HasFlag(wxRB_GROUP) || btn->HasFlag(wxRB_SINGLE) ) )
             {
                 // no more buttons or the first button of the next group
                 break;
             }
 
-            btn->SetValue(false);
+            if (btn)
+                btn->SetValue(false);
         }
     }
 }