From 499cd0c7eb48ef457de61f60735f0efe38068a6d Mon Sep 17 00:00:00 2001 From: Ilhan Yesil Date: Fri, 5 Jul 2019 11:50:49 +0200 Subject: tdf#126222 Headers/footers are at correct position after scrolling After scrolling, the positions of headers and footers of the previous pages have to be updated, else these headers and footers could get visible at a wrong position. Change-Id: I25508cc0fc0bb7a6e59aeb996e2e7e0a0e23511f Reviewed-on: https://gerrit.libreoffice.org/75118 Tested-by: Jenkins Reviewed-by: Michael Stahl (cherry picked from commit 80ae85d89866e501496189b2749071869ab6e98c) Reviewed-on: https://gerrit.libreoffice.org/76966 Reviewed-by: Thorsten Behrens Tested-by: Thorsten Behrens --- sw/source/core/layout/paintfrm.cxx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index c1316945ec6f..dcbe5d32822b 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -2994,6 +2994,18 @@ void SwRootFrame::PaintSwFrame(vcl::RenderContext& rRenderContext, SwRect const& const SwPageFrame *pPage = pSh->Imp()->GetFirstVisPage(&rRenderContext); + // #126222. The positions of headers and footers of the previous + // pages have to be updated, else these headers and footers could + // get visible at a wrong position. + const SwPageFrame *pPageDeco = static_cast(pPage->GetPrev()); + while (pPageDeco) + { + pPageDeco->PaintDecorators(); + OSL_ENSURE(!pPageDeco->GetPrev() || pPageDeco->GetPrev()->IsPageFrame(), + "Neighbour of page is not a page."); + pPageDeco = static_cast(pPageDeco->GetPrev()); + } + const bool bBookMode = gProp.pSGlobalShell->GetViewOptions()->IsViewLayoutBookMode(); if ( bBookMode && pPage->GetPrev() && static_cast(pPage->GetPrev())->IsEmptyPage() ) pPage = static_cast(pPage->GetPrev()); -- cgit