diff --git a/include/wx/qt/statusbar.h b/include/wx/qt/statusbar.h index 3aef7d675b..1257c9ad98 100644 --- a/include/wx/qt/statusbar.h +++ b/include/wx/qt/statusbar.h @@ -37,7 +37,7 @@ protected: virtual void DoUpdateStatusText(int number) override; private: - void UpdateFields(); + void CreateFieldsIfNeeded(); QStatusBar *m_qtStatusBar = nullptr; std::vector m_qtPanes; diff --git a/src/qt/statusbar.cpp b/src/qt/statusbar.cpp index 82450d2419..bc1155d458 100644 --- a/src/qt/statusbar.cpp +++ b/src/qt/statusbar.cpp @@ -53,7 +53,7 @@ bool wxStatusBar::Create(wxWindow *parent, wxWindowID id, SetFieldsCount(1); // Notice that child controls, if any, will be added using addWidget() in - // UpdateFields() function. So Unbind the base class handler which is not + // CreateFieldsIfNeeded() function. So Unbind the base class handler which is not // needed here. And more importantely, it won't work properly either. Unbind(wxEVT_SIZE, &wxStatusBar::OnSize, static_cast(this)); @@ -102,6 +102,8 @@ bool wxStatusBar::GetFieldRect(int i, wxRect& rect) const wxCHECK_MSG( (i >= 0) && ((size_t)i < m_panes.GetCount()), false, "invalid statusbar field index" ); + const_cast(this)->CreateFieldsIfNeeded(); + rect = wxQtConvertRect(m_qtPanes[i]->geometry()); return true; } @@ -123,7 +125,7 @@ int wxStatusBar::GetBorderY() const void wxStatusBar::DoUpdateStatusText(int number) { - UpdateFields(); + CreateFieldsIfNeeded(); const auto pane = dynamic_cast(m_qtPanes[number]); @@ -157,7 +159,7 @@ void wxStatusBar::DoUpdateStatusText(int number) pane->setText(text); } -void wxStatusBar::UpdateFields() +void wxStatusBar::CreateFieldsIfNeeded() { if ( !m_qtPanes.empty() ) return;