diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2021-09-05 15:01:44 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-09-20 19:20:54 +0200 |
commit | e1972743d692c8d8611912c31aae2cb08ae7636d (patch) | |
tree | 65817acedf6f17ab8af8df33b2f7abe80fe363d7 /editeng/source/editeng/editeng.cxx | |
parent | eb830ad284f245165b6ab5e8647d48834622f2d5 (diff) |
be more disciplined with SetUpdateLayout on editengine
save/restore in more places, and check in more places
before doing layout, so we dont waste time on expensive layout
Change-Id: I311f1f7f97a508da296078e936cb3704938dfdc3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121687
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'editeng/source/editeng/editeng.cxx')
-rw-r--r-- | editeng/source/editeng/editeng.cxx | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index e9f19cbd3194..d22c74ade973 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -1637,7 +1637,8 @@ void EditEngine::RemoveParagraph( sal_Int32 nPara ) pImpEditEngine->ImpRemoveParagraph( nPara ); pImpEditEngine->InvalidateFromParagraph( nPara ); pImpEditEngine->UpdateSelections(); - pImpEditEngine->FormatAndLayout(); + if (pImpEditEngine->IsUpdateLayout()) + pImpEditEngine->FormatAndLayout(); } } @@ -1712,7 +1713,8 @@ void EditEngine::InsertParagraph( sal_Int32 nPara, const EditTextObject& rTxtObj pImpEditEngine->UndoActionEnd(); - pImpEditEngine->FormatAndLayout(); + if (pImpEditEngine->IsUpdateLayout()) + pImpEditEngine->FormatAndLayout(); } void EditEngine::InsertParagraph(sal_Int32 nPara, const OUString& rTxt) @@ -1730,7 +1732,8 @@ void EditEngine::InsertParagraph(sal_Int32 nPara, const OUString& rTxt) pImpEditEngine->RemoveCharAttribs( nPara ); pImpEditEngine->UndoActionEnd(); pImpEditEngine->ImpInsertText( EditSelection( aPaM, aPaM ), rTxt ); - pImpEditEngine->FormatAndLayout(); + if (pImpEditEngine->IsUpdateLayout()) + pImpEditEngine->FormatAndLayout(); } void EditEngine::SetText(sal_Int32 nPara, const OUString& rTxt) @@ -1741,7 +1744,8 @@ void EditEngine::SetText(sal_Int32 nPara, const OUString& rTxt) pImpEditEngine->UndoActionStart( EDITUNDO_INSERT ); pImpEditEngine->ImpInsertText( *pSel, rTxt ); pImpEditEngine->UndoActionEnd(); - pImpEditEngine->FormatAndLayout(); + if (pImpEditEngine->IsUpdateLayout()) + pImpEditEngine->FormatAndLayout(); } } @@ -1773,7 +1777,8 @@ void EditEngine::SetCharAttribs(sal_Int32 nPara, const SfxItemSet& rSet) // This is called by sd::View::OnBeginPasteOrDrop(), updating the cursor position on undo is not // wanted. pImpEditEngine->SetAttribs(aSel, rSet, /*nSpecial=*/SetAttribsMode::NONE, /*bSetSelection=*/false); - pImpEditEngine->FormatAndLayout(); + if (pImpEditEngine->IsUpdateLayout()) + pImpEditEngine->FormatAndLayout(); } void EditEngine::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const @@ -1803,7 +1808,8 @@ void EditEngine::RemoveAttribs( const ESelection& rSelection, bool bRemoveParaAt EditSelection aSel( pImpEditEngine->ConvertSelection( rSelection.nStartPara, rSelection.nStartPos, rSelection.nEndPara, rSelection.nEndPos ) ); pImpEditEngine->RemoveCharAttribs( aSel, eMode, nWhich ); pImpEditEngine->UndoActionEnd(); - pImpEditEngine->FormatAndLayout(); + if (pImpEditEngine->IsUpdateLayout()) + pImpEditEngine->FormatAndLayout(); } vcl::Font EditEngine::GetStandardFont( sal_Int32 nPara ) @@ -2327,7 +2333,7 @@ EFieldInfo EditEngine::GetFieldInfo( sal_Int32 nPara, sal_uInt16 nField ) const bool EditEngine::UpdateFields() { bool bChanges = pImpEditEngine->UpdateFields(); - if ( bChanges ) + if ( bChanges && pImpEditEngine->IsUpdateLayout()) pImpEditEngine->FormatAndLayout(); return bChanges; } |