X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ebea0891d0a5531cfd1ff85e6d77fab66dcf834b..572c6194d35ad2791c71aee05d6996da2761b07a:/src/gtk1/button.cpp?ds=sidebyside diff --git a/src/gtk1/button.cpp b/src/gtk1/button.cpp index ad9b36f8da..39d94b37b1 100644 --- a/src/gtk1/button.cpp +++ b/src/gtk1/button.cpp @@ -75,13 +75,13 @@ bool wxButton::Create( wxWindow *parent, wxWindowID id, const wxString &label, m_needParent = TRUE; m_acceptsFocus = TRUE; - wxSize newSize = size; + if (!PreCreation( parent, pos, size ) || + !CreateBase( parent, id, pos, size, style, validator, name )) + { + wxFAIL_MSG( wxT("wxButton creation failed") ); + return FALSE; + } - PreCreation( parent, id, pos, newSize, style, name ); - -#if wxUSE_VALIDATORS - SetValidator( validator ); -#endif // wxUSE_VALIDATORS m_widget = gtk_button_new_with_label( "" ); @@ -92,8 +92,22 @@ bool wxButton::Create( wxWindow *parent, wxWindowID id, const wxString &label, SetLabel(label); - if (newSize.x == -1) newSize.x = 15+gdk_string_measure( m_widget->style->font, label.mbc_str() ); - if (newSize.y == -1) newSize.y = 26; + int x = 0; int y = 0; + wxFont new_font( parent->GetFont() ); + GetTextExtent( m_label, &x, &y, (int*)NULL, (int*)NULL, &new_font ); + + wxSize newSize = size; + if (newSize.x == -1) + { + newSize.x = 12+x; + if (newSize.x < 80) newSize.x = 80; + } + if (newSize.y == -1) + { + newSize.y = 11+y; + if (newSize.x < 26) newSize.x = 26; + } + SetSize( newSize.x, newSize.y ); gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", @@ -128,7 +142,7 @@ wxSize wxButton::GetDefaultSize() void wxButton::SetLabel( const wxString &label ) { - wxCHECK_RET( m_widget != NULL, _T("invalid button") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid button") ); wxControl::SetLabel( label );