From 958521183a2547123dfe7fb53e9a726002b08593 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 7 Jul 2019 15:54:14 +0200 Subject: [PATCH] Add minimal support for ellipsization to wxQt wxStaticText Set the visible label to the ellipsized value, if necessary. Also call AutoResizeIfNecessary() for consistency with the other ports. --- include/wx/qt/stattext.h | 5 ++++- src/qt/stattext.cpp | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) 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() ); }