]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/radiobut.cpp
Blind fix for bug #1209944, wxFileConfig constructor corrupts the stack
[wxWidgets.git] / src / os2 / radiobut.cpp
index 76e9a65dde5cad72b9273096876859c470d10622..3a5f166c6708b8b27359df8e227788d5448d4b69 100644 (file)
@@ -53,9 +53,7 @@ bool wxRadioButton::Create(
 , const wxPoint&                    rPos
 , const wxSize&                     rSize
 , long                              lStyle
-#if wxUSE_VALIDATORS
 , const wxValidator&                rValidator
-#endif
 , const wxString&                   rsName
 )
 {
@@ -64,9 +62,7 @@ bool wxRadioButton::Create(
                         ,rPos
                         ,rSize
                         ,lStyle
-#if wxUSE_VALIDATORS
                         ,rValidator
-#endif
                         ,rsName))
         return FALSE;
 
@@ -205,7 +201,7 @@ void wxRadioButton::SetFocus()
     // generates BN_CLICKED which leads to showing another dialog and so on
     // without end!
     //
-    // to aviod this, we drop the pseudo BN_CLICKED events generated when the
+    // to avoid this, we drop the pseudo BN_CLICKED events generated when the
     // button gains focus
     m_bFocusJustSet = TRUE;
 
@@ -216,7 +212,8 @@ void wxRadioButton::SetLabel(
   const wxString&                   rsLabel
 )
 {
-    ::WinSetWindowText((HWND)GetHWND(), (const char *)rsLabel.c_str());
+    wxString                        sLabel = ::wxPMTextToLabel(rsLabel);
+    ::WinSetWindowText((HWND)GetHWND(), (const char *)sLabel.c_str());
 } // end of wxRadioButton::SetLabel
 
 void wxRadioButton::SetValue(
@@ -227,53 +224,59 @@ void wxRadioButton::SetValue(
     if (bValue)
     {
         const wxWindowList&         rSiblings = GetParent()->GetChildren();
-        wxWindowList::Node*         pNodeThis = rSiblings.Find(this);
+        wxWindowList::compatibility_iterator nodeThis = rSiblings.Find(this);
 
-        wxCHECK_RET(pNodeThis, _T("radio button not a child of its parent?"));
+        wxCHECK_RET(nodeThis, _T("radio button not a child of its parent?"));
 
-        // 
-        // Turn off all radio buttons before this one
         //
-        for ( wxWindowList::Node* pNodeBefore = pNodeThis->GetPrevious();
-              pNodeBefore;
-              pNodeBefore = pNodeBefore->GetPrevious() )
+        // If it's not the first item of the group ...
+        //
+        if ( !HasFlag(wxRB_GROUP) )
         {
-            wxRadioButton*          pBtn = wxDynamicCast( pNodeBefore->GetData()
+            //
+            // ...turn off all radio buttons before this one
+            //
+            for ( wxWindowList::compatibility_iterator nodeBefore = nodeThis->GetPrevious();
+                  nodeBefore;
+                  nodeBefore = nodeBefore->GetPrevious() )
+            {
+                wxRadioButton*      pBtn = wxDynamicCast( nodeBefore->GetData()
                                                          ,wxRadioButton
                                                         );
-            if (!pBtn)
-            {
-                // 
-                // The radio buttons in a group must be consecutive, so there
-                // are no more of them
-                //
-                break;
-            }
-            pBtn->SetValue(FALSE);
-            if (pBtn->HasFlag(wxRB_GROUP))
-            {
-                // 
-                // Even if there are other radio buttons before this one,
-                // they're not in the same group with us
-                //
-                break;
+                if (!pBtn)
+                {
+                    //
+                    // The radio buttons in a group must be consecutive, so there
+                    // are no more of them
+                    //
+                    break;
+                }
+                pBtn->SetValue(FALSE);
+                if (pBtn->HasFlag(wxRB_GROUP))
+                {
+                    //
+                    // Even if there are other radio buttons before this one,
+                    // they're not in the same group with us
+                    //
+                    break;
+                }
             }
         }
 
-        // 
+        //
         // ... and all after this one
         //
-        for (wxWindowList::Node* pNodeAfter = pNodeThis->GetNext();
-             pNodeAfter;
-             pNodeAfter = pNodeAfter->GetNext())
+        for (wxWindowList::compatibility_iterator nodeAfter = nodeThis->GetNext();
+             nodeAfter;
+             nodeAfter = nodeAfter->GetNext())
         {
-            wxRadioButton*          pBtn = wxDynamicCast( pNodeAfter->GetData()
+            wxRadioButton*          pBtn = wxDynamicCast( nodeAfter->GetData()
                                                          ,wxRadioButton
                                                         );
 
             if (!pBtn || pBtn->HasFlag(wxRB_GROUP) )
             {
-                // 
+                //
                 // No more buttons or the first button of the next group
                 //
                 break;