]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/radiobox.cpp
Crash fix under VC++
[wxWidgets.git] / src / gtk1 / radiobox.cpp
index 551fc826aacd34577d8d5f3820cfd920d6dbd00a..f5779a893668759ee37b2631232e7a4f0a216098 100644 (file)
@@ -246,16 +246,10 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
     bool wasShown = IsShown();
     if ( wasShown )
         Hide(); // prevent PostCreation() from showing us
     bool wasShown = IsShown();
     if ( wasShown )
         Hide(); // prevent PostCreation() from showing us
-    PostCreation();
-    InheritAttributes();
-
-    ApplyWidgetStyle();
 
     SetLabel( title );
 
 
     SetLabel( title );
 
-    SetFont( parent->GetFont() );
-
-    SetBestSize( size );
+    PostCreation(size);
 
     if ( wasShown )
         Show();
 
     if ( wasShown )
         Show();
@@ -292,6 +286,7 @@ wxSize wxRadioBox::DoGetBestSize() const
     if (req.width > size.x)
         size.x = req.width;
 
     if (req.width > size.x)
         size.x = req.width;
 
+    CacheBestSize(size);
     return size;
 }
 
     return size;
 }
 
@@ -687,19 +682,21 @@ void wxRadioBox::GtkEnableEvents()
     }
 }
 
     }
 }
 
-void wxRadioBox::ApplyWidgetStyle()
+void wxRadioBox::DoApplyWidgetStyle(GtkRcStyle *style)
 {
 {
-    SetWidgetStyle();
+    gtk_widget_modify_style( m_widget, style );
 
 
-    gtk_widget_set_style( m_widget, m_widgetStyle );
+#ifdef __WXGTK20__
+    gtk_widget_modify_style(GTK_FRAME(m_widget)->label_widget, style);
+#endif
 
     wxList::compatibility_iterator node = m_boxes.GetFirst();
     while (node)
     {
         GtkWidget *widget = GTK_WIDGET( node->GetData() );
 
     wxList::compatibility_iterator node = m_boxes.GetFirst();
     while (node)
     {
         GtkWidget *widget = GTK_WIDGET( node->GetData() );
-        gtk_widget_set_style( widget, m_widgetStyle );
 
 
-        gtk_widget_set_style( BUTTON_CHILD(node->GetData()), m_widgetStyle );
+        gtk_widget_modify_style( widget, style );
+        gtk_widget_modify_style( BUTTON_CHILD(node->GetData()), style );
 
         node = node->GetNext();
     }
 
         node = node->GetNext();
     }
@@ -758,5 +755,19 @@ void wxRadioBox::OnInternalIdle()
     }
 }
 
     }
 }
 
+// static
+wxVisualAttributes
+wxRadioBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+    wxVisualAttributes attr;
+    // NB: we need toplevel window so that GTK+ can find the right style
+    GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+    GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
+    gtk_container_add(GTK_CONTAINER(wnd), widget);
+    attr = GetDefaultAttributesFromGTKWidget(widget);
+    gtk_widget_destroy(wnd);
+    return attr;
+}
+
 #endif // wxUSE_RADIOBOX
 
 #endif // wxUSE_RADIOBOX