+    gtk_signal_connect( GTK_OBJECT(m_widget), "clicked",
+      GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this );
+
+    m_parent->DoAddChild( this );
+
+    PostCreation();
+
+    SetFont( parent->GetFont() );
+
+    wxSize best_size( DoGetBestSize() );
+    wxSize new_size( size );
+    if (new_size.x == -1)
+        new_size.x = best_size.x;
+    if (new_size.y == -1)
+        new_size.y = best_size.y;
+    if ((new_size.x != size.x) || (new_size.y != size.y))
+        SetSize( new_size.x, new_size.y );
+
+    SetSize( new_size );
+
+    SetBackgroundColour( parent->GetBackgroundColour() );
+    SetForegroundColour( parent->GetForegroundColour() );
+
+    Show( TRUE );
+
+    return TRUE;
+}
+
+void wxButton::SetDefault()
+{
+    GTK_WIDGET_SET_FLAGS( m_widget, GTK_CAN_DEFAULT );
+    gtk_widget_grab_default( m_widget );
+
+    SetSize( m_x, m_y, m_width, m_height );
+}
+
+/* static */
+wxSize wxButton::GetDefaultSize()