From 79dbcc09844d815fbd7361c954eb04ce6c6acda0 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Tue, 27 Apr 2021 20:03:14 +0200 Subject: Introduce SwFlyFrameInvFlags to replace magic numbers in ... ... SwFlyFrame::SwClientNotify() SwFlyFrame::UpdateAttr_() is not yet updated to produce these. Change-Id: Ie29d900c1796c868d051ffd9c28600e44ff3b704 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114752 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- sw/source/core/inc/flyfrm.hxx | 20 ++++++++++++++++- sw/source/core/layout/fly.cxx | 51 +++++++++++++++++++++---------------------- 2 files changed, 44 insertions(+), 27 deletions(-) (limited to 'sw/source') diff --git a/sw/source/core/inc/flyfrm.hxx b/sw/source/core/inc/flyfrm.hxx index c64a7f9c667c..6072d7a4d033 100644 --- a/sw/source/core/inc/flyfrm.hxx +++ b/sw/source/core/inc/flyfrm.hxx @@ -53,6 +53,24 @@ const SwContentFrame *FindAnchor( const SwFrame *pOldAnch, const Point &rNew, /** calculate rectangle in that the object can be moved or rather be resized */ bool CalcClipRect( const SdrObject *pSdrObj, SwRect &rRect, bool bMove = true ); +enum class SwFlyFrameInvFlags : sal_uInt8 +{ + NONE = 0x00, + InvalidatePos = 0x01, + InvalidateSize = 0x02, + InvalidatePrt = 0x04, + SetNotifyBack = 0x08, + SetCompletePaint = 0x10, + InvalidateBrowseWidth = 0x20, + ClearContourCache = 0x40, + UpdateObjInSortedList = 0x80, +}; + +namespace o3tl { + template<> struct typed_flags : is_typed_flags {}; +} + + /** general base class for all free-flowing frames #i26791# - inherit also from @@ -67,7 +85,7 @@ class SW_DLLPUBLIC SwFlyFrame : public SwLayoutFrame, public SwAnchoredObject void InitDrawObj(SwFrame const&); // these to methods are called in the void FinitDrawObj(); // constructors - void UpdateAttr_( const SfxPoolItem*, const SfxPoolItem*, sal_uInt8 &, + void UpdateAttr_( const SfxPoolItem*, const SfxPoolItem*, SwFlyFrameInvFlags &, SwAttrSetChg *pa = nullptr, SwAttrSetChg *pb = nullptr ); using SwLayoutFrame::CalcRel; diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx index 098ec611911c..09b8ee556c26 100644 --- a/sw/source/core/layout/fly.cxx +++ b/sw/source/core/layout/fly.cxx @@ -660,7 +660,7 @@ void SwFlyFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) { if(auto pLegacy = dynamic_cast(&rHint)) { - sal_uInt8 nInvFlags = 0; + SwFlyFrameInvFlags eInvFlags = SwFlyFrameInvFlags::NONE; if(pLegacy->m_pNew && pLegacy->m_pOld && RES_ATTRSET_CHG == pLegacy->m_pNew->Which()) { SfxItemIter aNIter(*static_cast(pLegacy->m_pNew)->GetChgSet()); @@ -671,7 +671,7 @@ void SwFlyFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) SwAttrSetChg aNewSet(*static_cast(pLegacy->m_pNew)); do { - UpdateAttr_(pOItem, pNItem, nInvFlags, &aOldSet, &aNewSet); + UpdateAttr_(pOItem, pNItem, eInvFlags, &aOldSet, &aNewSet); pNItem = aNIter.NextItem(); pOItem = aOIter.NextItem(); } while(pNItem); @@ -679,37 +679,37 @@ void SwFlyFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) SwLayoutFrame::SwClientNotify(rMod, sw::LegacyModifyHint(&aOldSet, &aNewSet)); } else - UpdateAttr_(pLegacy->m_pOld, pLegacy->m_pNew, nInvFlags); + UpdateAttr_(pLegacy->m_pOld, pLegacy->m_pNew, eInvFlags); - if(nInvFlags == 0) + if(eInvFlags == SwFlyFrameInvFlags::NONE) return; Invalidate_(); - if(nInvFlags & 0x01) + if(eInvFlags & SwFlyFrameInvFlags::InvalidatePos) { InvalidatePos_(); // #i68520# InvalidateObjRectWithSpaces(); } - if(nInvFlags & 0x02) + if(eInvFlags & SwFlyFrameInvFlags::InvalidateSize) { InvalidateSize_(); // #i68520# InvalidateObjRectWithSpaces(); } - if(nInvFlags & 0x04) + if(eInvFlags & SwFlyFrameInvFlags::InvalidatePrt) InvalidatePrt_(); - if(nInvFlags & 0x08) + if(eInvFlags & SwFlyFrameInvFlags::SetNotifyBack) SetNotifyBack(); - if(nInvFlags & 0x10) + if(eInvFlags & SwFlyFrameInvFlags::SetCompletePaint) SetCompletePaint(); - if((nInvFlags & 0x40) && Lower() && Lower()->IsNoTextFrame()) + if((eInvFlags & SwFlyFrameInvFlags::ClearContourCache) && Lower() && Lower()->IsNoTextFrame()) ClrContourCache( GetVirtDrawObj() ); SwRootFrame *pRoot; - if(nInvFlags & 0x20 && nullptr != (pRoot = getRootFrame())) + if(eInvFlags & SwFlyFrameInvFlags::InvalidateBrowseWidth && nullptr != (pRoot = getRootFrame())) pRoot->InvalidateBrowseWidth(); // #i28701# - if(nInvFlags & 0x80) + if(eInvFlags & SwFlyFrameInvFlags::UpdateObjInSortedList) { // update sorted object lists, the Writer fly frame is registered at. UpdateObjInSortedList(); @@ -733,7 +733,7 @@ void SwFlyFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) } void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, - sal_uInt8 &rInvFlags, + SwFlyFrameInvFlags &rInvFlags, SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet ) { bool bClear = true; @@ -747,21 +747,20 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, case RES_FOLLOW_TEXT_FLOW: { // ATTENTION: Always also change Action in ChgRePos()! - rInvFlags |= 0x09; + rInvFlags |= static_cast(0x09); } break; // #i28701# - consider new option 'wrap influence on position' case RES_WRAP_INFLUENCE_ON_OBJPOS: { - rInvFlags |= 0x89; + rInvFlags |= static_cast(0x89); } break; case RES_SURROUND: { //#i28701# - invalidate position on change of // wrapping style. - //rInvFlags |= 0x40; - rInvFlags |= 0x41; + rInvFlags |= static_cast(0x41); // The background needs to be messaged and invalidated const SwRect aTmp( GetObjRectWithSpaces() ); NotifyBackground( FindPageFrame(), aTmp, PrepareHint::FlyFrameAttributesChanged ); @@ -769,7 +768,7 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, // By changing the flow of frame-bound Frames, a vertical alignment // can be activated/deactivated => MakeFlyPos if( RndStdIds::FLY_AT_FLY == GetFormat()->GetAnchor().GetAnchorId() ) - rInvFlags |= 0x09; + rInvFlags |= static_cast(0x09); // Delete contour in the Node if necessary if ( Lower() && Lower()->IsNoTextFrame() && @@ -781,7 +780,7 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, } // #i28701# - perform reorder of object lists // at anchor frame and at page frame. - rInvFlags |= 0x80; + rInvFlags |= static_cast(0x80); } break; @@ -806,7 +805,7 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, const SwFormatFrameSize &rNew = GetFormat()->GetFrameSize(); if ( FrameSizeChg( rNew ) ) NotifyDrawObj(); - rInvFlags |= 0x1A; + rInvFlags |= static_cast(0x1A); } break; @@ -816,7 +815,7 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, const SwFormatFrameSize &rNew = GetFormat()->GetFrameSize(); if ( FrameSizeChg( rNew ) ) NotifyDrawObj(); - rInvFlags |= 0x7F; + rInvFlags |= static_cast(0x7F); if (pOld && RES_FMT_CHG == nWhich) { SwRect aNew( GetObjRectWithSpaces() ); @@ -907,14 +906,14 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, // #i28701# - perform reorder of object lists // at anchor frame and at page frame. - rInvFlags |= 0x80; + rInvFlags |= static_cast(0x80); break; } case RES_UL_SPACE: case RES_LR_SPACE: { - rInvFlags |= 0x41; + rInvFlags |= static_cast(0x41); if( pSh && pSh->GetViewOptions()->getBrowseMode() ) getRootFrame()->InvalidateBrowseWidth(); SwRect aNew( GetObjRectWithSpaces() ); @@ -942,13 +941,13 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, case RES_TEXT_VERT_ADJUST: { InvalidateContentPos(); - rInvFlags |= 0x10; + rInvFlags |= static_cast(0x10); } break; case RES_BOX: case RES_SHADOW: - rInvFlags |= 0x17; + rInvFlags |= static_cast(0x17); break; case RES_FRAMEDIR : @@ -979,7 +978,7 @@ void SwFlyFrame::UpdateAttr_( const SfxPoolItem *pOld, const SfxPoolItem *pNew, } // #i28701# - perform reorder of object lists // at anchor frame and at page frame. - rInvFlags |= 0x80; + rInvFlags |= static_cast(0x80); } break; -- cgit v1.2.3