summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-08-31 10:25:08 +0100
committerMichael Weghorn <m.weghorn@posteo.de>2021-09-03 11:52:24 +0200
commit95b3e2a0a4407a3e09efbacef5987ff6d69bc400 (patch)
tree871f1fca2d1c38506c9299f7753ab365893c7ef6
parent1266d8bea7044b14177feb62241d96508363a2f9 (diff)
tdf#142458 minimal width not including extra width needed by scrolledwindow
its only including the width of the panels and not the extra space possibly required by the container window. Which is 2x the m_nBorderWidth of 1pixel of VclScrolledWindow in this case. Change-Id: I56775c7183d7a8b87af263ddc8bb17373779e9ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121290 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
-rw-r--r--include/sfx2/sidebar/Deck.hxx1
-rw-r--r--sfx2/source/sidebar/Deck.cxx18
2 files changed, 19 insertions, 0 deletions
diff --git a/include/sfx2/sidebar/Deck.hxx b/include/sfx2/sidebar/Deck.hxx
index a3d3a63aff01..47a33ab17d2c 100644
--- a/include/sfx2/sidebar/Deck.hxx
+++ b/include/sfx2/sidebar/Deck.hxx
@@ -74,6 +74,7 @@ private:
private:
const OUString msId;
sal_Int32 mnMinimalWidth;
+ sal_Int32 mnScrolledWindowExtraWidth;
sal_Int32 mnMinimalHeight;
SharedPanelContainer maPanels;
diff --git a/sfx2/source/sidebar/Deck.cxx b/sfx2/source/sidebar/Deck.cxx
index 074a0bad7466..dd7f7c6716c3 100644
--- a/sfx2/source/sidebar/Deck.cxx
+++ b/sfx2/source/sidebar/Deck.cxx
@@ -46,6 +46,7 @@ Deck::Deck(const DeckDescriptor& rDeckDescriptor, SidebarDockingWindow* pParentW
: InterimItemWindow(pParentWindow, "sfx/ui/deck.ui", "Deck")
, msId(rDeckDescriptor.msId)
, mnMinimalWidth(0)
+ , mnScrolledWindowExtraWidth(0)
, mnMinimalHeight(0)
, maPanels()
, mxParentWindow(pParentWindow)
@@ -59,6 +60,15 @@ Deck::Deck(const DeckDescriptor& rDeckDescriptor, SidebarDockingWindow* pParentW
mxVerticalScrollBar->vadjustment_set_step_increment(10);
mxVerticalScrollBar->vadjustment_set_page_increment(100);
+
+ // tdf#142458 Measure the preferred width of an empty ScrolledWindow
+ // to add to the width of the union of panel widths when calculating
+ // the minimal width of the deck
+ mxVerticalScrollBar->set_hpolicy(VclPolicyType::NEVER);
+ mxVerticalScrollBar->set_vpolicy(VclPolicyType::NEVER);
+ mnScrolledWindowExtraWidth = mxVerticalScrollBar->get_preferred_size().Width();
+ mxVerticalScrollBar->set_hpolicy(VclPolicyType::AUTOMATIC);
+ mxVerticalScrollBar->set_vpolicy(VclPolicyType::AUTOMATIC);
}
Deck::~Deck()
@@ -202,6 +212,14 @@ void Deck::RequestLayoutInternal()
DeckLayouter::LayoutDeck(mxParentWindow.get(), GetContentArea(),
mnMinimalWidth, mnMinimalHeight, maPanels,
*GetTitleBar(), *mxVerticalScrollBar);
+
+ if (mnMinimalWidth)
+ {
+ // tdf#142458 at this point mnMinimalWidth contains the width required
+ // by the panels, but extra space may be needed by the scrolledwindow
+ // that will contain the panels
+ mnMinimalWidth += mnScrolledWindowExtraWidth;
+ }
}
void Deck::RequestLayout()