summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-04-27 20:03:14 +0200
committerMiklos Vajna <vmiklos@collabora.com>2021-04-28 09:16:34 +0200
commit79dbcc09844d815fbd7361c954eb04ce6c6acda0 (patch)
tree3731a7e608df3c0271adc4f7108853fc73499fed /sw/source
parent91fa87e99f5f01b92451b875c72741775c92247b (diff)
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 <vmiklos@collabora.com>
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/inc/flyfrm.hxx20
-rw-r--r--sw/source/core/layout/fly.cxx51
2 files changed, 44 insertions, 27 deletions
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<SwFlyFrameInvFlags> : is_typed_flags<SwFlyFrameInvFlags, 0x00ff> {};
+}
+
+
/** general base class for all free-flowing frames
#i26791# - inherit also from <SwAnchoredFlyFrame>
@@ -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<const sw::LegacyModifyHint*>(&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<const SwAttrSetChg*>(pLegacy->m_pNew)->GetChgSet());
@@ -671,7 +671,7 @@ void SwFlyFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint)
SwAttrSetChg aNewSet(*static_cast<const SwAttrSetChg*>(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<SwFlyFrameInvFlags>(0x09);
}
break;
// #i28701# - consider new option 'wrap influence on position'
case RES_WRAP_INFLUENCE_ON_OBJPOS:
{
- rInvFlags |= 0x89;
+ rInvFlags |= static_cast<SwFlyFrameInvFlags>(0x89);
}
break;
case RES_SURROUND:
{
//#i28701# - invalidate position on change of
// wrapping style.
- //rInvFlags |= 0x40;
- rInvFlags |= 0x41;
+ rInvFlags |= static_cast<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(0x80);
break;
}
case RES_UL_SPACE:
case RES_LR_SPACE:
{
- rInvFlags |= 0x41;
+ rInvFlags |= static_cast<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(0x10);
}
break;
case RES_BOX:
case RES_SHADOW:
- rInvFlags |= 0x17;
+ rInvFlags |= static_cast<SwFlyFrameInvFlags>(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<SwFlyFrameInvFlags>(0x80);
}
break;