- if (!rb->HasVMT()) return;
- if (g_blockEventsOnDrag) return;
-
- wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId());
- event.SetInt( rb->GetValue() );
- event.SetEventObject( rb );
- rb->GetEventHandler()->ProcessEvent( event );
+ if (!PreCreation( parent, pos, size ) ||
+ !CreateBase( parent, id, pos, size, style, validator, name ))
+ {
+ wxFAIL_MSG( wxT("wxRadioButton creation failed") );
+ return false;
+ }
+
+ GSList* radioButtonGroup = NULL;
+ if (!HasFlag(wxRB_GROUP) && !HasFlag(wxRB_SINGLE))
+ {
+ // search backward for last group start
+ wxWindowList::compatibility_iterator node = parent->GetChildren().GetLast();
+ for (; node; node = node->GetPrevious())
+ {
+ wxWindow *child = node->GetData();
+ if (child->HasFlag(wxRB_GROUP) && wxIsKindOf(child, wxRadioButton))
+ {
+ radioButtonGroup = gtk_radio_button_get_group(
+ GTK_RADIO_BUTTON(child->m_widget));
+ break;
+ }
+ }
+ }
+
+ m_widget = gtk_radio_button_new_with_label( radioButtonGroup, wxGTK_CONV( label ) );
+ g_object_ref(m_widget);
+
+ SetLabel(label);
+
+ g_signal_connect_after (m_widget, "clicked",
+ G_CALLBACK (gtk_radiobutton_clicked_callback), this);
+
+ m_parent->DoAddChild( this );
+
+ PostCreation(size);
+
+ return true;