X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..400930d3445bd8d8745c621b9ad0b352433db622:/src/gtk1/stattext.cpp diff --git a/src/gtk1/stattext.cpp b/src/gtk1/stattext.cpp index 812a9839b2..d3b0f138f0 100644 --- a/src/gtk1/stattext.cpp +++ b/src/gtk1/stattext.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp +// Name: src/gtk1/stattext.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -13,7 +13,7 @@ #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" @@ -27,8 +27,6 @@ void wxgtk_window_size_request_callback(GtkWidget *widget, // wxStaticText //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxStaticText,wxControl) - wxStaticText::wxStaticText() { } @@ -61,13 +59,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; @@ -86,23 +80,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; } @@ -110,44 +87,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 ) @@ -175,15 +127,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; @@ -191,7 +141,7 @@ wxSize wxStaticText::DoGetBestSize() const (m_widget, &req ); gtk_label_set_line_wrap( GTK_LABEL(m_widget), TRUE ); - + return wxSize (req.width, req.height); }