X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/088ddc4e370d808a2f7e923b671856c303dfa45c..ce7208d49d5ce2ca1dc0b3b83f14f1d04f29c4bf:/src/gtk1/stattext.cpp?ds=sidebyside diff --git a/src/gtk1/stattext.cpp b/src/gtk1/stattext.cpp index 316d7b2888..e1f4fb53e1 100644 --- a/src/gtk1/stattext.cpp +++ b/src/gtk1/stattext.cpp @@ -7,17 +7,13 @@ // 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" #if wxUSE_STATTEXT #include "wx/stattext.h" -#include "wx/gtk/private.h" +#include "wx/gtk1/private.h" #include "gdk/gdk.h" #include "gtk/gtk.h" @@ -65,13 +61,9 @@ bool wxStaticText::Create(wxWindow *parent, return FALSE; } - // notice that we call the base class version which will just remove the - // '&' characters from the string, but not set the label's text to it - // because the label is not yet created and because SetLabel() has a side - // effect of changing the control size which might not be desirable - wxControl::SetLabel(label); - m_widget = gtk_label_new( wxGTK_CONV( m_label ) ); - + m_label = label; + m_widget = gtk_label_new( wxGTK_CONV( GTKRemoveMnemonics(label)) ); + GtkJustification justify; if ( style & wxALIGN_CENTER ) justify = GTK_JUSTIFY_CENTER; @@ -90,23 +82,6 @@ bool wxStaticText::Create(wxWindow *parent, m_parent->DoAddChild( this ); PostCreation(size); - - // the bug below only happens with GTK 2 -#ifdef __WXGTK20__ - if ( justify != GTK_JUSTIFY_LEFT ) - { - // if we let GTK call wxgtk_window_size_request_callback the label - // always shrinks to its minimal size for some reason and so no - // alignment except the default left doesn't work (in fact it does, - // but you don't see it) - gtk_signal_disconnect_by_func - ( - GTK_OBJECT(m_widget), - GTK_SIGNAL_FUNC(wxgtk_window_size_request_callback), - (gpointer) this - ); - } -#endif // __WXGTK20__ return TRUE; } @@ -114,44 +89,19 @@ bool wxStaticText::Create(wxWindow *parent, wxString wxStaticText::GetLabel() const { GtkLabel *label = GTK_LABEL(m_widget); - -#ifdef __WXGTK20__ - wxString str = wxGTK_CONV_BACK( gtk_label_get_text( label ) ); -#else wxString str = wxString( label->label ); -#endif - return wxString(str); } void wxStaticText::SetLabel( const wxString &label ) { - wxControl::SetLabel(label); + wxCHECK_RET( m_widget != NULL, wxT("invalid static text") ); -#ifdef __WXGTK20__ - // Build the colorized version of the label (markup only allowed - // under GTK2): - if (m_foregroundColour.Ok()) - { - // If the color has been set, create a markup string to pass to - // the label setter - wxString colorlabel; - colorlabel.Printf(_T("%s"), - m_foregroundColour.Red(), m_foregroundColour.Green(), - m_foregroundColour.Blue(), - wxEscapeStringForPangoMarkup(label).c_str()); - gtk_label_set_markup( GTK_LABEL(m_widget), wxGTK_CONV( colorlabel ) ); - } - else -#endif - gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) ); + GTKSetLabelForLabel(GTK_LABEL(m_widget), label); // adjust the label size to the new label unless disabled if (!HasFlag(wxST_NO_AUTORESIZE)) - { - InvalidateBestSize(); SetSize( GetBestSize() ); - } } bool wxStaticText::SetFont( const wxFont &font ) @@ -179,15 +129,13 @@ wxSize wxStaticText::DoGetBestSize() const // Do not return any arbitrary default value... wxASSERT_MSG( m_widget, wxT("wxStaticText::DoGetBestSize called before creation") ); -#ifndef __WXGTK20__ // This resets the internal GTK1 size calculation, which // otherwise would be cashed (incorrectly) gtk_label_set_pattern( GTK_LABEL(m_widget), NULL ); -#endif // 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; @@ -195,7 +143,7 @@ wxSize wxStaticText::DoGetBestSize() const (m_widget, &req ); gtk_label_set_line_wrap( GTK_LABEL(m_widget), TRUE ); - + return wxSize (req.width, req.height); }