sw/source/core/layout/layact.cxx | 41 +++++++++------------------------------ 1 file changed, 10 insertions(+), 31 deletions(-)
New commits: commit eadc7c4f0ba21d35fff09bb53e08e64194a65278 Author: Jan-Marek Glogowski <glo...@fbihome.de> AuthorDate: Fri Apr 16 20:18:22 2021 +0200 Commit: Jan-Marek Glogowski <glo...@fbihome.de> CommitDate: Tue Apr 27 03:02:29 2021 +0200 SW merge layout shortcut into the full layout code The shortcut codepath just skips a large part of the full layout code. To make this more obvious, this refactors the main layout loop by merging both paths, really skipping the code in the shortcut case and getting rid of all the duplicate code. Change-Id: I015202e86e75576f03901746e1a082e9f6811549 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114118 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de> diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx index a54c20d6e7cf..422b8aee0c46 100644 --- a/sw/source/core/layout/layact.cxx +++ b/sw/source/core/layout/layact.cxx @@ -484,37 +484,13 @@ void SwLayAction::InternalAction(OutputDevice* pRenderContext) m_pOptTab = nullptr; // No Shortcut for Idle or CalcLayout - if ( !IsIdle() && !IsComplete() && IsShortCut( pPage ) ) - { - m_pRoot->DeleteEmptySct(); - if (lcl_isLayoutLooping()) return; - if ( !IsInterrupt() && - (m_pRoot->IsSuperfluous() || m_pRoot->IsAssertFlyPages()) ) - { - if ( m_pRoot->IsAssertFlyPages() ) - m_pRoot->AssertFlyPages(); - if ( m_pRoot->IsSuperfluous() ) - { - bool bOld = IsAgain(); - m_pRoot->RemoveSuperfluous(); - m_bAgain = bOld; - } - if (lcl_isLayoutLooping()) return; - pPage = static_cast<SwPageFrame*>(m_pRoot->Lower()); - while ( pPage && !pPage->IsInvalid() && !pPage->IsInvalidFly() ) - pPage = static_cast<SwPageFrame*>(pPage->GetNext()); - while ( pPage && pPage->GetNext() && - pPage->GetPhyPageNum() < nFirstPageNum ) - pPage = static_cast<SwPageFrame*>(pPage->GetNext()); - continue; - } - break; - } - else - { - m_pRoot->DeleteEmptySct(); - if (lcl_isLayoutLooping()) return; + const bool bTakeShortcut = !IsIdle() && !IsComplete() && IsShortCut(pPage); + + m_pRoot->DeleteEmptySct(); + if (lcl_isLayoutLooping()) return; + if (!bTakeShortcut) + { while ( !IsInterrupt() && !IsNextCycle() && ((pPage->GetSortedObjs() && pPage->IsInvalidFly()) || pPage->IsInvalid()) ) { @@ -630,7 +606,8 @@ void SwLayAction::InternalAction(OutputDevice* pRenderContext) } CheckIdleEnd(); } - if ( !pPage && !IsInterrupt() && + + if ((bTakeShortcut || !pPage) && !IsInterrupt() && (m_pRoot->IsSuperfluous() || m_pRoot->IsAssertFlyPages()) ) { if ( m_pRoot->IsAssertFlyPages() ) @@ -649,6 +626,8 @@ void SwLayAction::InternalAction(OutputDevice* pRenderContext) pPage->GetPhyPageNum() < nFirstPageNum ) pPage = static_cast<SwPageFrame*>(pPage->GetNext()); } + else if (bTakeShortcut) + break; } if ( IsInterrupt() && pPage ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits