]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/radiobox.cpp
added option for getting visible region w/o children clipped
[wxWidgets.git] / src / mac / carbon / radiobox.cpp
index cafbf2ed98076120aeeca5fcd3caeb21a688c63b..98e7172f9a518b185b88027dca4f94d16d8a790f 100644 (file)
@@ -14,7 +14,8 @@
 //-------------------------------------------------------------------------------------
 
 #ifdef __GNUG__
-#pragma implementation "radiobox.h"
+  #pragma implementation "radioboxbase.h"
+  #pragma implementation "radiobox.h"
 #endif
 
 #include "wx/defs.h"
@@ -114,16 +115,14 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        Rect bounds ;
        Str255 title ;
        
-       MacPreControlCreate( parent , id ,  label , pos , size ,style, val , name , &bounds , title ) ;
+       MacPreControlCreate( parent , id ,  wxStripMenuCodes(label) , pos , size ,style, val , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
+       m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1, 
                kControlGroupBoxTextTitleProc , (long) this ) ;
        
-       MacPostControlCreate() ;
-
     for (i = 0; i < n; i++)
     {
-        wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10),
+        wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(), wxStripMenuCodes(choices[i]),wxPoint(5,20*i+10),
           wxDefaultSize , i == 0 ? wxRB_GROUP : 0 ) ;
         if ( i == 0 )
           m_radioButtonCycle = radBtn ;
@@ -131,7 +130,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
     }
 
        SetSelection(0);
-       SetSize(pos.x,pos.y,size.x,size.y);
+       MacPostControlCreate() ;
 
   return TRUE;
 }
@@ -480,6 +479,39 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
                }
 }
 
+wxSize wxRadioBox::DoGetBestSize() const
+{
+    int charWidth, charHeight;
+    int maxWidth, maxHeight;
+    int eachWidth, eachHeight;
+    int totWidth, totHeight;
+
+    wxFont font = GetParent()->GetFont();
+    GetTextExtent(wxString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),
+                  &charWidth, &charHeight, NULL, NULL, &font);
+    charWidth /= 52;
+
+   maxWidth = -1;
+   maxHeight = -1;
+
+   // handle radio box title as well
+   GetTextExtent(GetTitle(), &eachWidth, NULL);
+   eachWidth  = (int)(eachWidth + RADIO_SIZE);
+   if (maxWidth < eachWidth)     maxWidth = eachWidth;
+
+   for (int i = 0 ; i < m_noItems; i++)
+   {
+        GetTextExtent(GetString(i), &eachWidth, &eachHeight);
+        eachWidth  = (int)(eachWidth + RADIO_SIZE) ;
+        eachHeight = (int)((3 * eachHeight) / 2);
+        if (maxWidth < eachWidth)     maxWidth = eachWidth;
+        if (maxHeight < eachHeight)   maxHeight = eachHeight;
+    }
+
+    totHeight = GetRowCount() * (maxHeight + charHeight/2) + charHeight * 3/2;
+    totWidth  = GetColumnCount() * (maxWidth + charWidth) + charWidth;
+   return wxSize(totWidth, totHeight);
+}
 //-------------------------------------------------------------------------------------
 //             ¥ GetNumVer
 //-------------------------------------------------------------------------------------