X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a5040b80be64f5a5eea4066c5535ff4b4f018a83..faeb3cedce9ae68adf6acdfec6d9ee23fba9c5e5:/src/gtk1/stattext.cpp diff --git a/src/gtk1/stattext.cpp b/src/gtk1/stattext.cpp index da7039c8ed..59817b5027 100644 --- a/src/gtk1/stattext.cpp +++ b/src/gtk1/stattext.cpp @@ -7,10 +7,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "stattext.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -71,7 +67,7 @@ bool wxStaticText::Create(wxWindow *parent, // effect of changing the control size which might not be desirable wxControl::SetLabel(label); m_widget = gtk_label_new( wxGTK_CONV( m_label ) ); - + GtkJustification justify; if ( style & wxALIGN_CENTER ) justify = GTK_JUSTIFY_CENTER; @@ -85,15 +81,12 @@ bool wxStaticText::Create(wxWindow *parent, static const float labelAlignments[] = { 0.0, 1.0, 0.5 }; gtk_misc_set_alignment(GTK_MISC(m_widget), labelAlignments[justify], 0.0); - if (size.x == -1) - gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE ); - else gtk_label_set_line_wrap( GTK_LABEL(m_widget), TRUE ); m_parent->DoAddChild( this ); PostCreation(size); - + // the bug below only happens with GTK 2 #ifdef __WXGTK20__ if ( justify != GTK_JUSTIFY_LEFT ) @@ -182,19 +175,23 @@ wxSize wxStaticText::DoGetBestSize() const // Do not return any arbitrary default value... wxASSERT_MSG( m_widget, wxT("wxStaticText::DoGetBestSize called before creation") ); - int width = m_width; #ifndef __WXGTK20__ + // This resets the internal GTK1 size calculation, which + // otherwise would be cashed (incorrectly) gtk_label_set_pattern( GTK_LABEL(m_widget), NULL ); - if (width < 3) width = -1; #endif - gtk_widget_set_usize( m_widget, width, -1 ); - + + // GetBestSize is supposed to return unwrapped size + gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE ); + GtkRequisition req; req.width = -1; req.height = -1; (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request ) (m_widget, &req ); + gtk_label_set_line_wrap( GTK_LABEL(m_widget), TRUE ); + return wxSize (req.width, req.height); }