sw/inc/anchoreddrawobject.hxx | 4 sw/inc/anchoredobject.hxx | 5 sw/qa/core/text/text.cxx | 2 sw/qa/extras/layout/layout3.cxx | 4 sw/qa/extras/uiwriter/uiwriter5.cxx | 4 sw/source/core/doc/doclay.cxx | 6 - sw/source/core/draw/dcontact.cxx | 8 - sw/source/core/draw/dview.cxx | 4 sw/source/core/fields/postithelper.cxx | 4 sw/source/core/frmedt/fefly1.cxx | 22 +-- sw/source/core/frmedt/feshview.cxx | 12 +- sw/source/core/frmedt/fews.cxx | 4 sw/source/core/inc/flyfrm.hxx | 4 sw/source/core/layout/anchoreddrawobject.cxx | 58 +++++----- sw/source/core/layout/anchoredobject.cxx | 46 +++---- sw/source/core/layout/atrfrm.cxx | 2 sw/source/core/layout/calcmove.cxx | 8 - sw/source/core/layout/flowfrm.cxx | 16 +- sw/source/core/layout/fly.cxx | 34 ++--- sw/source/core/layout/flycnt.cxx | 10 - sw/source/core/layout/flyincnt.cxx | 2 sw/source/core/layout/flylay.cxx | 10 - sw/source/core/layout/frmtool.cxx | 6 - sw/source/core/layout/layact.cxx | 2 sw/source/core/layout/objectformattertxtfrm.cxx | 17 +- sw/source/core/layout/pagechg.cxx | 26 ++-- sw/source/core/layout/sortedobjs.cxx | 22 +-- sw/source/core/layout/tabfrm.cxx | 32 ++--- sw/source/core/layout/trvlfrm.cxx | 7 - sw/source/core/layout/wsfrm.cxx | 6 - sw/source/core/objectpositioning/anchoredobjectposition.cxx | 2 sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx | 4 sw/source/core/text/EnhancedPDFExportHelper.cxx | 2 sw/source/core/text/frmform.cxx | 2 sw/source/core/text/itratr.cxx | 2 sw/source/core/text/itrform2.cxx | 2 sw/source/core/text/porfly.cxx | 2 sw/source/core/text/porlay.cxx | 2 sw/source/core/text/txtfly.cxx | 39 +++--- sw/source/core/text/txtfrm.cxx | 2 sw/source/core/txtnode/ndtxt.cxx | 6 - sw/source/core/unocore/unoobj2.cxx | 12 +- wizards/source/scriptforge/SF_Array.xba | 2 43 files changed, 233 insertions(+), 233 deletions(-)
New commits: commit 67a2cba41b6caeabac031f1ae35b6c465037b0fd Author: Jean-Pierre Ledure <[email protected]> AuthorDate: Fri Jan 12 22:30:06 2024 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Jan 16 09:40:22 2024 +0100 ScriptForge (SF_Array) fix tdf#158976 Shuffle() The algorithm used to shuffle a 1D array prevented any item of the array to remain in the same entry after the shuffle. This has been fixed. The potential targeted entries to receive an item include the actual entry. This change might impact existing scripts that have Randomize()d their sorts to always get the same shuffle results. This should impact test scripts only. SF_Array.Shuffle() is available in Basic only. No impact on help pages. Change-Id: If56d901f4af68f8889a7352c306bae6e3443ae97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161987 Reviewed-by: Jean-Pierre Ledure <[email protected]> Tested-by: Jenkins (cherry picked from commit ca9168b8ad842c86b2168e12bb98087b9f8139bd) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162009 Reviewed-by: Xisco Fauli <[email protected]> (cherry picked from commit d4898d7bbe8496504e36f7d91f55f62043f6a302) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162105 diff --git a/wizards/source/scriptforge/SF_Array.xba b/wizards/source/scriptforge/SF_Array.xba index 49bdab14770a..c12446133e72 100644 --- a/wizards/source/scriptforge/SF_Array.xba +++ b/wizards/source/scriptforge/SF_Array.xba @@ -1767,7 +1767,7 @@ Try: Next i ' Now ... shuffle ! Do While lCurrentIndex > lMin - lRandomIndex = Int(Rnd * (lCurrentIndex - lMin)) + lMin + lRandomIndex = Int(Rnd * (lCurrentIndex - lMin + 1)) + lMin vSwapValue = vShuffle(lCurrentIndex) vShuffle(lCurrentIndex) = vShuffle(lRandomIndex) vShuffle(lRandomIndex) = vSwapValue commit e5899a8aa8b27658035db757fc7bd58bd8f016e6 Author: Mike Kaganski <[email protected]> AuthorDate: Sun Jan 14 17:53:03 2024 +0600 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Jan 16 09:40:11 2024 +0100 Let SwAnchoredObject::GetFrameFormat return pointer, and drop HasFrameFormat In commit 19062c98da5b2e9edc7a99068fa06a83c7578826, it was important to check if objects have frame format before using GetFrameFormat. Thic change makes it simpler amd more obvious. Also, it allows to avoid two calls to GetUserCall, by obtaining the pointer once and checking it. Change-Id: I980fcba9e369e107f3d062e8cab0a34e02384290 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162044 Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162079 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162088 diff --git a/sw/inc/anchoreddrawobject.hxx b/sw/inc/anchoreddrawobject.hxx index eb457701a98d..da3ea0509ca8 100644 --- a/sw/inc/anchoreddrawobject.hxx +++ b/sw/inc/anchoreddrawobject.hxx @@ -115,8 +115,8 @@ class SwAnchoredDrawObject final : public SwAnchoredObject } // accessors to the format - virtual SwFrameFormat& GetFrameFormat() override; - virtual const SwFrameFormat& GetFrameFormat() const override; + virtual SwFrameFormat* GetFrameFormat() override; + virtual const SwFrameFormat* GetFrameFormat() const override; // accessors to the object area and its position virtual SwRect GetObjRect() const override; diff --git a/sw/inc/anchoredobject.hxx b/sw/inc/anchoredobject.hxx index 9af198425714..48b192f69ba9 100644 --- a/sw/inc/anchoredobject.hxx +++ b/sw/inc/anchoredobject.hxx @@ -318,9 +318,8 @@ class SW_DLLPUBLIC SwAnchoredObject void SetCurrRelPos( Point _aRelPos ); // accessors to the format - bool HasFrameFormat() const; - virtual SwFrameFormat& GetFrameFormat() = 0; - virtual const SwFrameFormat& GetFrameFormat() const = 0; + virtual SwFrameFormat* GetFrameFormat() = 0; + virtual const SwFrameFormat* GetFrameFormat() const = 0; // accessors to the object area and its position virtual SwRect GetObjRect() const = 0; diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx index 0c90549e844e..73d212935f01 100644 --- a/sw/qa/core/text/text.cxx +++ b/sw/qa/core/text/text.cxx @@ -763,7 +763,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testAsCharImageDocModelFromViewPoint) const SwSortedObjs& rSortedObjs = *pTextFrame->GetDrawObjs(); const SwAnchoredObject* pAnchoredObject = rSortedObjs[0]; // The content points to the start node, the next node is the graphic node. - SwNodeIndex aGraphicNode = *pAnchoredObject->GetFrameFormat().GetContent().GetContentIdx(); + SwNodeIndex aGraphicNode = *pAnchoredObject->GetFrameFormat()->GetContent().GetContentIdx(); ++aGraphicNode; tools::Rectangle aFlyFrame = pAnchoredObject->GetDrawObj()->GetLastBoundRect(); Point aDocPos = aFlyFrame.Center(); diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx index 9815c72adbd3..cda801c4334c 100644 --- a/sw/qa/extras/layout/layout3.cxx +++ b/sw/qa/extras/layout/layout3.cxx @@ -1583,12 +1583,12 @@ static SwRect lcl_getVisibleFlyObjRect(SwWrtShell* pWrtShell) SwSortedObjs* pDrawObjs = pPage->GetDrawObjs(); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pDrawObjs->size()); SwAnchoredObject* pDrawObj = (*pDrawObjs)[0]; - CPPUNIT_ASSERT_EQUAL(OUString("Rahmen8"), pDrawObj->GetFrameFormat().GetName()); + CPPUNIT_ASSERT_EQUAL(OUString("Rahmen8"), pDrawObj->GetFrameFormat()->GetName()); pPage = static_cast<SwPageFrame*>(pPage->GetNext()); pDrawObjs = pPage->GetDrawObjs(); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pDrawObjs->size()); pDrawObj = (*pDrawObjs)[0]; - CPPUNIT_ASSERT_EQUAL(OUString("Rahmen123"), pDrawObj->GetFrameFormat().GetName()); + CPPUNIT_ASSERT_EQUAL(OUString("Rahmen123"), pDrawObj->GetFrameFormat()->GetName()); SwRect aFlyRect = pDrawObj->GetObjRect(); CPPUNIT_ASSERT(pPage->getFrameArea().Contains(aFlyRect)); return aFlyRect; diff --git a/sw/qa/extras/uiwriter/uiwriter5.cxx b/sw/qa/extras/uiwriter/uiwriter5.cxx index 285a3adb7c61..50e19edd273d 100644 --- a/sw/qa/extras/uiwriter/uiwriter5.cxx +++ b/sw/qa/extras/uiwriter/uiwriter5.cxx @@ -1290,8 +1290,8 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest5, testImageCommentAtChar) // Get the image anchor doc model position. SwFlyFrame* pFly = pWrtShell->GetCurrFlyFrame(false); CPPUNIT_ASSERT(pFly); - SwFrameFormat& rFlyFormat = pFly->GetFrameFormat(); - const SwPosition* pImageAnchor = rFlyFormat.GetAnchor().GetContentAnchor(); + SwFrameFormat* pFlyFormat = pFly->GetFrameFormat(); + const SwPosition* pImageAnchor = pFlyFormat->GetAnchor().GetContentAnchor(); CPPUNIT_ASSERT(pImageAnchor); // Get the annotation mark doc model start. diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx index e71c7892398a..008b3e1053f7 100644 --- a/sw/source/core/doc/doclay.cxx +++ b/sw/source/core/doc/doclay.cxx @@ -557,10 +557,8 @@ SwPosFlyFrames SwDoc::GetAllFlyFormats( const SwPaM* pCmpRange, bool bDrawAlso, for(SwAnchoredObject* pAnchoredObj : rObjs) { SwFrameFormat *pFly; - if ( pAnchoredObj->DynCastFlyFrame() != nullptr ) - pFly = &(pAnchoredObj->GetFrameFormat()); - else if ( bDrawAlso ) - pFly = &(pAnchoredObj->GetFrameFormat()); + if (bDrawAlso || pAnchoredObj->DynCastFlyFrame()) + pFly = pAnchoredObj->GetFrameFormat(); else continue; diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index 456241b660c0..ded538c55cdc 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -494,7 +494,7 @@ sal_uInt32 SwFlyDrawContact::GetOrdNumForNewRef(const SwFlyFrame* pFly, { for (SwAnchoredObject const*const pAnchoredObj : *pObjs) { - if (&pAnchoredObj->GetFrameFormat() == pDrawFormat) + if (pAnchoredObj->GetFrameFormat() == pDrawFormat) { return pAnchoredObj->GetDrawObj()->GetOrdNum() + 1; } @@ -1236,7 +1236,7 @@ void SwDrawContact::Changed_( const SdrObject& rObj, // #i31698# - determine layout direction // via draw frame format. SwFrameFormat::tLayoutDir eLayoutDir = - pAnchoredDrawObj->GetFrameFormat().GetLayoutDir(); + pAnchoredDrawObj->GetFrameFormat()->GetLayoutDir(); // use geometry of drawing object tools::Rectangle aObjRect( rObj.GetSnapRect() ); // If drawing object is a member of a group, the adjustment @@ -1969,7 +1969,7 @@ void SwDrawContact::ConnectToLayout( const SwFormatAnchor* pAnch ) { for (const SwAnchoredObject* pAnchoredObj : *pObjs) { - if (&pAnchoredObj->GetFrameFormat() == pFlyFormat) + if (pAnchoredObj->GetFrameFormat() == pFlyFormat) { SdrPage* pDrawPage = pAnchoredObj->GetDrawObj()->getSdrPageFromSdrObject(); if (pDrawPage) @@ -2361,7 +2361,7 @@ void SwDrawVirtObj::AddToDrawingPage(SwFrame const& rAnchorFrame) { for (SwAnchoredObject const*const pAnchoredObj : *pObjs) { - if (&pAnchoredObj->GetFrameFormat() == pFlyFormat) + if (pAnchoredObj->GetFrameFormat() == pFlyFormat) { assert(dynamic_cast<SwFlyFrame const*>(pAnchoredObj)); diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx index 430e18ecfeaf..6c90846eae11 100644 --- a/sw/source/core/draw/dview.cxx +++ b/sw/source/core/draw/dview.cxx @@ -550,7 +550,7 @@ void SwDrawView::ObjOrderChanged( SdrObject* pObj, size_t nOldPos, { size_t nTmpNewPos( nNewPos ); const SwFrameFormat* pParentFrameFormat = - pParentAnchoredObj ? &(pParentAnchoredObj->GetFrameFormat()) : nullptr; + pParentAnchoredObj ? pParentAnchoredObj->GetFrameFormat() : nullptr; const SdrObject* pTmpObj = pDrawPage->GetObj( nNewPos + 1 ); while ( pTmpObj ) { @@ -562,7 +562,7 @@ void SwDrawView::ObjOrderChanged( SdrObject* pObj, size_t nOldPos, const SwFlyFrame* pTmpParentObj = pTmpAnchorFrame ? pTmpAnchorFrame->FindFlyFrame() : nullptr; if ( pTmpParentObj && - &(pTmpParentObj->GetFrameFormat()) != pParentFrameFormat ) + pTmpParentObj->GetFrameFormat() != pParentFrameFormat ) { if ( bMovedForward ) { diff --git a/sw/source/core/fields/postithelper.cxx b/sw/source/core/fields/postithelper.cxx index a3f27be6f533..06fb3db7ef06 100644 --- a/sw/source/core/fields/postithelper.cxx +++ b/sw/source/core/fields/postithelper.cxx @@ -97,8 +97,8 @@ SwAnchoredObject* GetAnchoredObjectOfAnnotationMark(const sw::mark::IMark& rAnno for (SwAnchoredObject* pObject : *pAnchored) { - SwFrameFormat& rFrameFormat = pObject->GetFrameFormat(); - const SwPosition* pFrameAnchor = rFrameFormat.GetAnchor().GetContentAnchor(); + SwFrameFormat* pFrameFormat = pObject->GetFrameFormat(); + const SwPosition* pFrameAnchor = pFrameFormat->GetAnchor().GetContentAnchor(); if (!pFrameAnchor) { continue; diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx index 2fb646150d0e..9a3423ce9bc5 100644 --- a/sw/source/core/frmedt/fefly1.cxx +++ b/sw/source/core/frmedt/fefly1.cxx @@ -438,8 +438,8 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) // #i28701# SwAnchoredObject* pAnchoredObj = ::GetUserCall( pObj )->GetAnchoredObj( pObj ); - SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); - const RndStdIds nAnchorId = rFormat.GetAnchor().GetAnchorId(); + SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); + const RndStdIds nAnchorId = pFormat->GetAnchor().GetAnchorId(); if ( RndStdIds::FLY_AS_CHAR == nAnchorId ) return aRet; @@ -447,9 +447,9 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) bool bFlyFrame = dynamic_cast<SwVirtFlyDrawObj *>(pObj) != nullptr; bool bTextBox = false; - if (rFormat.Which() == RES_DRAWFRMFMT) + if (pFormat->Which() == RES_DRAWFRMFMT) { - bTextBox = SwTextBoxHelper::isTextBox(&rFormat, RES_DRAWFRMFMT, pObj); + bTextBox = SwTextBoxHelper::isTextBox(pFormat, RES_DRAWFRMFMT, pObj); } SwFlyFrame* pFly = nullptr; @@ -476,7 +476,7 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) { auto pFlyFormat = dynamic_cast<const SwFlyFrameFormat*>(SwTextBoxHelper::getOtherTextBoxFormat( - &rFormat, RES_DRAWFRMFMT, pObj)); + pFormat, RES_DRAWFRMFMT, pObj)); if (pFlyFormat) { pFly = pFlyFormat->GetFrame(); @@ -550,7 +550,7 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) if ( bMoveIt || (nAnchorId == RndStdIds::FLY_AT_CHAR) ) { - SwFormatAnchor aAnch( rFormat.GetAnchor() ); + SwFormatAnchor aAnch( pFormat->GetAnchor() ); switch ( nAnchorId ) { case RndStdIds::FLY_AT_PARA: @@ -607,14 +607,14 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) // anchor attribute is change and re-create them afterwards. { std::unique_ptr<SwHandleAnchorNodeChg> pHandleAnchorNodeChg; - SwFlyFrameFormat* pFlyFrameFormat( dynamic_cast<SwFlyFrameFormat*>(&rFormat) ); + SwFlyFrameFormat* pFlyFrameFormat( dynamic_cast<SwFlyFrameFormat*>(pFormat) ); if ( pFlyFrameFormat ) { pHandleAnchorNodeChg.reset( new SwHandleAnchorNodeChg( *pFlyFrameFormat, aAnch )); } - rFormat.GetDoc()->SetAttr( aAnch, rFormat ); - if (SwTextBoxHelper::getOtherTextBoxFormat(&rFormat, RES_DRAWFRMFMT, + pFormat->GetDoc()->SetAttr( aAnch, *pFormat ); + if (SwTextBoxHelper::getOtherTextBoxFormat(pFormat, RES_DRAWFRMFMT, pObj)) { if (pObj->getChildrenOfSdrObject()) @@ -622,11 +622,11 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) for (size_t i = 0; i < pObj->getChildrenOfSdrObject()->GetObjCount(); ++i) SwTextBoxHelper::changeAnchor( - &rFormat, pObj->getChildrenOfSdrObject()->GetObj(i)); + pFormat, pObj->getChildrenOfSdrObject()->GetObj(i)); } else SwTextBoxHelper::syncFlyFrameAttr( - rFormat, rFormat.GetAttrSet(), pObj); + *pFormat, pFormat->GetAttrSet(), pObj); } } // #i28701# - no call of method diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx index 2bfd8f69146d..7154094dd59a 100644 --- a/sw/source/core/frmedt/feshview.cxx +++ b/sw/source/core/frmedt/feshview.cxx @@ -423,8 +423,8 @@ bool SwFEShell::MoveAnchor( SwMove nDir ) SwFrame* pNew = pOld; // #i28701# SwAnchoredObject* pAnchoredObj = ::GetUserCall( pObj )->GetAnchoredObj( pObj ); - SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); - SwFormatAnchor aAnch( rFormat.GetAnchor() ); + SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); + SwFormatAnchor aAnch( pFormat->GetAnchor() ); RndStdIds nAnchorId = aAnch.GetAnchorId(); if ( RndStdIds::FLY_AS_CHAR == nAnchorId ) return false; @@ -613,13 +613,13 @@ bool SwFEShell::MoveAnchor( SwMove nDir ) // anchor attribute is change and re-create them afterwards. { std::unique_ptr<SwHandleAnchorNodeChg> pHandleAnchorNodeChg; - SwFlyFrameFormat* pFlyFrameFormat( dynamic_cast<SwFlyFrameFormat*>(&rFormat) ); + SwFlyFrameFormat* pFlyFrameFormat( dynamic_cast<SwFlyFrameFormat*>(pFormat) ); if ( pFlyFrameFormat ) { pHandleAnchorNodeChg.reset( new SwHandleAnchorNodeChg( *pFlyFrameFormat, aAnch )); } - rFormat.GetDoc()->SetAttr( aAnch, rFormat ); + pFormat->GetDoc()->SetAttr( aAnch, *pFormat ); } // #i28701# - no call of method // <CheckCharRectAndTopOfLine()> for to-character anchored @@ -1476,8 +1476,8 @@ bool SwFEShell::ShouldObjectBeSelected(const Point& rPt) if ( pObj->GetLayer() == rIDDMA.GetHellId() ) { const SwAnchoredObject* pAnchoredObj = ::GetUserCall( pObj )->GetAnchoredObj( pObj ); - const SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); - const SwFormatSurround& rSurround = rFormat.GetSurround(); + const SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); + const SwFormatSurround& rSurround = pFormat->GetSurround(); if ( rSurround.GetSurround() == css::text::WrapTextMode_THROUGH ) { bObjInBackground = true; diff --git a/sw/source/core/frmedt/fews.cxx b/sw/source/core/frmedt/fews.cxx index cb26f3357225..f5a743480316 100644 --- a/sw/source/core/frmedt/fews.cxx +++ b/sw/source/core/frmedt/fews.cxx @@ -464,12 +464,12 @@ void SwFEShell::InsertLabel( const SwLabelType eType, const OUString &rText, con // This table is in a split fly, but we will insert a label, which means this is not // a floating table anymore, disable the "can split" bit, it'll be hidden on the UI // anyway. - SwFrameFormat& rFlyFormat = pFly->GetFrameFormat(); + SwFrameFormat* pFormat = pFly->GetFrameFormat(); SfxItemSetFixed<RES_FLY_SPLIT, RES_FLY_SPLIT> aSet(GetDoc()->GetAttrPool()); SwFormatFlySplit aSplit(false); aSet.Put(aSplit); // SwUndoFormatAttr is created for us. - GetDoc()->SetFlyFrameAttr(rFlyFormat, aSet); + GetDoc()->SetFlyFrameAttr(*pFormat, aSet); } } break; diff --git a/sw/source/core/inc/flyfrm.hxx b/sw/source/core/inc/flyfrm.hxx index 4b47f0ad2b4e..0882f926c50e 100644 --- a/sw/source/core/inc/flyfrm.hxx +++ b/sw/source/core/inc/flyfrm.hxx @@ -269,8 +269,8 @@ public: virtual void MakeObjPos() override; virtual void InvalidateObjPos() override; - virtual SwFrameFormat& GetFrameFormat() override; - virtual const SwFrameFormat& GetFrameFormat() const override; + virtual SwFrameFormat* GetFrameFormat() override; + virtual const SwFrameFormat* GetFrameFormat() const override; virtual SwRect GetObjRect() const override; diff --git a/sw/source/core/layout/anchoreddrawobject.cxx b/sw/source/core/layout/anchoreddrawobject.cxx index 6dc6cac5d1b2..77a19aa8295a 100644 --- a/sw/source/core/layout/anchoreddrawobject.cxx +++ b/sw/source/core/layout/anchoreddrawobject.cxx @@ -214,13 +214,13 @@ SwAnchoredDrawObject::~SwAnchoredDrawObject() // --> #i62875# void SwAnchoredDrawObject::UpdateLayoutDir() { - SwFrameFormat::tLayoutDir nOldLayoutDir( GetFrameFormat().GetLayoutDir() ); + SwFrameFormat::tLayoutDir nOldLayoutDir( GetFrameFormat()->GetLayoutDir() ); SwAnchoredObject::UpdateLayoutDir(); if ( !NotYetPositioned() && - GetFrameFormat().GetLayoutDir() != nOldLayoutDir && - GetFrameFormat().GetDoc()->GetDocumentSettingManager().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && + GetFrameFormat()->GetLayoutDir() != nOldLayoutDir && + GetFrameFormat()->GetDoc()->GetDocumentSettingManager().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && !IsOutsidePage() ) { mbCaptureAfterLayoutDirChange = true; @@ -284,7 +284,7 @@ void SwAnchoredDrawObject::MakeObjPos() // #i44334#, #i44681# - check, if positioning // attributes already have been set. if ( dynamic_cast< const SwDrawVirtObj* >(GetDrawObj()) == nullptr && - !static_cast<SwDrawFrameFormat&>(GetFrameFormat()).IsPosAttrSet() ) + !static_cast<SwDrawFrameFormat*>(GetFrameFormat())->IsPosAttrSet() ) { SetPositioningAttr(); } @@ -395,7 +395,7 @@ void SwAnchoredDrawObject::MakeObjPosAnchoredAtPara() // Format of anchor is needed for (vertical) fly offsets, otherwise the // lack of fly portions will result in an incorrect 0 offset. - bool bAddVerticalFlyOffsets = GetFrameFormat().getIDocumentSettingAccess().get( + bool bAddVerticalFlyOffsets = GetFrameFormat()->getIDocumentSettingAccess().get( DocumentSettingId::ADD_VERTICAL_FLY_OFFSETS); bool bFormatAnchorOnce = !bJoinLocked && bAddVerticalFlyOffsets; @@ -518,11 +518,12 @@ void SwAnchoredDrawObject::SetDrawObjAnchor() // correct object position, caused by setting new anchor position DrawObj()->Move( aMove ); // Sync textbox if it wasn't done at move - if ( SwTextBoxHelper::isTextBox(&GetFrameFormat(), RES_DRAWFRMFMT) && GetFrameFormat().GetDoc() && - GetFrameFormat().GetDoc()->getIDocumentLayoutAccess().GetCurrentViewShell() && - GetFrameFormat().GetDoc()->getIDocumentLayoutAccess().GetCurrentViewShell()->IsInConstructor()) + SwFrameFormat* pObjFormat = GetFrameFormat(); + if ( SwTextBoxHelper::isTextBox(pObjFormat, RES_DRAWFRMFMT) && pObjFormat->GetDoc() && + pObjFormat->GetDoc()->getIDocumentLayoutAccess().GetCurrentViewShell() && + pObjFormat->GetDoc()->getIDocumentLayoutAccess().GetCurrentViewShell()->IsInConstructor()) { - SwTextBoxHelper::changeAnchor(&GetFrameFormat(), GetFrameFormat().FindRealSdrObject()); + SwTextBoxHelper::changeAnchor(pObjFormat, pObjFormat->FindRealSdrObject()); } // --> #i70122# - missing invalidation InvalidateObjRectWithSpaces(); @@ -543,7 +544,7 @@ void SwAnchoredDrawObject::InvalidatePage_( SwPageFrame* _pPageFrame ) // --> #i35007# - correct invalidation for as-character // anchored objects. - if ( GetFrameFormat().GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR ) + if ( GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR ) { _pPageFrame->InvalidateFlyInCnt(); } @@ -582,13 +583,14 @@ void SwAnchoredDrawObject::InvalidateObjPos() // anchored object, because its positioned by the format of its anchor frame. // --> #i44559# - assure, that text hint is already // existing in the text frame + const SwFrameFormat* pObjFormat = GetFrameFormat(); if ( GetAnchorFrame()->DynCastTextFrame() != nullptr && - (GetFrameFormat().GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR) ) + (pObjFormat->GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR) ) { SwTextFrame* pAnchorTextFrame( static_cast<SwTextFrame*>(AnchorFrame()) ); - if (pAnchorTextFrame->CalcFlyPos(&GetFrameFormat()) != TextFrameIndex(COMPLETE_STRING)) + if (pAnchorTextFrame->CalcFlyPos(pObjFormat) != TextFrameIndex(COMPLETE_STRING)) { - AnchorFrame()->Prepare( PrepareHint::FlyFrameAttributesChanged, &GetFrameFormat() ); + AnchorFrame()->Prepare(PrepareHint::FlyFrameAttributesChanged, pObjFormat); } } @@ -615,15 +617,15 @@ void SwAnchoredDrawObject::InvalidateObjPos() } } -SwFrameFormat& SwAnchoredDrawObject::GetFrameFormat() +SwFrameFormat* SwAnchoredDrawObject::GetFrameFormat() { assert(static_cast<SwDrawContact*>(GetUserCall(GetDrawObj()))->GetFormat()); - return *(static_cast<SwDrawContact*>(GetUserCall(GetDrawObj()))->GetFormat()); + return static_cast<SwDrawContact*>(GetUserCall(GetDrawObj()))->GetFormat(); } -const SwFrameFormat& SwAnchoredDrawObject::GetFrameFormat() const +const SwFrameFormat* SwAnchoredDrawObject::GetFrameFormat() const { assert(static_cast<SwDrawContact*>(GetUserCall(GetDrawObj()))->GetFormat()); - return *(static_cast<SwDrawContact*>(GetUserCall(GetDrawObj()))->GetFormat()); + return static_cast<SwDrawContact*>(GetUserCall(GetDrawObj()))->GetFormat(); } SwRect SwAnchoredDrawObject::GetObjRect() const @@ -807,10 +809,11 @@ void SwAnchoredDrawObject::AdjustPositioningAttr( const SwFrame* _pNewAnchorFram SwFormatHoriOrient hori(nHoriRelPos, text::HoriOrientation::NONE, text::RelOrientation::FRAME); SwFormatVertOrient vert(nVertRelPos, text::VertOrientation::NONE, text::RelOrientation::FRAME); - SfxItemSetFixed<RES_VERT_ORIENT, RES_HORI_ORIENT> items(GetFrameFormat().GetDoc()->GetAttrPool()); + SwFrameFormat* pObjFormat = GetFrameFormat(); + SfxItemSetFixed<RES_VERT_ORIENT, RES_HORI_ORIENT> items(pObjFormat->GetDoc()->GetAttrPool()); items.Put(hori); items.Put(vert); - GetFrameFormat().GetDoc()->SetAttr(items, GetFrameFormat()); + pObjFormat->GetDoc()->SetAttr(items, *pObjFormat); } // --> #i34748# - change return type. @@ -845,6 +848,7 @@ void SwAnchoredDrawObject::SetPositioningAttr() SwDrawContact* pDrawContact = static_cast<SwDrawContact*>(GetUserCall( GetDrawObj() )); + SwFrameFormat* pObjFormat = GetFrameFormat(); if ( !pDrawContact->ObjAnchoredAsChar() ) { SwRect aObjRect( GetObjRect() ); @@ -853,10 +857,10 @@ void SwAnchoredDrawObject::SetPositioningAttr() SwTwips nVertPos = aObjRect.Top(); // #i44334#, #i44681# // perform conversion only if position is in horizontal-left-to-right-layout. - if ( GetFrameFormat().GetPositionLayoutDir() == + if (pObjFormat->GetPositionLayoutDir() == text::PositionLayoutDir::PositionInHoriL2R ) { - SwFrameFormat::tLayoutDir eLayoutDir = GetFrameFormat().GetLayoutDir(); + SwFrameFormat::tLayoutDir eLayoutDir = pObjFormat->GetLayoutDir(); switch ( eLayoutDir ) { case SwFrameFormat::HORI_L2R: @@ -885,28 +889,28 @@ void SwAnchoredDrawObject::SetPositioningAttr() // --> #i71182# // only change position - do not lose other attributes - SwFormatHoriOrient aHori( GetFrameFormat().GetHoriOrient() ); + SwFormatHoriOrient aHori(pObjFormat->GetHoriOrient()); if (nHoriPos != aHori.GetPos()) { aHori.SetPos( nHoriPos ); InvalidateObjRectWithSpaces(); - GetFrameFormat().SetFormatAttr( aHori ); + pObjFormat->SetFormatAttr(aHori); } - SwFormatVertOrient aVert( GetFrameFormat().GetVertOrient() ); + SwFormatVertOrient aVert(pObjFormat->GetVertOrient()); if (nVertPos != aVert.GetPos()) { aVert.SetPos( nVertPos ); InvalidateObjRectWithSpaces(); - GetFrameFormat().SetFormatAttr( aVert ); + pObjFormat->SetFormatAttr(aVert); } // --> #i36010# - set layout direction of the position - GetFrameFormat().SetPositionLayoutDir( + pObjFormat->SetPositionLayoutDir( text::PositionLayoutDir::PositionInLayoutDirOfAnchor ); } // --> #i65798# - also for as-character anchored objects // --> #i45952# - indicate that position // attributes are set now. - static_cast<SwDrawFrameFormat&>(GetFrameFormat()).PosAttrSet(); + static_cast<SwDrawFrameFormat*>(pObjFormat)->PosAttrSet(); } void SwAnchoredDrawObject::NotifyBackground( SwPageFrame* _pPageFrame, diff --git a/sw/source/core/layout/anchoredobject.cxx b/sw/source/core/layout/anchoredobject.cxx index d541ae34ce83..83fcdb75ff92 100644 --- a/sw/source/core/layout/anchoredobject.cxx +++ b/sw/source/core/layout/anchoredobject.cxx @@ -99,8 +99,6 @@ void SwAnchoredObject::ClearVertPosOrientFrame() } } -bool SwAnchoredObject::HasFrameFormat() const { return GetUserCall(GetDrawObj()); } - SwAnchoredObject::~SwAnchoredObject() { ClearVertPosOrientFrame(); @@ -218,7 +216,7 @@ void SwAnchoredObject::CheckCharRectAndTopOfLine( GetAnchorFrame()->IsTextFrame()) ) return; - const SwFormatAnchor& rAnch = GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rAnch = GetFrameFormat()->GetAnchor(); if ( !((rAnch.GetAnchorId() == RndStdIds::FLY_AT_CHAR) && rAnch.GetAnchorNode()) ) return; @@ -265,8 +263,9 @@ void SwAnchoredObject::CheckCharRect( const SwFormatAnchor& _rAnch, { SwRectFnSet aRectFnSet(&_rAnchorCharFrame); // determine positioning and alignment - SwFormatVertOrient aVert( GetFrameFormat().GetVertOrient() ); - SwFormatHoriOrient aHori( GetFrameFormat().GetHoriOrient() ); + const SwFrameFormat* pObjFormat = GetFrameFormat(); + SwFormatVertOrient aVert( pObjFormat->GetVertOrient() ); + SwFormatHoriOrient aHori( pObjFormat->GetHoriOrient() ); // check for anchor character rectangle changes for certain // positionings and alignments // add condition to invalidate position, @@ -319,7 +318,7 @@ void SwAnchoredObject::CheckTopOfLine( const SwFormatAnchor& _rAnch, return; // check alignment for invalidation of position - if ( GetFrameFormat().GetVertOrient().GetRelationOrient() == text::RelOrientation::TEXT_LINE ) + if ( GetFrameFormat()->GetVertOrient().GetRelationOrient() == text::RelOrientation::TEXT_LINE ) { // #i26945#, #i35911# - unlock position of // anchored object, if it isn't registered at the page, @@ -376,7 +375,7 @@ void SwAnchoredObject::UpdateLayoutDir() nLayoutDir = SwFrameFormat::HORI_R2L; } } - GetFrameFormat().SetLayoutDir( nLayoutDir ); + GetFrameFormat()->SetLayoutDir( nLayoutDir ); } /** method to perform necessary invalidations for the positioning of @@ -411,10 +410,8 @@ bool SwAnchoredObject::ConsiderObjWrapInfluenceOnObjPos() const { bool bRet( false ); - if (HasFrameFormat()) + if (const SwFrameFormat* pObjFormat = GetFrameFormat()) { - const SwFrameFormat& rObjFormat = GetFrameFormat(); - // --> #i3317# - add condition <IsTmpConsiderWrapInfluence()> // --> #i55204# // - correction: wrapping style influence has been considered, if condition @@ -424,13 +421,13 @@ bool SwAnchoredObject::ConsiderObjWrapInfluenceOnObjPos() const { bRet = true; } - else if (rObjFormat.getIDocumentSettingAccess().get( + else if (pObjFormat->getIDocumentSettingAccess().get( DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION)) { - const SwFormatAnchor& rAnchor = rObjFormat.GetAnchor(); + const SwFormatAnchor& rAnchor = pObjFormat->GetAnchor(); if (((rAnchor.GetAnchorId() == RndStdIds::FLY_AT_CHAR) || (rAnchor.GetAnchorId() == RndStdIds::FLY_AT_PARA)) - && rObjFormat.GetSurround().GetSurround() != css::text::WrapTextMode_THROUGH) + && pObjFormat->GetSurround().GetSurround() != css::text::WrapTextMode_THROUGH) { // --> #i34520# - text also wraps around anchored // objects in the layer Hell - see the text formatting. @@ -574,11 +571,10 @@ const SwRect& SwAnchoredObject::GetObjRectWithSpaces() const if ( !mbObjRectWithSpacesValid ) { maObjRectWithSpaces = GetObjBoundRect(); - if (HasFrameFormat()) + if (const SwFrameFormat* pFormat = GetFrameFormat()) { - const SwFrameFormat& rFormat = GetFrameFormat(); - const SvxULSpaceItem& rUL = rFormat.GetULSpace(); - const SvxLRSpaceItem& rLR = rFormat.GetLRSpace(); + const SvxULSpaceItem& rUL = pFormat->GetULSpace(); + const SvxLRSpaceItem& rLR = pFormat->GetLRSpace(); { maObjRectWithSpaces.Top(std::max( maObjRectWithSpaces.Top() - tools::Long(rUL.GetUpper()), tools::Long(0))); @@ -629,7 +625,7 @@ void SwAnchoredObject::UpdateObjInSortedList() if(!GetAnchorFrame()) return; - if ( GetFrameFormat().getIDocumentSettingAccess().get(DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION) ) + if ( GetFrameFormat()->getIDocumentSettingAccess().get(DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION) ) { // invalidate position of all anchored objects at anchor frame if ( GetAnchorFrame()->GetDrawObjs() ) @@ -664,7 +660,7 @@ void SwAnchoredObject::UpdateObjInSortedList() // update its position in the sorted object list of its page frame // note: as-character anchored object aren't registered at a page frame if ( GetPageFrame() && GetPageFrame()->GetSortedObjs() && - GetFrameFormat().GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR ) + GetFrameFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR ) { GetPageFrame()->GetSortedObjs()->Update( *this ); } @@ -721,9 +717,9 @@ SwTextFrame* SwAnchoredObject::FindAnchorCharFrame() // --> #i44339# - check, if anchor frame exists. if ( mpAnchorFrame ) { - if (HasFrameFormat()) + if (const SwFrameFormat* pFormat = GetFrameFormat()) { - const SwFormatAnchor& rAnch = GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rAnch = pFormat->GetAnchor(); if ((rAnch.GetAnchorId() == RndStdIds::FLY_AT_CHAR) || (rAnch.GetAnchorId() == RndStdIds::FLY_AS_CHAR)) { @@ -774,8 +770,8 @@ SwTextFrame* SwAnchoredObject::FindAnchorCharFrame() */ bool SwAnchoredObject::IsFormatPossible() const { - if (HasFrameFormat()) - return GetFrameFormat().GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetDrawObj()->GetLayer() ); + if (const SwFrameFormat* pFormat = GetFrameFormat()) + return pFormat->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetDrawObj()->GetLayer() ); return false; } @@ -795,7 +791,7 @@ void SwAnchoredObject::SetTmpConsiderWrapInfluence( const bool _bTmpConsiderWrap // --> #i35911# if ( mbTmpConsiderWrapInfluence ) { - SwLayouter::InsertObjForTmpConsiderWrapInfluence( *(GetFrameFormat().GetDoc()), + SwLayouter::InsertObjForTmpConsiderWrapInfluence( *(GetFrameFormat()->GetDoc()), *this ); } } @@ -805,7 +801,7 @@ void SwAnchoredObject::ClearTmpConsiderWrapInfluence() mbTmpConsiderWrapInfluence = false; mbClearedEnvironment = false; SetClearedEnvironment( false ); - SwLayouter::RemoveObjForTmpConsiderWrapInfluence( *(GetFrameFormat().GetDoc()), + SwLayouter::RemoveObjForTmpConsiderWrapInfluence( *(GetFrameFormat()->GetDoc()), *this ); } void SwAnchoredObject::SetTmpConsiderWrapInfluenceOfOtherObjs() diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index e4351b163e15..c991757fbc24 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -3116,7 +3116,7 @@ void SwFlyFrameFormat::MakeFrames() // #i28701# - consider changed type of // <SwSortedObjs> entries. if( pObj->DynCastFlyFrame() != nullptr && - (&pObj->GetFrameFormat()) == this ) + (pObj->GetFrameFormat()) == this ) { bAdd = false; break; diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx index 4d4b2de28994..c2bbdd8904f8 100644 --- a/sw/source/core/layout/calcmove.cxx +++ b/sw/source/core/layout/calcmove.cxx @@ -1131,18 +1131,18 @@ void SwContentFrame::MakePrtArea( const SwBorderAttrs &rAttrs ) // #i28701# - consider changed type of // <SwSortedObjs> entries SwAnchoredObject* pObj = (*GetDrawObjs())[i]; - const SwFrameFormat& rFormat = pObj->GetFrameFormat(); + const SwFrameFormat* pFormat = pObj->GetFrameFormat(); const bool bFly = pObj->DynCastFlyFrame() != nullptr; if ((bFly && (FAR_AWAY == pObj->GetObjRect().Width())) - || rFormat.GetFrameSize().GetWidthPercent()) + || pFormat->GetFrameSize().GetWidthPercent()) { continue; } - if ( RndStdIds::FLY_AS_CHAR == rFormat.GetAnchor().GetAnchorId() ) + if ( RndStdIds::FLY_AS_CHAR == pFormat->GetAnchor().GetAnchorId() ) { nMinWidth = std::max( nMinWidth, - bFly ? rFormat.GetFrameSize().GetWidth() + bFly ? pFormat->GetFrameSize().GetWidth() : pObj->GetObjRect().Width() ); } } diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx index 872e872083f8..a72523f1ca4c 100644 --- a/sw/source/core/layout/flowfrm.cxx +++ b/sw/source/core/layout/flowfrm.cxx @@ -217,7 +217,7 @@ bool IsNextContentFullPage(const SwFrame& rThis) continue; } - const SwFormatSurround& rSurround = pDrawObj->GetFrameFormat().GetSurround(); + const SwFormatSurround& rSurround = pDrawObj->GetFrameFormat()->GetSurround(); if (rSurround.GetSurround() != text::WrapTextMode_NONE) { continue; @@ -379,10 +379,10 @@ sal_uInt8 SwFlowFrame::BwdMoveNecessary( const SwPageFrame *pPage, const SwRect { SwAnchoredObject* pObj = rObjs[i]; - const SwFrameFormat& rFormat = pObj->GetFrameFormat(); + const SwFrameFormat* pFormat = pObj->GetFrameFormat(); const SwRect aRect( pObj->GetObjRect() ); if ( aRect.Overlaps( rRect ) && - rFormat.GetSurround().GetSurround() != css::text::WrapTextMode_THROUGH ) + pFormat->GetSurround().GetSurround() != css::text::WrapTextMode_THROUGH ) { if( m_rThis.IsLayoutFrame() && //Fly Lower of This? Is_Lower_Of( &m_rThis, pObj->GetDrawObj() ) ) @@ -404,10 +404,10 @@ sal_uInt8 SwFlowFrame::BwdMoveNecessary( const SwPageFrame *pPage, const SwRect // flow, because then I wouldn't evade it. if ( ::IsFrameInSameContext( pAnchor, &m_rThis ) ) { - if ( rFormat.GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_PARA ) + if ( pFormat->GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_PARA ) { // The index of the other one can be retrieved using the anchor attribute. - SwNodeOffset nTmpIndex = rFormat.GetAnchor().GetAnchorNode()->GetIndex(); + SwNodeOffset nTmpIndex = pFormat->GetAnchor().GetAnchorNode()->GetIndex(); // Now we're going to check whether the current paragraph before // the anchor of the displacing object sits in the text. If this // is the case, we don't try to evade it. @@ -1224,13 +1224,13 @@ bool SwFlowFrame::IsPrevObjMove() const // text flow to the next layout frame for (SwAnchoredObject* pObj : *pPre->GetDrawObjs()) { - + const SwFrameFormat* pObjFormat = pObj->GetFrameFormat(); // Do not consider hidden objects // i#26945 - do not consider object, which // doesn't follow the text flow. - if ( pObj->GetFrameFormat().GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( + if ( pObjFormat->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( pObj->GetDrawObj()->GetLayer() ) && - pObj->GetFrameFormat().GetFollowTextFlow().GetValue() ) + pObjFormat->GetFollowTextFlow().GetValue() ) { const SwLayoutFrame* pVertPosOrientFrame = pObj->GetVertPosOrientFrame(); if ( pVertPosOrientFrame && diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx index 8dc5706ccddc..8b3b316ec469 100644 --- a/sw/source/core/layout/fly.cxx +++ b/sw/source/core/layout/fly.cxx @@ -99,10 +99,10 @@ SwTwips GetFlyAnchorBottom(SwFlyFrame* pFly, const SwFrame& rAnchor) return 0; } - const auto& rFrameFormat = pFly->GetFrameFormat(); - const IDocumentSettingAccess& rIDSA = rFrameFormat.getIDocumentSettingAccess(); + const auto* pFrameFormat = pFly->GetFrameFormat(); + const IDocumentSettingAccess& rIDSA = pFrameFormat->getIDocumentSettingAccess(); // Allow overlap with bottom margin / footer only in case we're relative to the page frame. - bool bVertPageFrame = rFrameFormat.GetVertOrient().GetRelationOrient() == text::RelOrientation::PAGE_FRAME; + bool bVertPageFrame = pFrameFormat->GetVertOrient().GetRelationOrient() == text::RelOrientation::PAGE_FRAME; bool bInBody = rAnchor.IsInDocBody(); bool bLegacy = rIDSA.get(DocumentSettingId::TAB_OVER_MARGIN) && (bVertPageFrame || !bInBody); if (bLegacy) @@ -1273,7 +1273,7 @@ void SwFlyFrame::ChgRelPos( const Point &rNewPos ) const SwTextFrame *pAutoFrame = nullptr; // #i34948# - handle also at-page and at-fly anchored // Writer fly frames - const RndStdIds eAnchorType = GetFrameFormat().GetAnchor().GetAnchorId(); + const RndStdIds eAnchorType = GetFrameFormat()->GetAnchor().GetAnchorId(); if ( eAnchorType == RndStdIds::FLY_AT_PAGE ) { aVert.SetVertOrient( text::VertOrientation::NONE ); @@ -1761,13 +1761,13 @@ void CalcContent( SwLayoutFrame *pLay, bool bNoColl ) { OSL_FAIL( "::CalcContent(..) - loop detected, perform attribute changes to avoid the loop" ); // Prevent oscillation - SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); - SwFormatSurround aAttr( rFormat.GetSurround() ); + SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); + SwFormatSurround aAttr( pFormat->GetSurround() ); if( css::text::WrapTextMode_THROUGH != aAttr.GetSurround() ) { // When on auto position, we can only set it to // flow through - if ((rFormat.GetAnchor().GetAnchorId() == + if ((pFormat->GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_CHAR) && (css::text::WrapTextMode_PARALLEL == aAttr.GetSurround())) @@ -1778,9 +1778,9 @@ void CalcContent( SwLayoutFrame *pLay, bool bNoColl ) { aAttr.SetSurround( css::text::WrapTextMode_PARALLEL ); } - rFormat.LockModify(); - rFormat.SetFormatAttr( aAttr ); - rFormat.UnlockModify(); + pFormat->LockModify(); + pFormat->SetFormatAttr( aAttr ); + pFormat->UnlockModify(); } } else @@ -2056,7 +2056,7 @@ bool SwFlyFrame::IsShowUnfloatButton(SwWrtShell* pWrtSh) const if (pWrtSh->GetViewOptions()->IsReadonly()) return false; - const SdrObject *pObj = GetFrameFormat().FindRealSdrObject(); + const SdrObject *pObj = GetFrameFormat()->FindRealSdrObject(); if (pObj == nullptr) return false; @@ -2633,7 +2633,7 @@ void SwFrame::InvalidateObjs( const bool _bNoInvaOfAsCharAnchoredObjs ) for (SwAnchoredObject* pAnchoredObj : *GetDrawObjs()) { if ( _bNoInvaOfAsCharAnchoredObjs && - (pAnchoredObj->GetFrameFormat().GetAnchor().GetAnchorId() + (pAnchoredObj->GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR) ) { continue; @@ -2740,7 +2740,7 @@ void SwLayoutFrame::NotifyLowerObjs( const bool _bUnlockPosOfObjs ) bool isPositionedByHF(false); if (IsHeaderFrame() || IsFooterFrame()) { - auto const nO(pObj->GetFrameFormat().GetVertOrient().GetRelationOrient()); + auto const nO(pObj->GetFrameFormat()->GetVertOrient().GetRelationOrient()); if (nO == text::RelOrientation::PAGE_PRINT_AREA || nO == text::RelOrientation::PAGE_PRINT_AREA_BOTTOM || nO == text::RelOrientation::PAGE_PRINT_AREA_TOP) @@ -3095,17 +3095,17 @@ void SwFlyFrame::InvalidateObjPos() InvalidateObjRectWithSpaces(); } -SwFrameFormat& SwFlyFrame::GetFrameFormat() +SwFrameFormat* SwFlyFrame::GetFrameFormat() { OSL_ENSURE( GetFormat(), "<SwFlyFrame::GetFrameFormat()> - missing frame format -> crash." ); - return *GetFormat(); + return GetFormat(); } -const SwFrameFormat& SwFlyFrame::GetFrameFormat() const +const SwFrameFormat* SwFlyFrame::GetFrameFormat() const { OSL_ENSURE( GetFormat(), "<SwFlyFrame::GetFrameFormat()> - missing frame format -> crash." ); - return *GetFormat(); + return GetFormat(); } SwRect SwFlyFrame::GetObjRect() const diff --git a/sw/source/core/layout/flycnt.cxx b/sw/source/core/layout/flycnt.cxx index 09fd24f28c4a..5d24c21ace54 100644 --- a/sw/source/core/layout/flycnt.cxx +++ b/sw/source/core/layout/flycnt.cxx @@ -161,13 +161,13 @@ void SwFlyAtContentFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rH // of the given fly frame format is registered. if(bFound && pContent && pContent->GetDrawObjs()) { - SwFrameFormat* pMyFlyFrameFormat(&GetFrameFormat()); + SwFrameFormat* pMyFlyFrameFormat(GetFrameFormat()); SwSortedObjs &rObjs = *pContent->GetDrawObjs(); for(SwAnchoredObject* rObj : rObjs) { SwFlyFrame* pFlyFrame = rObj->DynCastFlyFrame(); if (pFlyFrame && - &(pFlyFrame->GetFrameFormat()) == pMyFlyFrameFormat) + pFlyFrame->GetFrameFormat() == pMyFlyFrameFormat) { bFound = false; break; @@ -329,7 +329,8 @@ bool SwOszControl::ChkOsz() |*/ void SwFlyAtContentFrame::MakeAll(vcl::RenderContext* pRenderContext) { - if ( !GetFormat()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) ) + const SwDoc& rDoc = *(GetFormat()->GetDoc()); + if (!rDoc.getIDocumentDrawModelAccess().IsVisibleLayerId(GetVirtDrawObj()->GetLayer())) { return; } @@ -449,7 +450,6 @@ void SwFlyAtContentFrame::MakeAll(vcl::RenderContext* pRenderContext) SwTextFrame* pAnchorTextFrame( static_cast<SwTextFrame*>(AnchorFrame()) ); bool bInsert( true ); sal_uInt32 nAnchorFrameToPageNum( 0 ); - const SwDoc& rDoc = *(GetFrameFormat().GetDoc()); if ( SwLayouter::FrameMovedFwdByObjPos( rDoc, *pAnchorTextFrame, nAnchorFrameToPageNum ) ) { @@ -517,7 +517,7 @@ void SwFlyAtContentFrame::MakeAll(vcl::RenderContext* pRenderContext) !bConsiderWrapInfluenceDueToOverlapPrevCol && // #i40444# !bConsiderWrapInfluenceDueToMovedFwdAnchor && - GetFormat()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) ); + rDoc.getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) ); // #i3317# - instead of attribute change apply // temporarily the 'straightforward positioning process'. diff --git a/sw/source/core/layout/flyincnt.cxx b/sw/source/core/layout/flyincnt.cxx index 2455f7a6d130..1e5782acc793 100644 --- a/sw/source/core/layout/flyincnt.cxx +++ b/sw/source/core/layout/flyincnt.cxx @@ -185,7 +185,7 @@ void SwFlyInContentFrame::MakeObjPos() void SwFlyInContentFrame::ActionOnInvalidation( const InvalidationType _nInvalid ) { if ( INVALID_POS == _nInvalid || INVALID_ALL == _nInvalid ) - AnchorFrame()->Prepare( PrepareHint::FlyFrameAttributesChanged, &GetFrameFormat() ); + AnchorFrame()->Prepare( PrepareHint::FlyFrameAttributesChanged, GetFrameFormat() ); } void SwFlyInContentFrame::NotifyBackground( SwPageFrame *, const SwRect& rRect, diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx index 880bdaa87520..2f14d5f1147f 100644 --- a/sw/source/core/layout/flylay.cxx +++ b/sw/source/core/layout/flylay.cxx @@ -153,7 +153,7 @@ void SwFlyFreeFrame::MakeAll(vcl::RenderContext* /*pRenderContext*/) if ( !IsNoMoveOnCheckClip() && !( PositionLocked() && GetAnchorFrame()->IsInFly() && - GetFrameFormat().GetFollowTextFlow().GetValue() ) ) + GetFrameFormat()->GetFollowTextFlow().GetValue() ) ) { setFrameAreaPositionValid(false); } @@ -1103,7 +1103,7 @@ void SwPageFrame::AppendDrawObjToPage( SwAnchoredObject& _rNewObj ) pFlyFrame->GetVirtDrawObj()->SetOrdNum( nNewNum ); } - if ( RndStdIds::FLY_AS_CHAR == _rNewObj.GetFrameFormat().GetAnchor().GetAnchorId() ) + if ( RndStdIds::FLY_AS_CHAR == _rNewObj.GetFrameFormat()->GetAnchor().GetAnchorId() ) { return; } @@ -1143,9 +1143,9 @@ void SwPageFrame::RemoveDrawObjFromPage( SwAnchoredObject& _rToRemoveObj ) } if ( GetUpper() ) { - if (_rToRemoveObj.HasFrameFormat() - && RndStdIds::FLY_AS_CHAR - != _rToRemoveObj.GetFrameFormat().GetAnchor().GetAnchorId()) + const SwFrameFormat* pObjFormat = _rToRemoveObj.GetFrameFormat(); + if (pObjFormat + && RndStdIds::FLY_AS_CHAR != pObjFormat->GetAnchor().GetAnchorId()) { static_cast<SwRootFrame*>(GetUpper())->SetSuperfluous(); InvalidatePage(); diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index e65f09a00d7d..7fc012d3aebf 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -1025,7 +1025,7 @@ void SwContentNotify::ImplDestroy() SwSortedObjs* pObjs = pMasterFrame->GetDrawObjs(); for (SwAnchoredObject* pAnchoredObj : *pObjs) { - if ( pAnchoredObj->GetFrameFormat().GetAnchor().GetAnchorId() + if ( pAnchoredObj->GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_CHAR ) { pAnchoredObj->CheckCharRectAndTopOfLine( !pMasterFrame->IsEmpty() ); @@ -2835,7 +2835,7 @@ static void lcl_RemoveObjsFromPage( SwFrame* _pFrame ) // #115759# - remove also drawing objects from page else if ( auto pDrawObj = dynamic_cast<SwAnchoredDrawObject*>( pObj) ) { - if (pObj->GetFrameFormat().GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) + if (pObj->GetFrameFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) { if (SwPageFrame *pPg = pObj->GetPageFrame()) pPg->RemoveDrawObjFromPage( *pDrawObj ); @@ -2996,7 +2996,7 @@ static void lcl_AddObjsToPage( SwFrame* _pFrame, SwPageFrame* _pPage ) // #115759# - remove also drawing objects from page else if ( dynamic_cast<const SwAnchoredDrawObject*>( pObj) != nullptr ) { - if (pObj->GetFrameFormat().GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) + if (pObj->GetFrameFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) { pObj->InvalidateObjPos(); _pPage->AppendDrawObjToPage( diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx index 747470129c96..a705ef251176 100644 --- a/sw/source/core/layout/layact.cxx +++ b/sw/source/core/layout/layact.cxx @@ -1673,7 +1673,7 @@ bool SwLayAction::FormatContent(SwPageFrame *const pPage) assert(pAnchorPage); if (pAnchorPage != pPage && pPage->GetPhyPageNum() < pAnchorPage->GetPhyPageNum() - && pObj->GetFrameFormat().GetAnchor().GetAnchorId() + && pObj->GetFrameFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) { moved.emplace_back(pObj, pAnchorPage); diff --git a/sw/source/core/layout/objectformattertxtfrm.cxx b/sw/source/core/layout/objectformattertxtfrm.cxx index 6b2503d40c39..9a44b0df624b 100644 --- a/sw/source/core/layout/objectformattertxtfrm.cxx +++ b/sw/source/core/layout/objectformattertxtfrm.cxx @@ -148,7 +148,7 @@ bool SwObjectFormatterTextFrame::DoFormatObj( SwAnchoredObject& _rAnchoredObj, _rAnchoredObj.RestartLayoutProcess() && !( _rAnchoredObj.PositionLocked() && _rAnchoredObj.GetAnchorFrame()->IsInFly() && - _rAnchoredObj.GetFrameFormat().GetFollowTextFlow().GetValue() ); + _rAnchoredObj.GetFrameFormat()->GetFollowTextFlow().GetValue() ); if ( bRestart ) { bSuccess = false; @@ -168,7 +168,7 @@ bool SwObjectFormatterTextFrame::DoFormatObj( SwAnchoredObject& _rAnchoredObj, if ( bSuccess && _rAnchoredObj.ConsiderObjWrapInfluenceOnObjPos() && ( _bCheckForMovedFwd || - _rAnchoredObj.GetFrameFormat().GetWrapInfluenceOnObjPos(). + _rAnchoredObj.GetFrameFormat()->GetWrapInfluenceOnObjPos(). // #i35017# - handle ITERATIVE as ONCE_SUCCESSIVE GetWrapInfluenceOnObjPos( true ) == // #i35017# - constant name has changed @@ -481,10 +481,11 @@ bool SwObjectFormatterTextFrame::DoFormatObjs() void SwObjectFormatterTextFrame::InvalidatePrevObjs( SwAnchoredObject& _rAnchoredObj ) { + const SwFrameFormat* pObjFormat = _rAnchoredObj.GetFrameFormat(); // invalidate all previous objects, whose wrapping influence on the object // positioning is <NONE_CONCURRENT_POSITIONED>. // Note: list of objects at anchor frame is sorted by this property. - if ( _rAnchoredObj.GetFrameFormat().GetWrapInfluenceOnObjPos(). + if (pObjFormat->GetWrapInfluenceOnObjPos(). // #i35017# - handle ITERATIVE as ONCE_SUCCESSIVE GetWrapInfluenceOnObjPos( true ) != // #i35017# - constant name has changed @@ -501,7 +502,7 @@ void SwObjectFormatterTextFrame::InvalidatePrevObjs( SwAnchoredObject& _rAnchore { --i; SwAnchoredObject* pAnchoredObj = (*pObjs)[i]; - if ( pAnchoredObj->GetFrameFormat().GetWrapInfluenceOnObjPos(). + if (pObjFormat->GetWrapInfluenceOnObjPos(). // #i35017# - handle ITERATIVE as ONCE_SUCCESSIVE GetWrapInfluenceOnObjPos( true ) == // #i35017# - constant name has changed @@ -546,7 +547,7 @@ SwAnchoredObject* SwObjectFormatterTextFrame::GetFirstObjWithMovedFwdAnchor( { SwAnchoredObject* pAnchoredObj = GetCollectedObj(i); if ( pAnchoredObj->ConsiderObjWrapInfluenceOnObjPos() && - pAnchoredObj->GetFrameFormat().GetWrapInfluenceOnObjPos(). + pAnchoredObj->GetFrameFormat()->GetWrapInfluenceOnObjPos(). // #i35017# - handle ITERATIVE as ONCE_SUCCESSIVE GetWrapInfluenceOnObjPos( true ) == _nWrapInfluenceOnPosition ) { @@ -648,8 +649,8 @@ bool SwObjectFormatterTextFrame::CheckMovedFwdCondition( // which will be on the next page. if ( !bAnchorIsMovedForward && _bAnchoredAtMasterBeforeFormatAnchor && - ((_rAnchoredObj.GetFrameFormat().GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_CHAR) || - (_rAnchoredObj.GetFrameFormat().GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_PARA))) + ((_rAnchoredObj.GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_CHAR) || + (_rAnchoredObj.GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_PARA))) { SwFrame* pAnchorFrame = _rAnchoredObj.GetAnchorFrameContainingAnchPos(); OSL_ENSURE( pAnchorFrame->IsTextFrame(), @@ -703,7 +704,7 @@ bool SwObjectFormatterTextFrame::CheckMovedFwdCondition( if ((pObjAnchorPage == &rFromPageFrame ? _boInFollow // same-page but will move forward : rFromPageFrame.GetPhyPageNum() < pObjAnchorPage->GetPhyPageNum()) - && pObj->GetFrameFormat().GetAnchor().GetAnchorId() + && pObj->GetFrameFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) { if (pPageFrameOfAnchor->GetPhyPageNum() < pObjAnchorPage->GetPhyPageNum()) diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx index 6f11380fc030..2388b5acc65a 100644 --- a/sw/source/core/layout/pagechg.cxx +++ b/sw/source/core/layout/pagechg.cxx @@ -1716,8 +1716,8 @@ void SwRootFrame::AssertPageFlys( SwPageFrame *pPage ) while ( pPage->GetSortedObjs() && i< pPage->GetSortedObjs()->size() ) { // #i28701# - SwFrameFormat& rFormat = (*pPage->GetSortedObjs())[i]->GetFrameFormat(); - const SwFormatAnchor &rAnch = rFormat.GetAnchor(); + SwFrameFormat* pFormat = (*pPage->GetSortedObjs())[i]->GetFrameFormat(); + const SwFormatAnchor &rAnch = pFormat->GetAnchor(); const sal_uInt16 nPg = rAnch.GetPageNum(); if ((rAnch.GetAnchorId() == RndStdIds::FLY_AT_PAGE) && nPg != pPage->GetPhyPageNum() ) @@ -1730,12 +1730,12 @@ void SwRootFrame::AssertPageFlys( SwPageFrame *pPage ) // It can move by itself. Just send a modify to its anchor attribute. #if OSL_DEBUG_LEVEL > 1 const size_t nCnt = pPage->GetSortedObjs()->size(); - rFormat.CallSwClientNotify(sw::LegacyModifyHint(nullptr, &rAnch)); + pFormat->CallSwClientNotify(sw::LegacyModifyHint(nullptr, &rAnch)); OSL_ENSURE( !pPage->GetSortedObjs() || nCnt != pPage->GetSortedObjs()->size(), "Object couldn't be reattached!" ); #else - rFormat.CallSwClientNotify(sw::LegacyModifyHint(nullptr, &rAnch)); + pFormat->CallSwClientNotify(sw::LegacyModifyHint(nullptr, &rAnch)); #endif // Do not increment index, in this case continue; @@ -1861,19 +1861,19 @@ void SwRootFrame::ImplCalcBrowseWidth() { // #i28701# SwAnchoredObject* pAnchoredObj = (*pFrame->GetDrawObjs())[i]; - const SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); + const SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); const bool bFly = pAnchoredObj->DynCastFlyFrame() != nullptr; if ((bFly && (FAR_AWAY == pAnchoredObj->GetObjRect().Width())) - || rFormat.GetFrameSize().GetWidthPercent()) + || pFormat->GetFrameSize().GetWidthPercent()) { continue; } tools::Long nWidth = 0; - switch ( rFormat.GetAnchor().GetAnchorId() ) + switch ( pFormat->GetAnchor().GetAnchorId() ) { case RndStdIds::FLY_AS_CHAR: - nWidth = bFly ? rFormat.GetFrameSize().GetWidth() : + nWidth = bFly ? pFormat->GetFrameSize().GetWidth() : pAnchoredObj->GetObjRect().Width(); break; case RndStdIds::FLY_AT_PARA: @@ -1885,8 +1885,8 @@ void SwRootFrame::ImplCalcBrowseWidth() // at position FAR_AWAY. if ( bFly ) { - nWidth = rFormat.GetFrameSize().GetWidth(); - const SwFormatHoriOrient &rHori = rFormat.GetHoriOrient(); + nWidth = pFormat->GetFrameSize().GetWidth(); + const SwFormatHoriOrient &rHori = pFormat->GetHoriOrient(); switch ( rHori.GetHoriOrient() ) { case text::HoriOrientation::NONE: @@ -2021,8 +2021,8 @@ static void lcl_MoveAllLowerObjs( SwFrame* pFrame, const Point& rOffset ) for (size_t i = 0; i < pSortedObj->size(); ++i) { SwAnchoredObject *const pAnchoredObj = (*pSortedObj)[i]; - const SwFrameFormat& rObjFormat = pAnchoredObj->GetFrameFormat(); - const SwFormatAnchor& rAnchor = rObjFormat.GetAnchor(); + const SwFrameFormat* pObjFormat = pAnchoredObj->GetFrameFormat(); + const SwFormatAnchor& rAnchor = pObjFormat->GetAnchor(); // all except from the as character anchored objects are moved // when processing the page frame: @@ -2078,7 +2078,7 @@ static void lcl_MoveAllLowerObjs( SwFrame* pFrame, const Point& rOffset ) pAnchoredDrawObj->SetLastObjRect( pAnchoredDrawObj->GetObjRect().SVRect() ); // clear contour cache - if ( pAnchoredDrawObj->GetFrameFormat().GetSurround().IsContour() ) + if ( pAnchoredDrawObj->GetFrameFormat()->GetSurround().IsContour() ) ClrContourCache( pAnchoredDrawObj->GetDrawObj() ); } // #i92511# diff --git a/sw/source/core/layout/sortedobjs.cxx b/sw/source/core/layout/sortedobjs.cxx index 1e5f1aa293be..e0c29d51801c 100644 --- a/sw/source/core/layout/sortedobjs.cxx +++ b/sw/source/core/layout/sortedobjs.cxx @@ -78,16 +78,16 @@ struct ObjAnchorOrder const SwAnchoredObject* _pNewAnchoredObj ) { // get attributes of listed object - if (!_pListedAnchoredObj->HasFrameFormat()) + const SwFrameFormat* pFormatListed = _pListedAnchoredObj->GetFrameFormat(); + if (!pFormatListed) return false; - const SwFrameFormat& rFormatListed = _pListedAnchoredObj->GetFrameFormat(); - const SwFormatAnchor* pAnchorListed = &(rFormatListed.GetAnchor()); + const SwFormatAnchor* pAnchorListed = &(pFormatListed->GetAnchor()); // get attributes of new object - if (!_pNewAnchoredObj->HasFrameFormat()) + const SwFrameFormat* pFormatNew = _pNewAnchoredObj->GetFrameFormat(); + if (!pFormatNew) return false; - const SwFrameFormat& rFormatNew = _pNewAnchoredObj->GetFrameFormat(); - const SwFormatAnchor* pAnchorNew = &(rFormatNew.GetAnchor()); + const SwFormatAnchor* pAnchorNew = &(pFormatNew->GetAnchor()); // check for to-page anchored objects if ((pAnchorListed->GetAnchorId() == RndStdIds::FLY_AT_PAGE) && @@ -160,15 +160,15 @@ struct ObjAnchorOrder // objects anchored at the same content and at the same content anchor // node position with the same anchor type // Thus, compare its wrapping style including its layer - const IDocumentDrawModelAccess& rIDDMA = rFormatListed.getIDocumentDrawModelAccess(); + const IDocumentDrawModelAccess& rIDDMA = pFormatListed->getIDocumentDrawModelAccess(); const SdrLayerID nHellId = rIDDMA.GetHellId(); const SdrLayerID nInvisibleHellId = rIDDMA.GetInvisibleHellId(); const bool bWrapThroughOrHellListed = - rFormatListed.GetSurround().GetSurround() == css::text::WrapTextMode_THROUGH || + pFormatListed->GetSurround().GetSurround() == css::text::WrapTextMode_THROUGH || _pListedAnchoredObj->GetDrawObj()->GetLayer() == nHellId || _pListedAnchoredObj->GetDrawObj()->GetLayer() == nInvisibleHellId; const bool bWrapThroughOrHellNew = - rFormatNew.GetSurround().GetSurround() == css::text::WrapTextMode_THROUGH || + pFormatNew->GetSurround().GetSurround() == css::text::WrapTextMode_THROUGH || _pNewAnchoredObj->GetDrawObj()->GetLayer() == nHellId || _pNewAnchoredObj->GetDrawObj()->GetLayer() == nInvisibleHellId; if ( bWrapThroughOrHellListed != bWrapThroughOrHellNew ) @@ -183,9 +183,9 @@ struct ObjAnchorOrder // objects anchored at the same content with a set text wrapping // Thus, compare wrap influences on object position const SwFormatWrapInfluenceOnObjPos* pWrapInfluenceOnObjPosListed = - &(rFormatListed.GetWrapInfluenceOnObjPos()); + &(pFormatListed->GetWrapInfluenceOnObjPos()); const SwFormatWrapInfluenceOnObjPos* pWrapInfluenceOnObjPosNew = - &(rFormatNew.GetWrapInfluenceOnObjPos()); + &(pFormatNew->GetWrapInfluenceOnObjPos()); // #i35017# - handle ITERATIVE as ONCE_SUCCESSIVE if ( pWrapInfluenceOnObjPosListed->GetWrapInfluenceOnObjPos( true ) != pWrapInfluenceOnObjPosNew->GetWrapInfluenceOnObjPos( true ) ) diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index bbea3ddbb6f0..f730d85f7db5 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -286,12 +286,12 @@ static void lcl_InvalidateLowerObjs( SwLayoutFrame& _rLayoutFrame, // that anchored object is correctly positioned. pAnchoredObj->ClearCharRectAndTopOfLine(); pAnchoredObj->SetCurrRelPos( Point( 0, 0 ) ); - if ( pAnchoredObj->GetFrameFormat().GetAnchor().GetAnchorId() - == RndStdIds::FLY_AS_CHAR ) + const SwFrameFormat* pObjFormat = pAnchoredObj->GetFrameFormat(); + if (pObjFormat->GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR) { pAnchoredObj->AnchorFrame() ->Prepare( PrepareHint::FlyFrameAttributesChanged, - &(pAnchoredObj->GetFrameFormat()) ); + pObjFormat ); } if ( pFly != nullptr ) { @@ -4432,8 +4432,8 @@ tools::Long CalcHeightWithFlys( const SwFrame *pFrame ) { // OD 30.09.2003 #i18732# - only objects, which follow // the text flow have to be considered. - const SwFrameFormat& rFrameFormat = pAnchoredObj->GetFrameFormat(); - bool bFollowTextFlow = rFrameFormat.GetFollowTextFlow().GetValue(); + const SwFrameFormat* pFrameFormat = pAnchoredObj->GetFrameFormat(); + bool bFollowTextFlow = pFrameFormat->GetFollowTextFlow().GetValue(); bool bIsFarAway = pAnchoredObj->GetObjRect().Top() != FAR_AWAY; const SwPageFrame* pPageFrm = pTmp->FindPageFrame(); bool bIsAnchoredToTmpFrm = false; @@ -4441,14 +4441,14 @@ tools::Long CalcHeightWithFlys( const SwFrame *pFrame ) bIsAnchoredToTmpFrm = pAnchoredObj->GetPageFrame() == pPageFrm || (pPageFrm->GetFormatPage().GetPhyPageNum() == pAnchoredObj->GetPageFrame()->GetFormatPage().GetPhyPageNum() + 1); const bool bConsiderObj = - (rFrameFormat.GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) && + (pFrameFormat->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR) && bIsFarAway && bFollowTextFlow && bIsAnchoredToTmpFrm; - bool bWrapThrough = rFrameFormat.GetSurround().GetValue() == text::WrapTextMode_THROUGH; - bool bInBackground = !rFrameFormat.GetOpaque().GetValue(); + bool bWrapThrough = pFrameFormat->GetSurround().GetValue() == text::WrapTextMode_THROUGH; + bool bInBackground = !pFrameFormat->GetOpaque().GetValue(); // Legacy render requires in-background setting, the new mode does not. bool bConsiderFollowTextFlow = bInBackground - || !rFrameFormat.getIDocumentSettingAccess().get( + || !pFrameFormat->getIDocumentSettingAccess().get( DocumentSettingId::USE_FORMER_TEXT_WRAPPING); if (pFrame->IsInTab() && bFollowTextFlow && bWrapThrough && bConsiderFollowTextFlow) { @@ -4460,7 +4460,7 @@ tools::Long CalcHeightWithFlys( const SwFrame *pFrame ) if ( bConsiderObj ) { - const SwFormatFrameSize &rSz = rFrameFormat.GetFrameSize(); + const SwFormatFrameSize &rSz = pFrameFormat->GetFrameSize(); if( !rSz.GetHeightPercent() ) { const SwTwips nDistOfFlyBottomToAnchorTop = @@ -5413,7 +5413,7 @@ static bool lcl_ArrangeLowers( SwLayoutFrame *pLay, tools::Long lYStart, bool bI // from its anchor frame. bool bVertPosDepOnAnchor( true ); { - SwFormatVertOrient aVert( pAnchoredObj->GetFrameFormat().GetVertOrient() ); + SwFormatVertOrient aVert( pAnchoredObj->GetFrameFormat()->GetVertOrient() ); switch ( aVert.GetRelationOrient() ) { case text::RelOrientation::PAGE_FRAME: @@ -5516,7 +5516,7 @@ static bool lcl_ArrangeLowers( SwLayoutFrame *pLay, tools::Long lYStart, bool bI if ( pTabFrame && !( pTabFrame->IsFollow() && pTabFrame->FindMaster()->IsRebuildLastLine() ) && - (pAnchoredObj->GetFrameFormat().GetAnchor().GetAnchorId() + (pAnchoredObj->GetFrameFormat()->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR)) { SwPageFrame* pPageFrame = pAnchoredObj->GetPageFrame(); @@ -5538,7 +5538,7 @@ static bool lcl_ArrangeLowers( SwLayoutFrame *pLay, tools::Long lYStart, bool bI // #i52904# - re-introduce direct move // of drawing objects const bool bDirectMove = - static_cast<const SwDrawFrameFormat&>(pAnchoredObj->GetFrameFormat()).IsPosAttrSet() && + static_cast<const SwDrawFrameFormat*>(pAnchoredObj->GetFrameFormat())->IsPosAttrSet() && bVertPosDepOnAnchor && !pAnchoredObj->ConsiderObjWrapInfluenceOnObjPos(); if ( bDirectMove ) @@ -5796,8 +5796,8 @@ void SwCellFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorder const SwFrame* pAnch = pAnchoredObj->GetAnchorFrame(); if ( (bConsiderWrapOnObjPos && IsAnLower( pAnch )) || (!bConsiderWrapOnObjPos && aTmp.Overlaps( aRect )) ) { - const SwFrameFormat& rAnchoredObjFrameFormat = pAnchoredObj->GetFrameFormat(); - const SwFormatSurround &rSur = rAnchoredObjFrameFormat.GetSurround(); + const SwFrameFormat* pAnchoredObjFrameFormat = pAnchoredObj->GetFrameFormat(); + const SwFormatSurround &rSur = pAnchoredObjFrameFormat->GetSurround(); if ( bConsiderWrapOnObjPos || css::text::WrapTextMode_THROUGH != rSur.GetSurround() ) { @@ -5817,7 +5817,7 @@ void SwCellFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorder if ( bConsiderWrapOnObjPos || !IsAnLower( pAnch ) || pAnchoredObj->IsTmpConsiderWrapInfluence() || - !rAnchoredObjFrameFormat.GetFollowTextFlow().GetValue() ) + !pAnchoredObjFrameFormat->GetFollowTextFlow().GetValue() ) { bVertDir = false; break; diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx index 311d177d32bf..4880ea635146 100644 --- a/sw/source/core/layout/trvlfrm.cxx +++ b/sw/source/core/layout/trvlfrm.cxx @@ -70,8 +70,9 @@ namespace { const SwVirtFlyDrawObj* pObj = static_cast<const SwVirtFlyDrawObj*>(aIter()); const SwAnchoredObject* pAnchoredObj = GetUserCall( aIter() )->GetAnchoredObj( aIter() ); - const SwFormatSurround& rSurround = pAnchoredObj->GetFrameFormat().GetSurround(); - const SvxOpaqueItem& rOpaque = pAnchoredObj->GetFrameFormat().GetOpaque(); + const SwFrameFormat* pObjFormat = pAnchoredObj->GetFrameFormat(); + const SwFormatSurround& rSurround = pObjFormat->GetSurround(); + const SvxOpaqueItem& rOpaque = pObjFormat->GetOpaque(); bool bInBackground = ( rSurround.GetSurround() == css::text::WrapTextMode_THROUGH ) && !rOpaque.GetValue(); bool bBackgroundMatches = bInBackground == bSearchBackground; @@ -2648,7 +2649,7 @@ void SwRootFrame::CalcFrameRects(SwShellCursor const& rCursor, SwRects & rRects, continue; const SwVirtFlyDrawObj* pObj = pFly->GetVirtDrawObj(); const SwFormatSurround &rSur = pFly->GetFormat()->GetSurround(); - SwFormatAnchor const& rAnchor(pAnchoredObj->GetFrameFormat().GetAnchor()); + SwFormatAnchor const& rAnchor(pAnchoredObj->GetFrameFormat()->GetAnchor()); const SwPosition* anchoredAt = rAnchor.GetContentAnchor(); bool inSelection = ( anchoredAt != nullptr diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx index 9d696a2650f7..537c79334189 100644 --- a/sw/source/core/layout/wsfrm.cxx +++ b/sw/source/core/layout/wsfrm.cxx @@ -2317,8 +2317,8 @@ SwTwips SwContentFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) if( aBound.Overlaps( aRect ) ) { - const SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); - if( css::text::WrapTextMode_THROUGH != rFormat.GetSurround().GetSurround() ) + const SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); + if( css::text::WrapTextMode_THROUGH != pFormat->GetSurround().GetSurround() ) { const SwFrame* pAnchor = pAnchoredObj->GetAnchorFrame(); if ( pAnchor && pAnchor->FindFooterOrHeader() == GetUpper() ) @@ -4270,7 +4270,7 @@ void SwRootFrame::InvalidateAllObjPos() const SwSortedObjs& rObjs = *(pPageFrame->GetSortedObjs()); for (SwAnchoredObject* pAnchoredObj : rObjs) { - const SwFormatAnchor& rAnch = pAnchoredObj->GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rAnch = pAnchoredObj->GetFrameFormat()->GetAnchor(); if ((rAnch.GetAnchorId() != RndStdIds::FLY_AT_PARA) && (rAnch.GetAnchorId() != RndStdIds::FLY_AT_CHAR)) { diff --git a/sw/source/core/objectpositioning/anchoredobjectposition.cxx b/sw/source/core/objectpositioning/anchoredobjectposition.cxx index e530e36df365..ab35ae7af738 100644 --- a/sw/source/core/objectpositioning/anchoredobjectposition.cxx +++ b/sw/source/core/objectpositioning/anchoredobjectposition.cxx @@ -106,7 +106,7 @@ void SwAnchoredObjectPosition::GetInfoAboutObj() // determine format the object belongs to { // #i28701# - mpFrameFormat = &mpAnchoredObj->GetFrameFormat(); + mpFrameFormat = mpAnchoredObj->GetFrameFormat(); assert(mpFrameFormat && "<SwAnchoredObjectPosition::GetInfoAboutObj() - missing frame format."); } diff --git a/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx b/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx index 31802ee4c184..2bf0a6119dc5 100644 --- a/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx +++ b/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx @@ -1241,7 +1241,7 @@ void SwToContentAnchoredObjectPosition::CalcOverlap(const SwTextFrame* pAnchorFr break; } - if (SwTextBoxHelper::isTextBox(&pAnchoredObj->GetFrameFormat(), RES_FLYFRMFMT)) + if (SwTextBoxHelper::isTextBox(pAnchoredObj->GetFrameFormat(), RES_FLYFRMFMT)) { // Overlapping with the frame of a textbox is fine. continue; @@ -1276,7 +1276,7 @@ void SwToContentAnchoredObjectPosition::CalcOverlap(const SwTextFrame* pAnchorFr } } - css::text::WrapTextMode eWrap = pAnchoredObj->GetFrameFormat().GetSurround().GetSurround(); + css::text::WrapTextMode eWrap = pAnchoredObj->GetFrameFormat()->GetSurround().GetSurround(); if (eWrap == css::text::WrapTextMode_THROUGH) { // The other object is wrap through: allowed to overlap. diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx index e9a7363c37cf..d9f75fefaf13 100644 --- a/sw/source/core/text/EnhancedPDFExportHelper.cxx +++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx @@ -1581,7 +1581,7 @@ void SwTaggedPDFHelper::BeginBlockStructureElements() { const SwFlyFrame* pFly = static_cast<const SwFlyFrame*>(pFrame); if (pFly->GetAnchorFrame()->FindFooterOrHeader() != nullptr - || pFly->GetFrameFormat().GetAttrSet().Get(RES_DECORATIVE).GetValue()) + || pFly->GetFrameFormat()->GetAttrSet().Get(RES_DECORATIVE).GetValue()) { nPDFType = vcl::PDFWriter::NonStructElement; } diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx index 495820336fb3..e583aa395d57 100644 --- a/sw/source/core/text/frmform.cxx +++ b/sw/source/core/text/frmform.cxx @@ -1120,7 +1120,7 @@ void SwTextFrame::FormatAdjust( SwTextFormatter &rLine, bool bOnlyContainsAsCharAnchoredObj = !IsFollow() && nStrLen == TextFrameIndex(1) && GetDrawObjs() && GetDrawObjs()->size() == 1 && - (*GetDrawObjs())[0]->GetFrameFormat().GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR; + (*GetDrawObjs())[0]->GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR; // Still try split text frame if we have columns. if (FindColFrame()) diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx index 358d6d5068f3..2f9b196b2e40 100644 --- a/sw/source/core/text/itratr.cxx +++ b/sw/source/core/text/itratr.cxx @@ -1576,7 +1576,7 @@ bool SwTextFrame::IsEmptyWithSplitFly() const } // It has a split fly anchored to it. - if (pFlyFrame->GetFrameFormat().GetVertOrient().GetPos() >= 0) + if (pFlyFrame->GetFrameFormat()->GetVertOrient().GetPos() >= 0) { return false; } diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx index 8d52962bb7f7..e88e679e1d5b 100644 --- a/sw/source/core/text/itrform2.cxx +++ b/sw/source/core/text/itrform2.cxx @@ -420,7 +420,7 @@ void SwTextFormatter::BuildPortions( SwTextFormatInfo &rInf ) if (pAnchoredObj->RestartLayoutProcess() && !pAnchoredObj->IsTmpConsiderWrapInfluence()) { - SwFormatAnchor const& rAnchor(pAnchoredObj->GetFrameFormat().GetAnchor()); + SwFormatAnchor const& rAnchor(pAnchoredObj->GetFrameFormat()->GetAnchor()); assert(rAnchor.GetAnchorId() == RndStdIds::FLY_AT_CHAR || rAnchor.GetAnchorId() == RndStdIds::FLY_AT_PARA); TextFrameIndex const nAnchor(GetTextFrame()->MapModelToViewPos(*rAnchor.GetContentAnchor())); if (pFollow->GetOffset() <= nAnchor diff --git a/sw/source/core/text/porfly.cxx b/sw/source/core/text/porfly.cxx index 7bee98d9821a..be306e17a105 100644 --- a/sw/source/core/text/porfly.cxx +++ b/sw/source/core/text/porfly.cxx @@ -158,7 +158,7 @@ void SwTextFrame::MoveFlyInCnt(SwTextFrame *pNew, { // Consider changed type of <SwSortedList> entries SwAnchoredObject* pAnchoredObj = (*pObjs)[i]; - const SwFormatAnchor& rAnch = pAnchoredObj->GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rAnch = pAnchoredObj->GetFrameFormat()->GetAnchor(); if (rAnch.GetAnchorId() == RndStdIds::FLY_AS_CHAR) { const SwPosition* pPos = rAnch.GetContentAnchor(); diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index 50a8489b5088..cd7fc0d956ae 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -744,7 +744,7 @@ void SwLineLayout::CalcLine( SwTextFormatter &rLine, SwTextFormatInfo &rInf ) { bool bDeleted = false; size_t nAuthor = std::string::npos; - const SwFormatAnchor& rAnchor = pAnchoredObj->GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rAnchor = pAnchoredObj->GetFrameFormat()->GetAnchor(); if ( rAnchor.GetAnchorId() == RndStdIds::FLY_AT_CHAR ) { SwPosition aAnchor = *rAnchor.GetContentAnchor(); diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx index b2f367fa1ca7..3efaa4262d14 100644 --- a/sw/source/core/text/txtfly.cxx +++ b/sw/source/core/text/txtfly.cxx @@ -162,7 +162,7 @@ SwRect SwContourCache::CalcBoundRect( const SwAnchoredObject* pAnchoredObj, const bool bRight ) { SwRect aRet; - const SwFrameFormat* pFormat = &(pAnchoredObj->GetFrameFormat()); + const SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); bool bHandleContour(pFormat->GetSurround().IsContour()); if(!bHandleContour) @@ -594,7 +594,7 @@ void SwTextFly::DrawFlyRect( OutputDevice* pOut, const SwRect &rRect ) if (pFly) { // #i68520# - const SwFormatSurround& rSur = pAnchoredObjTmp->GetFrameFormat().GetSurround(); + const SwFormatSurround& rSur = pAnchoredObjTmp->GetFrameFormat()->GetSurround(); // OD 24.01.2003 #106593# - correct clipping of fly frame area. // Consider that fly frame background/shadow can be transparent @@ -655,8 +655,8 @@ bool SwTextFly::GetTop( const SwAnchoredObject* _pAnchoredObj, if( ( bInFootnote || bInFooterOrHeader ) && m_bTopRule ) { // #i26945# - const SwFrameFormat& rFrameFormat = _pAnchoredObj->GetFrameFormat(); - const SwFormatAnchor& rNewA = rFrameFormat.GetAnchor(); + const SwFrameFormat* pFrameFormat = _pAnchoredObj->GetFrameFormat(); + const SwFormatAnchor& rNewA = pFrameFormat->GetAnchor(); if (RndStdIds::FLY_AT_PAGE == rNewA.GetAnchorId()) { if ( bInFootnote ) @@ -664,7 +664,7 @@ bool SwTextFly::GetTop( const SwAnchoredObject* _pAnchoredObj, if ( bInFooterOrHeader ) { - const SwFormatVertOrient& aVert( rFrameFormat.GetVertOrient() ); + const SwFormatVertOrient& aVert(pFrameFormat->GetVertOrient()); bool bVertPrt = aVert.GetRelationOrient() == text::RelOrientation::PRINT_AREA || aVert.GetRelationOrient() == text::RelOrientation::PAGE_PRINT_AREA; if( bVertPrt ) @@ -710,13 +710,14 @@ bool SwTextFly::GetTop( const SwAnchoredObject* _pAnchoredObj, { // Within chained Flys we only avoid Lower // #i68520# - const SwFormatChain &rChain = mpCurrAnchoredObj->GetFrameFormat().GetChain(); + const SwFrameFormat* pCurObjFormat = mpCurrAnchoredObj->GetFrameFormat(); + const SwFormatChain& rChain = pCurObjFormat->GetChain(); if ( !rChain.GetPrev() && !rChain.GetNext() ) { // #i26945# - const SwFormatAnchor& rNewA = _pAnchoredObj->GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rNewA = _pAnchoredObj->GetFrameFormat()->GetAnchor(); // #i68520# - const SwFormatAnchor& rCurrA = mpCurrAnchoredObj->GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rCurrA = pCurObjFormat->GetAnchor(); // If <mpCurrAnchoredObj> is anchored as character, its content // does not wrap around pNew @@ -768,9 +769,9 @@ bool SwTextFly::GetTop( const SwAnchoredObject* _pAnchoredObj, if ( bEvade ) { // #i26945# - if (_pAnchoredObj->HasFrameFormat()) + if (const SwFrameFormat* pAnchoredObjFormat = _pAnchoredObj->GetFrameFormat()) { - const SwFormatAnchor& rNewA = _pAnchoredObj->GetFrameFormat().GetAnchor(); + const SwFormatAnchor& rNewA = pAnchoredObjFormat->GetAnchor(); OSL_ENSURE(RndStdIds::FLY_AS_CHAR != rNewA.GetAnchorId(), "Don't call GetTop with a FlyInContentFrame"); if (RndStdIds::FLY_AT_PAGE == rNewA.GetAnchorId()) @@ -926,7 +927,7 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList() !pAnchoredObj->ConsiderForTextWrap() || ( mbIgnoreObjsInHeaderFooter && !bFooterHeader && pAnchoredObj->GetAnchorFrame()->FindFooterOrHeader() ) || - ( bAllowCompatWrap && !pAnchoredObj->GetFrameFormat().GetFollowTextFlow().GetValue() ) + ( bAllowCompatWrap && !pAnchoredObj->GetFrameFormat()->GetFollowTextFlow().GetValue() ) ) { continue; @@ -964,13 +965,13 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList() mpAnchoredObjList->insert( aInsPosIter, pAnchoredObj ); } - const SwFormatSurround &rFlyFormat = pAnchoredObj->GetFrameFormat().GetSurround(); + const SwFrameFormat* pObjFormat = pAnchoredObj->GetFrameFormat(); + const SwFormatSurround& rFlyFormat = pObjFormat->GetSurround(); // #i68520# if ( rFlyFormat.IsAnchorOnly() && pAnchoredObj->GetAnchorFrame() == GetMaster() ) { - const SwFormatVertOrient &rTmpFormat = - pAnchoredObj->GetFrameFormat().GetVertOrient(); + const SwFormatVertOrient &rTmpFormat = pObjFormat->GetVertOrient(); if( text::VertOrientation::BOTTOM != rTmpFormat.GetVertOrient() ) m_nMinBottom = ( aRectFnSet.IsVert() && m_nMinBottom ) ? std::min( m_nMinBottom, aBound.Left() ) : @@ -1010,11 +1011,11 @@ SwTwips SwTextFly::CalcMinBottom() const for( size_t i = 0; i < nCount; ++i ) { SwAnchoredObject* pAnchoredObj = (*pDrawObj)[ i ]; - const SwFormatSurround &rFlyFormat = pAnchoredObj->GetFrameFormat().GetSurround(); + const SwFrameFormat* pObjFormat = pAnchoredObj->GetFrameFormat(); + const SwFormatSurround& rFlyFormat = pObjFormat->GetSurround(); if( rFlyFormat.IsAnchorOnly() ) { - const SwFormatVertOrient &rTmpFormat = - pAnchoredObj->GetFrameFormat().GetVertOrient(); + const SwFormatVertOrient &rTmpFormat = pObjFormat->GetVertOrient(); if( text::VertOrientation::BOTTOM != rTmpFormat.GetVertOrient() ) { const SwRect& aBound( pAnchoredObj->GetObjRectWithSpaces() ); @@ -1130,7 +1131,7 @@ bool SwTextFly::ForEach( const SwRect &rRect, SwRect* pRect, bool bAvoid ) const if ( mpCurrAnchoredObj != pAnchoredObj && aRect.Overlaps( rRect ) ) { // #i68520# - const SwFormat* pFormat( &(pAnchoredObj->GetFrameFormat()) ); + const SwFormat* pFormat(pAnchoredObj->GetFrameFormat()); const SwFormatSurround &rSur = pFormat->GetSurround(); if( bAvoid ) { @@ -1417,7 +1418,7 @@ SwRect SwTextFly::AnchoredObjToRect( const SwAnchoredObject* pAnchoredObj, css::text::WrapTextMode SwTextFly::GetSurroundForTextWrap( const SwAnchoredObject* pAnchoredObj ) const { - const SwFrameFormat* pFormat = &(pAnchoredObj->GetFrameFormat()); + const SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); const SwFormatSurround &rFlyFormat = pFormat->GetSurround(); css::text::WrapTextMode eSurroundForTextWrap = rFlyFormat.GetSurround(); diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index 3405fc6167bf..9cdd00abd436 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -3003,7 +3003,7 @@ bool SwTextFrame::Prepare( const PrepareHint ePrep, const void* pVoid, SwAnchoredObject* pAnchoredObj = (*GetDrawObjs())[i]; // i#28701 - consider all // to-character anchored objects - if ( pAnchoredObj->GetFrameFormat().GetAnchor().GetAnchorId() + if ( pAnchoredObj->GetFrameFormat()->GetAnchor().GetAnchorId() == RndStdIds::FLY_AT_CHAR ) { bFormat = true; diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index b5cc61b13f2b..69a5fe26b71e 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -409,12 +409,12 @@ void MoveMergedFlysAndFootnotes(std::vector<SwTextFrame*> const& rFrames, } for (SwAnchoredObject *const pObj : objs) { - SwFrameFormat & rFormat(pObj->GetFrameFormat()); - SwFormatAnchor const& rAnchor(rFormat.GetAnchor()); + SwFrameFormat* pFormat(pObj->GetFrameFormat()); + SwFormatAnchor const& rAnchor(pFormat->GetAnchor()); if (rFirstNode.GetIndex() < rAnchor.GetAnchorNode()->GetIndex()) { // move it to the new frame of "this" - rFormat.CallSwClientNotify(sw::LegacyModifyHint(&rAnchor, &rAnchor)); + pFormat->CallSwClientNotify(sw::LegacyModifyHint(&rAnchor, &rAnchor)); // note pObjs will be deleted if it becomes empty assert(!pFrame->GetDrawObjs() || !pObjs->Contains(*pObj)); } diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx index 472babcd8243..1f4bbe609956 100644 --- a/sw/source/core/unocore/unoobj2.cxx +++ b/sw/source/core/unocore/unoobj2.cxx @@ -121,9 +121,9 @@ struct FrameClientSortListLess return; for(const auto pAnchoredObj : *pObjs) { - SwFrameFormat& rFormat = pAnchoredObj->GetFrameFormat(); + SwFrameFormat* pFormat = pAnchoredObj->GetFrameFormat(); // Filter out textboxes, which are not interesting at a UNO level. - if(SwTextBoxHelper::isTextBox(&rFormat, RES_FLYFRMFMT)) + if(SwTextBoxHelper::isTextBox(pFormat, RES_FLYFRMFMT)) continue; if (nAnchorType == RndStdIds::FLY_AT_PARA) @@ -141,11 +141,11 @@ struct FrameClientSortListLess } } - if(rFormat.GetAnchor().GetAnchorId() == nAnchorType) + if(pFormat->GetAnchor().GetAnchorId() == nAnchorType) { - const sal_Int32 nIdx = rFormat.GetAnchor().GetAnchorContentOffset(); - const auto nOrder = rFormat.GetAnchor().GetOrder(); - rFrames.emplace_back(nIdx, nOrder, std::make_unique<sw::FrameClient>(&rFormat)); + const sal_Int32 nIdx = pFormat->GetAnchor().GetAnchorContentOffset(); + const auto nOrder = pFormat->GetAnchor().GetOrder(); + rFrames.emplace_back(nIdx, nOrder, std::make_unique<sw::FrameClient>(pFormat)); } } }
