diff options
-rw-r--r-- | vcl/inc/verticaltabctrl.hxx | 1 | ||||
-rw-r--r-- | vcl/source/control/ivctrl.cxx | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/vcl/inc/verticaltabctrl.hxx b/vcl/inc/verticaltabctrl.hxx index 666bef474172..e00770b8d1f8 100644 --- a/vcl/inc/verticaltabctrl.hxx +++ b/vcl/inc/verticaltabctrl.hxx @@ -80,6 +80,7 @@ public: vcl::Window* GetPageParent() { return m_xBox.get(); } + virtual Size GetOptimalSize() const override; virtual void DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) override; virtual FactoryFunction GetUITestFactory() const override; diff --git a/vcl/source/control/ivctrl.cxx b/vcl/source/control/ivctrl.cxx index 14e0ec44938b..c7e76a75eab0 100644 --- a/vcl/source/control/ivctrl.cxx +++ b/vcl/source/control/ivctrl.cxx @@ -627,6 +627,24 @@ void VerticalTabControl::SetPageText(std::u16string_view rPageId, const OUString pData->pEntry->SetText(rText); } +Size VerticalTabControl::GetOptimalSize() const +{ + // re-calculate size - we might have replaced dummy tab pages with + // actual content + Size aOptimalPageSize(m_xBox->get_preferred_size()); + + for (auto const& item : maPageList) + { + Size aPagePrefSize(item->xPage->get_preferred_size()); + if (aPagePrefSize.Width() > aOptimalPageSize.Width()) + aOptimalPageSize.setWidth( aPagePrefSize.Width() ); + if (aPagePrefSize.Height() > aOptimalPageSize.Height()) + aOptimalPageSize.setHeight( aPagePrefSize.Height() ); + } + + return aOptimalPageSize; +} + void VerticalTabControl::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) { rJsonWriter.put("id", get_id()); |