diff options
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/sidebar/Deck.cxx | 17 | ||||
-rw-r--r-- | sfx2/source/sidebar/DeckLayouter.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/sidebar/SidebarController.cxx | 12 |
3 files changed, 22 insertions, 11 deletions
diff --git a/sfx2/source/sidebar/Deck.cxx b/sfx2/source/sidebar/Deck.cxx index 1e56a1516105..48f7291e8af7 100644 --- a/sfx2/source/sidebar/Deck.cxx +++ b/sfx2/source/sidebar/Deck.cxx @@ -168,7 +168,7 @@ void Deck::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*r void Deck::DataChanged (const DataChangedEvent&) { - RequestLayout(); + RequestLayoutInternal(); } bool Deck::EventNotify(NotifyEvent& rEvent) @@ -244,10 +244,10 @@ void Deck::ResetPanels(const SharedPanelContainer& rPanelContainer) } maPanels = rPanelContainer; - RequestLayout(); + RequestLayoutInternal(); } -void Deck::RequestLayout() +void Deck::RequestLayoutInternal() { mnMinimalWidth = 0; mnMinimalHeight = 0; @@ -266,6 +266,17 @@ void Deck::RequestLayout() } } +void Deck::RequestLayout() +{ + RequestLayoutInternal(); + if (comphelper::LibreOfficeKit::isActive() && mnMinimalHeight > 0) + { + const Size aParentSize(GetParent()->GetSizePixel().Width(), mnMinimalHeight); + GetParent()->SetSizePixel(aParentSize); + setPosSizePixel(0, 0, aParentSize.Width(), aParentSize.Height()); + } +} + vcl::Window* Deck::GetPanelParentWindow() { return mpScrollContainer.get(); diff --git a/sfx2/source/sidebar/DeckLayouter.cxx b/sfx2/source/sidebar/DeckLayouter.cxx index a49f026df63a..b969dc91a8bb 100644 --- a/sfx2/source/sidebar/DeckLayouter.cxx +++ b/sfx2/source/sidebar/DeckLayouter.cxx @@ -177,9 +177,6 @@ tools::Rectangle LayoutPanels ( nTotalPreferredHeight += rItem.maLayoutSize.Preferred; } - // rMinimalHeight = nTotalMinimumHeight; - rMinimalHeight = aBox.GetHeight(); - if (nTotalMinimumHeight > nAvailableHeight && ! bShowVerticalScrollBar) { @@ -252,6 +249,7 @@ tools::Rectangle LayoutPanels ( const sal_Int32 nUsedHeight (PlacePanels(rLayoutItems, nWidth, eMode, rScrollContainer)); aBox.AdjustTop(nUsedHeight ); + rMinimalHeight = nUsedHeight; return aBox; } diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx index f099e5f7c5d2..7e1d9ab17bb9 100644 --- a/sfx2/source/sidebar/SidebarController.cxx +++ b/sfx2/source/sidebar/SidebarController.cxx @@ -405,13 +405,15 @@ void SidebarController::NotifyResize() // Place the deck first. if (bIsDeckVisible) { - // No TabBar in LOK. if (comphelper::LibreOfficeKit::isActive()) { - // The minimal deck height is unreliable because of - // the fluid way the panels are stretched. Fix minimum manually. - // const sal_Int32 nMinimalHeight = mpCurrentDeck->GetMinimalHeight(); - mpCurrentDeck->setPosSizePixel(nDeckX, 0, nWidth, 600); + // No TabBar in LOK (use nWidth in full). + // Use the minimum height that is large enough to let the + // layouter expand the panes maximally (that have a minimal + // height before the scrollbar is shown), so we never get + // scrollbars (we want scrolling to be done on the rendered + // image in the client, which is much faster). + mpCurrentDeck->setPosSizePixel(nDeckX, 0, nWidth, 650); } else mpCurrentDeck->setPosSizePixel(nDeckX, 0, nWidth - nTabBarDefaultWidth, nHeight); |