summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/verticaltabctrl.hxx1
-rw-r--r--vcl/source/control/ivctrl.cxx18
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());