X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a2053b27b318fe81918a72c838944d1e8cd1524f..c8c0e54c700b29c0ec0d073e536f5b2604e3778d:/src/gtk1/button.cpp diff --git a/src/gtk1/button.cpp b/src/gtk1/button.cpp index 254056d770..2bb626f031 100644 --- a/src/gtk1/button.cpp +++ b/src/gtk1/button.cpp @@ -41,11 +41,12 @@ extern bool g_blockEventsOnDrag; static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton *button ) { - if (g_isIdle) wxapp_install_idle_handler(); + if (g_isIdle) + wxapp_install_idle_handler(); if (!button->m_hasVMT) return; if (g_blockEventsOnDrag) return; - + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId()); event.SetEventObject(button); button->GetEventHandler()->ProcessEvent(event); @@ -74,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( _T("wxButton creation failed") ); + return FALSE; + } - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); m_widget = gtk_button_new_with_label( "" ); @@ -89,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", @@ -117,6 +134,12 @@ 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") );