diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-12-16 15:41:38 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-01-11 14:23:20 +0000 |
commit | d3584878aee1bee36e9cc18e58a75dbc95b3e283 (patch) | |
tree | 001cb65688ed9fb35aa16655bf1c16d34c5be317 /sw/source | |
parent | 1673606de9a520e615e1a32da94f28d55ebaea20 (diff) |
tdf#96536 sw Hide Whitespace: shrink oversized page frames on para delete
The body frame did get a request to shrink, but because it had fixed
size, nothing happened. Trigger a recalc that does the right thing wrt.
hidden whitespace.
(cherry picked from commits 72f0067258fd7738217abd43452abe282e05c11b and
af47b54d49355a003deda722b5d0112a7b746485)
Conflicts:
sw/qa/extras/uiwriter/uiwriter.cxx
Change-Id: I446978da8b33372c2ab30200b45b1bcec1dea7a0
Reviewed-on: https://gerrit.libreoffice.org/21084
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'sw/source')
-rw-r--r-- | sw/source/core/layout/calcmove.cxx | 3 | ||||
-rw-r--r-- | sw/source/core/layout/wsfrm.cxx | 15 |
2 files changed, 17 insertions, 1 deletions
diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx index 922041702f1e..21d479a79131 100644 --- a/sw/source/core/layout/calcmove.cxx +++ b/sw/source/core/layout/calcmove.cxx @@ -1522,7 +1522,8 @@ void SwContentFrame::MakeAll(vcl::RenderContext* /*pRenderContext*/) const long nPrtBottom = (GetUpper()->*fnRect->fnGetPrtBottom)(); long nBottomDist = (Frame().*fnRect->fnBottomDist)(nPrtBottom); - if (getRootFrame()->GetCurrShell()->GetViewOptions()->IsWhitespaceHidden()) + SwViewShell* pShell = getRootFrame()->GetCurrShell(); + if (pShell && pShell->GetViewOptions()->IsWhitespaceHidden()) { // When whitespace is hidden, the page frame has two heights: the // nominal (defined by the frame format), and the actual (which is diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx index edd660df2471..0f60476f84ce 100644 --- a/sw/source/core/layout/wsfrm.cxx +++ b/sw/source/core/layout/wsfrm.cxx @@ -2358,6 +2358,21 @@ SwTwips SwLayoutFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) const SwViewShell *pSh = getRootFrame()->GetCurrShell(); const bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse by Body. + + if (pSh && pSh->GetViewOptions()->IsWhitespaceHidden()) + { + if (IsBodyFrame()) + { + // Whitespace is hidden and this body frame will not shrink, as it + // has a fix size. + // Invalidate the page frame size, so in case the reason for the + // shrink was that there is more whitespace on this page, the size + // without whitespace will be recalculated correctly. + SwPageFrame* pPageFrame = FindPageFrame(); + pPageFrame->InvalidateSize(); + } + } + if( !(GetType() & nTmpType) && HasFixSize() ) return 0; |