X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..c3f4609ebb56f76065c28352d8db37f65a6fa35e:/src/mac/carbon/radiobox.cpp

diff --git a/src/mac/carbon/radiobox.cpp b/src/mac/carbon/radiobox.cpp
index 70da0df49c..877ba66899 100644
--- a/src/mac/carbon/radiobox.cpp
+++ b/src/mac/carbon/radiobox.cpp
@@ -18,9 +18,12 @@
 #endif
 
 #include "wx/radiobox.h"
-#include <wx/mac/uma.h>
+#include "wx/radiobut.h"
+#include "wx/mac/uma.h"
 
+#if !USE_SHARED_LIBRARY
 IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
+#endif
 
 #pragma mark -
 #pragma mark ### Constructors & destructor ###
@@ -93,7 +96,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 	Rect bounds ;
 	Str255 title ;
 	
-	MacPreControlCreate( parent , id ,  label , pos , size ,style, *((wxValidator*)NULL) , name , &bounds , title ) ;
+	MacPreControlCreate( parent , id ,  label , pos , size ,style, val , name , &bounds , title ) ;
 
 	m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
 	  	kControlGroupBoxTextTitleProc , (long) this ) ;
@@ -418,7 +421,7 @@ void wxRadioBox::SetFocus()
 //-------------------------------------------------------------------------------------
 // Simulates the effect of the user issuing a command to the item
 
-#define RADIO_SIZE 20
+#define RADIO_SIZE 40
 
 void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 {
@@ -429,13 +432,15 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 
 	int x_current, y_current;
 	int x_offset,y_offset;
+    int widthOld, heightOld;
+    GetSize(&widthOld, &heightOld);
 
 	x_offset = x;
 	y_offset = y;
 	GetPosition(&x_current, &y_current);
-	if ((x == -1) || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+	if ((x == -1) && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
 		x_offset = x_current;
-	if ((y == -1) || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+	if ((y == -1)&& !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
 		y_offset = y_current;
 
 // define size
@@ -463,7 +468,24 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 	totHeight = GetNumVer() * (maxHeight + charHeight/2) + charHeight*3/2;
 	totWidth  = GetNumHor() * (maxWidth + charWidth) + charWidth;
 
-	wxControl::DoSetSize(x_offset,y_offset,totWidth,totHeight,wxSIZE_AUTO);
+    // only change our width/height if asked for
+    if ( width == -1 )
+    {
+        if ( sizeFlags & wxSIZE_AUTO_WIDTH )
+            width = totWidth ;
+        else
+            width = widthOld;
+    }
+
+    if ( height == -1 )
+    {
+        if ( sizeFlags & wxSIZE_AUTO_HEIGHT )
+            height = totHeight ;
+        else
+            height = heightOld;
+    }
+
+	wxControl::DoSetSize(x_offset,y_offset,width,height,wxSIZE_AUTO);
 
 // arrange radiobuttons
 
@@ -471,7 +493,7 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 	
 	
 	x_start = charWidth;
-	y_start = charHeight*3/2;
+	y_start = 15 ;
 	x_offset = x_start;
 	y_offset = y_start;
 	
@@ -488,7 +510,7 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
       		else
       			{
 				x_offset = x_start;
-        		y_offset += maxHeight + charHeight/2;
+        		y_offset += maxHeight ; /*+ charHeight/2;*/
 				}
 			}
 
@@ -496,7 +518,7 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 		current=current->NextInCycle();
 		
 		if (m_windowStyle & wxRA_SPECIFY_ROWS)
-			y_offset += maxHeight + charHeight/2;
+			y_offset += maxHeight ; /*+ charHeight/2;*/
 		else
 			x_offset += maxWidth + charWidth;
 		}