X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3d257b8db10b5f464d896ff0d4249237d8f587a1..8a28cd66a63ce30c75173e10948e9d49d366d218:/src/gtk1/stattext.cpp diff --git a/src/gtk1/stattext.cpp b/src/gtk1/stattext.cpp index 59817b5027..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,12 +59,8 @@ 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 ) @@ -87,67 +81,25 @@ bool wxStaticText::Create(wxWindow *parent, 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; } 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,11 +127,9 @@ 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 );