diff --git a/include/wx/qt/stattext.h b/include/wx/qt/stattext.h index f427f16490..5a19698191 100644 --- a/include/wx/qt/stattext.h +++ b/include/wx/qt/stattext.h @@ -31,10 +31,13 @@ public: const wxString &name = wxStaticTextNameStr ); virtual void SetLabel(const wxString& label) wxOVERRIDE; - virtual wxString GetLabel() const wxOVERRIDE; virtual QWidget *GetHandle() const wxOVERRIDE; +protected: + virtual wxString WXGetVisibleLabel() const wxOVERRIDE; + virtual void WXSetVisibleLabel(const wxString& str) wxOVERRIDE; + private: QLabel *m_qtLabel; diff --git a/src/qt/stattext.cpp b/src/qt/stattext.cpp index 2eb50b5f18..28e68b08be 100644 --- a/src/qt/stattext.cpp +++ b/src/qt/stattext.cpp @@ -59,11 +59,26 @@ bool wxStaticText::Create(wxWindow *parent, } void wxStaticText::SetLabel(const wxString& label) +{ + // If the label doesn't really change, avoid flicker by not doing anything. + if ( label == m_labelOrig ) + return; + + // save the label in m_labelOrig with both the markup (if any) and + // the mnemonics characters (if any) + m_labelOrig = label; + + WXSetVisibleLabel(GetEllipsizedLabel()); + + AutoResizeIfNecessary(); +} + +void wxStaticText::WXSetVisibleLabel(const wxString& label) { m_qtLabel->setText( wxQtConvertString( label ) ); } -wxString wxStaticText::GetLabel() const +wxString wxStaticText::WXGetVisibleLabel() const { return wxQtConvertString( m_qtLabel->text() ); }