24 #include <osl/diagnose.h>
31 #include <section.hxx>
43 #include <viewimp.hxx>
58 void InvalidateFramePos(
SwFrame* pFrame,
bool bInCalcContent)
70 , m_pSection( &rSect )
71 , m_bFootnoteAtEnd(false)
73 , m_bContentLock(false)
74 , m_bOwnFootnoteNum(false)
75 , m_bFootnoteLock(false)
86 m_pSection( rSect.GetSection() ),
87 m_bFootnoteAtEnd( rSect.IsFootnoteAtEnd() ),
88 m_bEndnAtEnd( rSect.IsEndnAtEnd() ),
89 m_bContentLock( false ),
90 m_bOwnFootnoteNum( false ),
91 m_bFootnoteLock( false )
125 aRectFnSet.
SetWidth( aFrm, nWidth );
190 OSL_ENSURE( !bRemove,
"Don't delete locked SectionFrames" );
203 if ( pViewShell && pViewShell->
GetLayout() &&
257 OSL_ENSURE(
GetUpper(),
"Cut without Upper()." );
273 pFrame = static_cast<SwSectionFrame*>(pFrame)->ContainsAny();
286 if (
nullptr != pFrame )
322 if( nFrameHeight <= 0 )
334 pUp->
Shrink( nFrameHeight );
339 OSL_ENSURE( pParent,
"No parent for Paste()." );
340 OSL_ENSURE( pParent->
IsLayoutFrame(),
"Parent is ContentFrame." );
341 OSL_ENSURE( pParent !=
this,
"I'm my own parent." );
342 OSL_ENSURE( pSibling !=
this,
"I'm my own neighbour." );
344 "I am still registered somewhere." );
371 while( !pSibling &&
nullptr != ( pCol = static_cast<SwColumnFrame*>(pCol->
GetNext()) ) )
372 pSibling = static_cast<SwLayoutFrame*>(pCol->
Lower())->
Lower();
379 while (
nullptr != ( pCol = static_cast<SwColumnFrame*>(pCol->
GetNext()) ) )
404 if( !static_cast<SwLayoutFrame*>(pParent)->Lower() )
427 pParent->
Grow( nFrameHeight );
456 if( pTmp == pOtherFormat )
488 pLast = pLay->
Lower();
511 assert(pFrame &&
"SplitSect: Why?");
520 OSL_ENSURE( pSav,
"SplitSect: What's on?" );
527 aRectFnSet.
MakePos( *pNew,
nullptr, pSect,
true );
536 pLay = static_cast<SwLayoutFrame*>(pLay->
Lower());
582 return const_cast<SwContentFrame*>(static_cast<const SwContentFrame*>(pLay->
GetNext()));
587 return const_cast<SwContentFrame*>(static_cast<const SwContentFrame*>(pLay->
GetPrev()));
592 bool bGoingUp =
true;
595 bool bGoingFwdOrBwd =
false;
601 bGoingDown =
nullptr != p;
606 ( bFwd ?
static_cast<const SwFlyFrame*
>(pFrame)->GetNextLink() :
static_cast<const SwFlyFrame*
>(pFrame)->GetPrevLink() ) :
608 bGoingFwdOrBwd =
nullptr != p;
609 if ( !bGoingFwdOrBwd )
612 bGoingUp =
nullptr != p;
618 bGoingUp = !( bGoingFwdOrBwd || bGoingDown );
620 if (!bFwd && bGoingDown)
627 return pContentFrame;
640 bool CanContainSplitSection(
const SwFrame* pFrame)
673 if( pDel->
IsInTab() && pParent )
690 pPrvSct = pPrvContent ? pPrvContent->
FindSctFrame() :
nullptr;
692 pNxtSct = pNxtContent ? pNxtContent->
FindSctFrame() :
nullptr;
697 pPrvSct = pNxtSct =
nullptr;
702 bool bOldFootnote =
true;
712 if( pNxtSct && pNxtSct->
GetFormat() == pParent )
714 pUp = FirstLeaf( pNxtSct );
716 if( pPrvSct && ( pPrvSct->
GetFormat() != pParent ) )
719 else if( pPrvSct && pPrvSct->
GetFormat() == pParent )
745 aRectFnSet.
MakePos( *pPrvSct, pUp, pPrv,
true );
746 pUp = FirstLeaf( pPrvSct );
764 OSL_ENSURE( pNxtSct,
"MoveContent: No Merge" );
776 OSL_ENSURE(
getRootFrame()->IsInDelList(
this ),
"SectionFrame without Section" );
792 pNext->InvalidatePos();
817 bool bCanContainSplitSection =
false;
819 bCanContainSplitSection = CanContainSplitSection(
GetUpper());
851 pLower->
Calc(pRenderContext);
861 OSL_FAIL(
"Oops, where is my tinfoil hat?" );
870 if(
auto pNewFormat = dynamic_cast< const SwSectionFormat *>( pFormat->
GetRegisteredIn()) )
871 pFormat = pNewFormat;
879 SwFrame* pFrame,
bool &rbChkFootnote )
886 while( !rpContentFrame && pFrame )
889 rpContentFrame = static_cast<SwContentFrame*>(pFrame);
902 static_cast<SwLayoutFrame*>(pFrame)->
Lower(), rbChkFootnote );
926 pSect = static_cast<SwSectionFrame*>(pTmp);
971 "InsertEndnotes: Where's my column?" );
976 pCol = static_cast<SwColumnFrame*>(pSect->
Lower());
1008 pSect = pLayouter ? pSect->
GetFollow() :
nullptr;
1028 pCol->
Calc(pRenderContext);
1044 OSL_ENSURE(
IsColLocked(),
"CollectEndnotes: You love the risk?" );
1050 bool bEmpty =
false;
1054 while(
nullptr != (pFootnote =
lcl_FindEndnote( pSect, bEmpty, pLayouter )) )
1084 if( aRectFnSet.
IsVert() )
1097 bool bExtraCalc =
false;
1101 bool bEmpty =
false;
1115 if ( !(bCalc || bExtraCalc) )
1126 aRectFnSet.
SetBottom( aFrm, nDeadLine );
1137 bool bHeightChanged = aRectFnSet.
IsVert() ?
1147 if ( !(( bHeightChanged || bExtraCalc ) &&
Lower()) )
1183 aRectFnSet.
SetBottom( aFrm, nDeadLine );
1188 if( nTop > nHeight )
1200 class ExtraFormatToPositionObjs
1204 bool mbExtraFormatPerformed;
1208 : mpSectFrame( &_rSectFrame ),
1209 mbExtraFormatPerformed( false )
1212 ~ExtraFormatToPositionObjs()
1214 if ( !mbExtraFormatPerformed )
1224 if ( mpSectFrame->
IsAnLower( pAnchoredObj->GetAnchorFrame() ) )
1226 pAnchoredObj->SetKeepPosLocked(
false );
1233 void InitObjs(
SwFrame& rFrame )
1240 pAnchoredObj->UnlockPosition();
1241 pAnchoredObj->SetClearedEnvironment(
false );
1245 if ( pLayoutFrame !=
nullptr )
1248 while ( pLowerFrame !=
nullptr )
1250 InitObjs( *pLowerFrame );
1252 pLowerFrame = pLowerFrame->
GetNext();
1257 void FormatSectionToPositionObjs()
1273 aRectFnSet.AddBottom( aFrm, nDiff );
1276 aRectFnSet.SetYMargins( *mpSectFrame, nTopMargin, 0 );
1289 pColFrame->
Calc(pRenderContext);
1290 pColFrame->
Lower()->
Calc(pRenderContext);
1304 InitObjs( *mpSectFrame );
1318 if ( mpSectFrame->
IsAnLower( pAnchoredObj->GetAnchorFrame() ) )
1320 pAnchoredObj->SetKeepPosLocked(
true );
1325 mbExtraFormatPerformed =
true;
1338 OSL_ENSURE(
getRootFrame()->IsInDelList(
this ),
"SectionFrame without Section" );
1390 ExtraFormatToPositionObjs aExtraFormatToPosObjs( *
this );
1395 aExtraFormatToPosObjs.FormatSectionToPositionObjs();
1411 aRectFnSet.
SetWidth( aFrm, nWidth );
1431 if ( bHasColumns && !
Lower()->
GetNext() && bMaximize )
1465 pFrame->
Calc(pRenderContext);
1467 pFrame->
Calc(pRenderContext);
1487 nBottom = aRectFnSet.
YInc( nBottom, -nDiff );
1492 nDeadLine = aRectFnSet.
YInc( nDeadLine, nTmpDiff );
1493 nTmpDiff = aRectFnSet.
YDiff( nBottom, nDeadLine );
1524 pFrame->
Calc(pRenderContext);
1526 pFrame->
Calc(pRenderContext);
1530 bool bUnderSz =
false;
1589 bool bWrongPage =
false;
1590 assert(pSect &&
"GetNextSctLeaf: Missing SectionFrame");
1625 if( pUp == pTmp || pUp->
GetNext() == pTmpX )
1639 std::vector<SwFrame *> parents;
1642 parents.push_back(pTmp);
1652 bool bLayLeafTableAllowed =
false;
1667 SAL_WARN(
"sw.layout",
"section is in table, but the table is not split");
1677 SwFrame *
const pTmpCnt =
static_cast<SwTabFrame*
>(
this)->FindLastContentOrTable();
1678 pLayLeaf = pTmpCnt ? pTmpCnt->
GetUpper() :
nullptr;
1680 else if (pCellLeaf && CanContainSplitSection(
this))
1684 pLayLeaf = pCellLeaf;
1686 SAL_WARN(
"sw.layout",
"my table frame and my follow's table frame is the same");
1688 bLayLeafTableAllowed =
true;
1695 while( pLayLeaf && static_cast<SwColumnFrame*>(
this)->IsAnLower( pLayLeaf ) )
1720 (pLayLeaf->
IsInTab() && !bLayLeafTableAllowed) ||
1725 pOldLayLeaf = pLayLeaf;
1739 pOldLayLeaf =
nullptr;
1751 if (pCellLeaf && CanContainSplitSection(
this))
1756 pLayLeaf = pCellLeaf;
1786 aRectFnSet.
MakePos( *pNew, pLayLeaf,
nullptr,
true );
1791 auto iter(parents.begin());
1792 if (parents.size() >= 2 &&
1793 parents[0]->IsBodyFrame() && parents[1]->IsColumnFrame())
1797 std::advance(iter, +2);
1802 && parents[0]->IsColumnFrame())
1805 std::advance(iter, +1);
1812 for ( ; iter != parents.end(); ++iter)
1816 if ((*iter)->IsColumnFrame() &&
1817 (iter + 1) != parents.end() && (*(iter + 1))->IsBodyFrame())
1831 SwCellFrame const*
const pNewF(static_cast<SwCellFrame*>(pTmp));
1832 SwCellFrame const*
const pOldF(static_cast<SwCellFrame*>(*iter));
1833 bool bFollowFound(
false);
1837 if (pOldIter == pNewF)
1839 bFollowFound =
true;
1849 bool bFollowFound(
false);
1851 pOldIter; pOldIter = pOldIter->
GetFollow())
1853 if (pOldIter == pNewF)
1855 bFollowFound =
true;
1874 if( pTmp && pTmp != pSect->
GetFollow() )
1885 pNxtContent =
static_cast<SwLayoutFrame*
>(pTmp)->ContainsContent();
1887 pNxt = static_cast<SwSectionFrame*>(pTmp);
1893 while( !pNxtContent &&
nullptr != ( pTmp = pTmp->
GetNext() ) )
1896 pNxtContent = static_cast<SwContentFrame*>(pTmp);
1898 pNxtContent =
static_cast<SwLayoutFrame*
>(pTmp)->ContainsContent();
1918 pLayLeaf = pNew ? FirstLeaf(pNew) :
nullptr;
1945 if( static_cast<SwLayoutFrame*>(pCol->
Lower())->
Lower() )
1966 if (!pCol && pSect &&
IsInTab() && CanContainSplitSection(
this))
1973 if (pPrecede->GetFrame().IsLayoutFrame())
1974 pCol = static_cast<SwLayoutFrame*>(&pPrecede->GetFrame());
1982 OSL_ENSURE( pSect,
"GetNextSctLeaf: Missing SectionFrame" );
2005 while( pPrv && pPrv->IsSctFrame() && !
static_cast<SwSectionFrame*
>(pPrv)->GetSection() )
2048 pPrevLeaf = pLayLeaf;
2062 pLayLeaf = pPrevLeaf;
2075 while( !static_cast<SwSectionFrame*>(pTmp)->GetSection() && pTmp->
GetPrev() &&
2078 if( static_cast<SwSectionFrame*>(pTmp)->GetFollow() == pSect )
2090 pLayLeaf = FirstLeaf( pNew );
2091 if( !pNew->
Lower() )
2101 pLayLeaf = FirstLeaf( pNew );
2110 if( pLayLeaf->
Lower() )
2114 if( pLayLeaf != pTmpLay )
2127 while( pUp && pUp->
IsInSct() )
2159 if( nFrameHeight > 0 && nDist > (
LONG_MAX - nFrameHeight) )
2189 if( !bInCalcContent && nGrow < nDist &&
GetUpper() )
2200 if( bInCalcContent )
2208 if( bInCalcContent )
2210 else if( nSpace < nGrow && nDist != nSpace +
GetUpper()->
2211 Grow( nGrow - nSpace ) )
2234 aRectFnSet.
SetHeight( aPrt, nPrtHeight );
2257 InvalidateFramePos(pFrame, bInCalcContent);
2262 InvalidateFramePos(pFrame, bInCalcContent);
2279 if( bInCalcContent )
2301 if ( nDist > nFrameHeight )
2302 nDist = nFrameHeight;
2330 aRectFnSet.
SetHeight( aPrt, nPrtHeight );
2425 if( pBody && pBody->
Lower() )
2459 OSL_ENSURE(
IsInSct(),
"Why?" );
2474 if( static_cast<const SwLayoutFrame*>(static_cast<const SwLayoutFrame*>(pCol)->
Lower())->Lower() )
2503 if( static_cast<SwLayoutFrame*>(static_cast<SwLayoutFrame*>(pCol)->
Lower())->Lower() )
2517 while( pFormat != pMyFormat )
2519 if(
auto pNewFormat = dynamic_cast< const SwSectionFormat *>( pMyFormat->
GetRegisteredIn()) )
2520 pMyFormat = pNewFormat;
2536 if(
auto pNewFormat = dynamic_cast<SwSectionFormat *>( pFormat->
GetRegisteredIn()) )
2537 pFormat = pNewFormat;
2561 if(
auto pNewFormat = dynamic_cast<SwSectionFormat *>( pFormat->
GetRegisteredIn()) )
2562 pFormat = pNewFormat;
2571 if(
const auto pLegacy = dynamic_cast<const sw::LegacyModifyHint*>(&rHint))
2576 auto& rOldSetChg = *
static_cast<const SwAttrSetChg*
>(pLegacy->m_pOld);
2577 auto& rNewSetChg = *
static_cast<const SwAttrSetChg*
>(pLegacy->m_pNew);
2586 UpdateAttr_(pOItem, pNItem, nInvFlags, &aOldSet, &aNewSet);
2587 pNItem = aNIter.NextItem();
2588 pOItem = aOIter.NextItem();
2594 UpdateAttr_(pLegacy->m_pOld, pLegacy->m_pNew, nInvFlags);
2598 if(nInvFlags & 0x01)
2600 if(nInvFlags & 0x10)
2604 else if(
const auto pHint = dynamic_cast<const SwSectionFrameMoveAndDeleteHint*>(&rHint))
2620 const sal_uInt16 nWhich = pOld ? pOld->
Which() : pNew ? pNew->
Which() : 0;
2634 sal_uInt16 nCol = 0;
2640 aCol.
Init( nCol, 0, 1000 );
2664 ChgColumns( *static_cast<const SwFormatCol*>(pOld), *static_cast<const SwFormatCol*>(pNew) );
2720 if ( pOldSet || pNewSet )
2752 return nullptr != pCont;
2754 while( pCont && !bRet )
2772 OSL_ENSURE(
IsAnLower( pLay ),
"ContainsFootnoteCont: Wrong FootnoteContainer" );
2776 pLay = static_cast<const SwLayoutFrame*>(
Lower());
2779 while ( !pRet && pLay )
2784 "ToMaximize: Unexpected Frame" );
2788 "ToMaximize: ColFrame expected" );
2815 return nRet <= 0 ? 0 : nRet;
2827 pCont->
Calc(pRenderContext);
2832 pFootnote->
Calc(pRenderContext);
2833 pFrame->
Calc(pRenderContext);
2874 "DeleteEmptySct: Locked SectionFrame" );
2880 if( pUp && !pUp->
Lower() )
2893 OSL_ENSURE( pSect->
GetSection(),
"DeleteEmptySct: Half-dead SectionFrame?!" );
void InsertBefore(SwLayoutFrame *pParent, SwFrame *pBehind)
Insert SwFrame into existing structure.
bool IsAnLower(const SwFrame *) const
vcl::RenderContext * GetOut() const
SwFrame * FindFooterOrHeader()
SwSectionFrame * FindMaster() const
constexpr TypedWhichId< SvxProtectItem > RES_PROTECT(100)
Base class of the Writer layout elements.
Base class that provides the general functionalities for frames that are allowed at page breaks (flow...
Represents the visualization of a paragraph.
constexpr TypedWhichId< SvxFrameDirectionItem > RES_FRAMEDIR(120)
constexpr TypedWhichId< SwFormatEndAtTextEnd > RES_END_AT_TXTEND(118)
void InvalidateInfFlags()
static void lcl_InvalidateInfFlags(SwFrame *pFrame, bool bInva)
|* MoveContent is called for destroying a SectionFrames, due to |* the cancellation or hiding of a se...
void CalcFootnoteAtEndFlag()
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
bool MoveAllowed(const SwFrame *) const
SwTwips Shrink_(SwTwips, bool bTst)
const SwSortedObjs * GetDrawObjs() const
void RemoveFromList(SwSectionFrame *pSct)
virtual ~SwSectionFrame() override
SwTwips Grow(SwTwips, bool bTst=false, bool bInfo=false)
virtual void Format(vcl::RenderContext *pRenderContext, const SwBorderAttrs *pAttrs=nullptr) override
"Formats" the Frame; Frame and PrtArea.
static void SetMoveBwdJump(bool bNew)
tools::Long BottomDist(const SwRect &rRect, tools::Long nPos) const
bool IsAnyShellAccessible() const
void DelEmpty(bool bRemove)
const SvxBrushItem & GetBackground(bool=true) const
virtual void Format(vcl::RenderContext *pRenderContext, const SwBorderAttrs *pAttrs=nullptr) override
"formats" the frame; Frame and PrtArea
bool SplitSect(SwFrame *pFrame, bool bApres)
Splits the SectionFrame surrounding the pFrame up in two parts: pFrame and the start of the 2nd part...
constexpr TypedWhichId< SwFormatCol > RES_COL(109)
bool IsBefore(const SwLayoutFrame *_pCheckRefLayFrame) const
method to check relative position of layout frame to a given layout frame.
void InvalidateFootnotePos()
void SetCompletePaint() const
bool IsInFootnote() const
virtual bool Prepare(const PrepareHint ePrep=PrepareHint::Clear, const void *pVoid=nullptr, bool bNotify=true)
void FormatWidthCols(const SwBorderAttrs &, const SwTwips nBorder, const SwTwips nMinHeight)
Called by Format for Frames and Areas with columns.
SwFrameType GetType() const
void SetDerivedR2L(bool bNew)
#define PROTOCOL(pFrame, nFunc, nAct, pPar)
-""- and with own numberformat
tools::Long GetRight() const
const SwRect & getFramePrintArea() const
SwTabFrame is one table in the document layout, containing rows (which contain cells).
bool IsSuperfluous() const
SwTwips Undersize()
Returns the size delta that the section would like to be greater if it has undersized TextFrames in i...
SwSectionFormat * GetFormat()
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
virtual void DestroyImpl() override
virtual void Calc(vcl::RenderContext *pRenderContext) const
void UpdateAttr_(const SfxPoolItem *, const SfxPoolItem *, sal_uInt8 &, SwAttrSetChg *pa=nullptr, SwAttrSetChg *pb=nullptr)
bool IsFootnotePage() const
Foot note interface.
tools::Long GetWidth(const SwRect &rRect) const
static SwFlowFrame * CastFlowFrame(SwFrame *pFrame)
void AddBottom(SwRect &rRect, tools::Long nNew) const
The root element of a Writer document layout.
bool HasToBreak(const SwFrame *pFrame) const
|* Here it's decided whether the this-SectionFrame should break up |* the passed (Section)frm (or not...
css::chart::ChartAxisLabelPosition ePos
bool IsFootnoteFrame() const
void SetXMargins(SwFrame &rFrame, tools::Long nLeft, tools::Long nRight) const
bool ToMaximize(bool bCheckFollow) const
A sectionfrm has to maximize, if he has a follow or a ftncontainer at the end of the page...
bool isFrameAreaDefinitionValid() const
SwLayoutFrame * GetPrevSctLeaf()
Returns the preceding layout sheet where the frame can be moved into.
void CheckDirChange()
checks the layout direction and invalidates the lower frames recursively, if necessary.
tools::Long GetTop(const SwRect &rRect) const
SwTwips CalcUpperSpace(const SwBorderAttrs *pAttrs=nullptr, const SwFrame *pPr=nullptr, const bool _bConsiderGrid=true) const
method to determine the upper space hold by the frame
void ChgLowersProp(const Size &rOldSize)
Change size of lowers proportionally.
void SetBottom(SwRect &rRect, tools::Long nNew) const
wrapper class for the positioning of Writer fly frames and drawing objects
friend SwFrame * SaveContent(SwLayoutFrame *, SwFrame *)
SvxGraphicPosition GetGraphicPos() const
SwTwips Grow_(SwTwips, bool bTst)
const SwLayoutFrame * GetPrevLayoutLeaf() const
const SwRect & getFrameArea() const
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
bool getBrowseMode() const
SwLayoutFrame * GetNextLeaf(MakePageType eMakePage)
Returns the next layout leaf in which we can move the frame.
void CollectEndnote(SwFootnoteFrame *pFootnote)
static SwTwips lcl_DeadLine(const SwFrame *pFrame)
void RemoveFromList_(SwSectionFrame *pSct)
virtual bool ShouldBwdMoved(SwLayoutFrame *pNewUpper, bool &rReformat) override
const SwContentFrame * FindLastContent() const
static SwFootnoteFrame * lcl_FindEndnote(SwSectionFrame *&rpSect, bool &rbEmpty, SwLayouter *pLayouter)
CollectEndnotes looks for endnotes in the sectionfrm and his follows, the endnotes will cut off the l...
void SetSuperfluous()
Remove superfluous Pages.
constexpr TypedWhichId< SwAttrSetChg > RES_ATTRSET_CHG(161)
constexpr TypedWhichId< SwFormatChg > RES_FMT_CHG(160)
void Width(tools::Long nNew)
static void lcl_FindContentFrame(SwContentFrame *&rpContentFrame, SwFootnoteFrame *&rpFootnoteFrame, SwFrame *pFrame, bool &rbChkFootnote)
void setFramePrintAreaValid(bool bNew)
bool IsPageBodyFrame() const
SwFlyFrame * FindFlyFrame()
virtual void DestroyImpl() override
SwFrame * GetIndPrev_() const
Called for a frame inside a section with no direct previous frame (or only previous empty section fra...
SwTwips CalcUndersize() const
static void MoveContentAndDelete(SwSectionFrame *pDel, bool bSave)
SwLayoutFrame * GetNextCellLeaf()
SwLayoutFrame * GetNextSctLeaf(MakePageType eMakePage)
Returns the next layout sheet where the frame can be moved in.
bool IsDescendantFrom(const SwSectionFormat *pSect) const
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame, use GetBreakItem()/GetPageDescItem() instead.
void InvalidateContent() const
void SetUndersized(const bool bNew)
bool IsColumnFrame() const
SwFootnoteFrame * FindFootnoteFrame()
static SwContentFrame * lcl_GetNextContentFrame(const SwLayoutFrame *pLay, bool bFwd)
bool IsBalancedSection() const
bool IsContentFrame() const
SwFrame * GetIndPrev() const
const SwSortedObjs * GetSortedObjs() const
sw::BroadcastingModify * GetDep()
use these so we can grep for SwFrame's GetRegisteredIn accesses beware that SwTextFrame may return sw...
tools::Long GetPrtBottom(const SwFrame &rFrame) const
const SwFrame * GetLastLower() const
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr) override
SwTwips InnerHeight() const
InnerHeight returns the height of the content and may be bigger or less than the PrtArea-Height of th...
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
const SwSectionFrame * GetFollow() const
SwPageFrame * FindPageFrame()
virtual bool IsDeleteForbidden() const
virtual void Cut() override
tools::Long YInc(tools::Long n1, tools::Long n2) const
const SwFrame * Lower() const
SwContentFrame * FindNextCnt(const bool _bInSameFootnote=false)
std::enable_if< std::is_signed< T >::value, T >::type saturating_add(T a, T b)
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
void InvalidatePage(const SwPageFrame *pPage=nullptr) const
Invalidates the page in which the Frame is currently placed.
tools::Long GetHeight(const SwRect &rRect) const
bool IsJoinLocked() const
void ChgColumns(const SwFormatCol &rOld, const SwFormatCol &rNew, const bool bChgFootnote=false)
add or remove columns from a layoutframe.
void SetFollow(SwFlowFrame *const pFollow)
tools::Long GetLeft() const
SwLayoutFrame * GetUpper()
void InsertEmptySct(SwSectionFrame *pDel)
Empty SwSectionFrames are registered here for deletion and destroyed later on or deregistered.
tools::Long Width() const
bool isFramePrintAreaValid() const
bool IsUndersized() const
SwFootnoteBossFrame * FindFootnoteBossFrame(bool bFootnotes=false)
friend void RestoreContent(SwFrame *, SwLayoutFrame *, SwFrame *pSibling)
tools::Long GetTopMargin(const SwFrame &rFrame) const
bool isFrameAreaPositionValid() const
tools::Long YDiff(tools::Long n1, tools::Long n2) const
void SSize(const Size &rNew)
bool isFrameAreaSizeValid() const
bool InsertGroupBefore(SwFrame *pParent, SwFrame *pWhere, SwFrame *pSct)
Insert a chain of SwFrames into an existing structure.
SwCellFrame * GetFollowCell() const
A page of the document layout.
const SwFormatFootnote & GetFootnote() const
SwTwips Shrink(SwTwips, bool bTst=false, bool bInfo=false)
SwSectionFrame * FindSctFrame()
void InvalidateAccessibleParaFlowRelation(const SwTextFrame *_pFromTextFrame, const SwTextFrame *_pToTextFrame)
invalidate CONTENT_FLOWS_FROM/_TO relation for paragraphs
void CollectEndnotes(SwLayouter *pLayouter)
void setFrameAreaPositionValid(bool bNew)
static void lcl_ColumnRefresh(SwSectionFrame *pSect, bool bFollow)
bool IsLayoutFrame() const
bool Growable() const
checks whether the SectionFrame is still able to grow, as case may be the environment has to be asked...
void SetYMargins(SwFrame &rFrame, tools::Long nTop, tools::Long nBottom) const
const SwFlowFrame * GetPrecede() const
void SetWidth(SwRect &rRect, tools::Long nNew) const
tools::Long const nTopMargin
void MoveSubTree(SwLayoutFrame *pParent, SwFrame *pSibling=nullptr)
hook tree onto new parent with minimal operations and notifications
general base class for all free-flowing frames
bool MoveLowerFootnotes(SwContentFrame *pStart, SwFootnoteBossFrame *pOldBoss, SwFootnoteBossFrame *pNewBoss, const bool bFootnoteNums)
Moving the Footnotes of all Lowers - starting from StartContent.
const SwSectionFormat * GetEndSectFormat_() const
friend void CalcContent(SwLayoutFrame *pLay, bool bNoColl)
const SwViewOption * GetViewOptions() const
const SwFrame * ContainsAny(const bool _bInvestigateFootnoteForSections=false) const
Method doesn't investigate content of footnotes by default.
constexpr TypedWhichId< SwFormatNoBalancedColumns > RES_COLUMNBALANCE(119)
void InsertBehind(SwLayoutFrame *pParent, SwFrame *pBefore)
Insert SwFrame into existing structure.
const SwSectionFormat * GetEndSectFormat() const
void SetHeight(SwRect &rRect, tools::Long nNew) const
bool IsAnyNoteAtEnd() const
void InvalidateNextPos(bool bNoFootnote=false)
void Top(const tools::Long nTop)
const SwModify * GetRegisteredIn() const
bool IsColBodyFrame() const
These SwFrame inlines are here, so that frame.hxx does not need to include layfrm.hxx.
tools::Long Height() const
void setFrameAreaSizeValid(bool bNew)
void CheckClipping(bool bGrow, bool bMaximize)
Adapt size to surroundings.
virtual void Cut() override
-""- and with own number sequence
void CalcFootnoteContent()
bool IsContentLocked() const
void MakePos(SwFrame &rFrame, const SwFrame *pUp, const SwFrame *pPrv, bool bNotify) const
void InvalidateAccessibleEditableState(bool bAllShells, const SwFrame *pFrame=nullptr)
Invalidate editable state for all accessible frames.
tools::Long GetBottom(const SwRect &rRect) const
SwFootnoteContFrame * ContainsFootnoteCont(const SwFootnoteContFrame *pCont=nullptr) const
Check every Column for FootnoteContFrames.
void ClearItem(sal_uInt16 nWhichL)
#define SAL_WARN(area, stream)
void SetLeft(SwRect &rRect, tools::Long nNew) const
bool IsFootnoteAtEnd() const
bool IsInDelList(SwSectionFrame *pSct) const
void AdjustColumns(const SwFormatCol *pCol, bool bAdjustAttributes)
SwContentFrame * FindPrevCnt()
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
void MergeNext(SwSectionFrame *pNxt)
|* Merges two SectionFrames, in case it's about the same section.
const SwLayoutFrame * GetNextLayoutLeaf() const
bool IsEndnoteAtMyEnd() const
SwPageFrame * InsertPage(SwPageFrame *pSibling, bool bFootnote)
bool CalcMinDiff(SwTwips &rMinDiff) const
bool IsFootnoteContFrame() const
bool WrongPageDesc(SwPageFrame *pNew)
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
SwSectionFrame(SwSection &, SwFrame *)
SwRootFrame * GetLayout() const
const SwFlowFrame * GetFollow() const
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
SwViewShell * GetCurrShell() const
class for collecting anchored objects
void Height(tools::Long nNew)
constexpr TypedWhichId< SwFormatFootnoteAtTextEnd > RES_FTN_AT_TXTEND(117)
bool IsFooterFrame() const
SwRootFrame * getRootFrame()
SwCellFrame is one table cell in the document layout.
std::unique_ptr< SwDestroyList > mpDestroy
bool IsHeaderFrame() const
virtual const SwFrameFormat * GetFormat() const
#define PROTOCOL_ENTER(pFrame, nFunc, nAct, pPar)
SwTabFrame * FindTabFrame()