Don't refresh wxStaticText if its label didn't really change
Optimize calling SetLabel() with the same label as the current one, this seems to happen quite often in practice and results in flicker, so check for it explicitly.
This commit is contained in:
@@ -144,6 +144,9 @@ void wxStaticText::GTKDoSetLabel(GTKLabelSetter setter, const wxString& label)
|
||||
|
||||
void wxStaticText::SetLabel(const wxString& label)
|
||||
{
|
||||
if ( label == m_labelOrig )
|
||||
return;
|
||||
|
||||
m_labelOrig = label;
|
||||
|
||||
GTKDoSetLabel(&wxStaticText::GTKSetLabelForLabel, label);
|
||||
|
||||
@@ -71,6 +71,9 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
void wxStaticText::SetLabel(const wxString& label)
|
||||
{
|
||||
if ( label == m_labelOrig )
|
||||
return;
|
||||
|
||||
m_labelOrig = label; // save original label
|
||||
|
||||
// Motif does not support ellipsized labels natively
|
||||
|
||||
@@ -150,6 +150,10 @@ void wxStaticText::DoSetSize(int x, int y, int w, int h, int sizeFlags)
|
||||
|
||||
void wxStaticText::SetLabel(const wxString& label)
|
||||
{
|
||||
// If the label doesn't really change, avoid flicker by not doing anything.
|
||||
if ( label == m_labelOrig )
|
||||
return;
|
||||
|
||||
#ifdef SS_ENDELLIPSIS
|
||||
long styleReal = ::GetWindowLong(GetHwnd(), GWL_STYLE);
|
||||
if ( HasFlag(wxST_ELLIPSIZE_END) )
|
||||
|
||||
@@ -58,6 +58,9 @@ bool wxStaticText::Create( wxWindow *parent,
|
||||
|
||||
void wxStaticText::SetLabel(const wxString& label)
|
||||
{
|
||||
if ( label == m_labelOrig )
|
||||
return;
|
||||
|
||||
m_labelOrig = label;
|
||||
|
||||
// middle/end ellipsization is handled by the OS:
|
||||
|
||||
@@ -70,6 +70,9 @@ void wxStaticText::DoDraw(wxControlRenderer *renderer)
|
||||
|
||||
void wxStaticText::SetLabel(const wxString& str)
|
||||
{
|
||||
if ( label == m_labelOrig )
|
||||
return;
|
||||
|
||||
// save original label
|
||||
m_labelOrig = str;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user