X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32ac755d4a48496ecea17a50c216d44078f8dc8b..a3e7d24d21f5371c88caffe4a85c8e4a5362db3f:/src/gtk1/button.cpp diff --git a/src/gtk1/button.cpp b/src/gtk1/button.cpp index 62e357c733..39d94b37b1 100644 --- a/src/gtk1/button.cpp +++ b/src/gtk1/button.cpp @@ -47,8 +47,6 @@ static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton * if (!button->m_hasVMT) return; if (g_blockEventsOnDrag) return; - printf( "clicked: %s.\n", button->GetLabel().c_str() ); - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId()); event.SetEventObject(button); button->GetEventHandler()->ProcessEvent(event); @@ -77,11 +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 ); - - SetValidator( validator ); 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", @@ -120,9 +134,15 @@ void wxButton::SetDefault(void) SetSize( m_x, m_y, m_width, m_height ); } +/* static */ +wxSize wxButton::GetDefaultSize() +{ + return wxSize(80,26); +} + 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 );