Enable best size caching, remove unnecessary GetLabel() and SetForegroundColour(),
remove hack for non-left alignment, it does not seem to be needed anymore. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51507 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -34,17 +34,13 @@ public:
|
|||||||
long style = 0,
|
long style = 0,
|
||||||
const wxString &name = wxStaticTextNameStr );
|
const wxString &name = wxStaticTextNameStr );
|
||||||
|
|
||||||
wxString GetLabel() const;
|
|
||||||
void SetLabel( const wxString &label );
|
void SetLabel( const wxString &label );
|
||||||
|
|
||||||
bool SetFont( const wxFont &font );
|
bool SetFont( const wxFont &font );
|
||||||
bool SetForegroundColour( const wxColour& colour );
|
|
||||||
|
|
||||||
static wxVisualAttributes
|
static wxVisualAttributes
|
||||||
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// implementation
|
// implementation
|
||||||
// --------------
|
// --------------
|
||||||
|
|
||||||
|
@@ -15,14 +15,6 @@
|
|||||||
#include "wx/stattext.h"
|
#include "wx/stattext.h"
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
|
|
||||||
#include "gdk/gdk.h"
|
|
||||||
#include "gtk/gtk.h"
|
|
||||||
|
|
||||||
extern "C"
|
|
||||||
void wxgtk_window_size_request_callback(GtkWidget *widget,
|
|
||||||
GtkRequisition *requisition,
|
|
||||||
wxWindow *win);
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxStaticText
|
// wxStaticText
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -66,7 +58,7 @@ bool wxStaticText::Create(wxWindow *parent,
|
|||||||
justify = GTK_JUSTIFY_CENTER;
|
justify = GTK_JUSTIFY_CENTER;
|
||||||
else if ( style & wxALIGN_RIGHT )
|
else if ( style & wxALIGN_RIGHT )
|
||||||
justify = GTK_JUSTIFY_RIGHT;
|
justify = GTK_JUSTIFY_RIGHT;
|
||||||
else // wxALIGN_LEFT is 0
|
else
|
||||||
justify = GTK_JUSTIFY_LEFT;
|
justify = GTK_JUSTIFY_LEFT;
|
||||||
|
|
||||||
if (GetLayoutDirection() == wxLayout_RightToLeft)
|
if (GetLayoutDirection() == wxLayout_RightToLeft)
|
||||||
@@ -107,26 +99,7 @@ bool wxStaticText::Create(wxWindow *parent,
|
|||||||
|
|
||||||
PostCreation(size);
|
PostCreation(size);
|
||||||
|
|
||||||
// the bug below only happens with GTK 2
|
return true;
|
||||||
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)
|
|
||||||
g_signal_handlers_disconnect_by_func (m_widget,
|
|
||||||
(gpointer) wxgtk_window_size_request_callback,
|
|
||||||
this);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString wxStaticText::GetLabel() const
|
|
||||||
{
|
|
||||||
// we need to return the label just like it was passed to the last call
|
|
||||||
// to SetLabel(): i.e. with wx-style mnemonics and with markup
|
|
||||||
return wxControl::GetLabel();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxStaticText::SetLabel( const wxString& str )
|
void wxStaticText::SetLabel( const wxString& str )
|
||||||
@@ -136,6 +109,8 @@ void wxStaticText::SetLabel( const wxString& str )
|
|||||||
// save the label inside m_labelOrig in case user calls GetLabel() later
|
// save the label inside m_labelOrig in case user calls GetLabel() later
|
||||||
m_labelOrig = str;
|
m_labelOrig = str;
|
||||||
|
|
||||||
|
InvalidateBestSize();
|
||||||
|
|
||||||
wxString label(str);
|
wxString label(str);
|
||||||
if (gtk_check_version(2,6,0) &&
|
if (gtk_check_version(2,6,0) &&
|
||||||
IsEllipsized())
|
IsEllipsized())
|
||||||
@@ -193,7 +168,6 @@ bool wxStaticText::SetFont( const wxFont &font )
|
|||||||
// adjust the label size to the new label unless disabled
|
// adjust the label size to the new label unless disabled
|
||||||
if (!HasFlag(wxST_NO_AUTORESIZE))
|
if (!HasFlag(wxST_NO_AUTORESIZE))
|
||||||
{
|
{
|
||||||
InvalidateBestSize();
|
|
||||||
SetSize( GetBestSize() );
|
SetSize( GetBestSize() );
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -203,7 +177,7 @@ void wxStaticText::DoSetSize(int x, int y,
|
|||||||
int width, int height,
|
int width, int height,
|
||||||
int sizeFlags )
|
int sizeFlags )
|
||||||
{
|
{
|
||||||
wxControl::DoSetSize( x, y, width, height, sizeFlags );
|
wxStaticTextBase::DoSetSize(x, y, width, height, sizeFlags);
|
||||||
|
|
||||||
if (gtk_check_version(2,6,0))
|
if (gtk_check_version(2,6,0))
|
||||||
{
|
{
|
||||||
@@ -224,25 +198,14 @@ wxSize wxStaticText::DoGetBestSize() const
|
|||||||
// infinite loop sometimes (notably when the control is in a toolbar)
|
// infinite loop sometimes (notably when the control is in a toolbar)
|
||||||
GTK_LABEL(m_widget)->wrap = FALSE;
|
GTK_LABEL(m_widget)->wrap = FALSE;
|
||||||
|
|
||||||
GtkRequisition req;
|
wxSize size = wxStaticTextBase::DoGetBestSize();
|
||||||
req.width = -1;
|
|
||||||
req.height = -1;
|
|
||||||
(* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request )
|
|
||||||
(m_widget, &req );
|
|
||||||
|
|
||||||
GTK_LABEL(m_widget)->wrap = TRUE; // restore old value
|
GTK_LABEL(m_widget)->wrap = TRUE; // restore old value
|
||||||
|
|
||||||
// Adding 1 to width to workaround GTK sometimes wrapping the text needlessly
|
// Adding 1 to width to workaround GTK sometimes wrapping the text needlessly
|
||||||
return wxSize (req.width+1, req.height);
|
size.x++;
|
||||||
}
|
CacheBestSize(size);
|
||||||
|
return size;
|
||||||
bool wxStaticText::SetForegroundColour(const wxColour& colour)
|
|
||||||
{
|
|
||||||
// First, we call the base class member
|
|
||||||
wxControl::SetForegroundColour(colour);
|
|
||||||
// Then, to force the color change, we set the label with the current label
|
|
||||||
SetLabel(GetLabel());
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxStaticText::GTKWidgetNeedsMnemonic() const
|
bool wxStaticText::GTKWidgetNeedsMnemonic() const
|
||||||
|
Reference in New Issue
Block a user