[Libreoffice-commits] core.git: sw/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Mon Jun 21 16:38:09 UTC 2021
sw/source/core/layout/tabfrm.cxx | 33 +++++++++++---------
sw/source/core/layout/wsfrm.cxx | 39 ++++++++++++------------
sw/source/core/text/EnhancedPDFExportHelper.cxx | 4 +-
3 files changed, 42 insertions(+), 34 deletions(-)
New commits:
commit b4ffe68dd2fc7e2f2c36bf41dd3409f000cb42ad
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Jun 21 13:24:15 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Mon Jun 21 18:37:26 2021 +0200
replace dynamic_cast<SwCellFrame> with cheaper check
Change-Id: I672be703fb097c71303434127d832681843607e2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117580
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 1626e4eac315..dff33525670d 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -1431,15 +1431,17 @@ void SwInvalidateAll( SwFrame *pFrame, tools::Long nBottom )
{
// NEW TABLES
SwLayoutFrame* pToInvalidate = static_cast<SwLayoutFrame*>(pFrame);
- SwCellFrame* pThisCell = dynamic_cast<SwCellFrame*>(pFrame);
- if ( pThisCell && pThisCell->GetTabBox()->getRowSpan() < 1 )
+ if (pFrame->IsCellFrame())
{
- pToInvalidate = & const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( true ));
- pToInvalidate->InvalidatePos_();
- pToInvalidate->InvalidateSize_();
- pToInvalidate->InvalidatePrt_();
+ SwCellFrame* pThisCell = static_cast<SwCellFrame*>(pFrame);
+ if ( pThisCell->GetTabBox()->getRowSpan() < 1 )
+ {
+ pToInvalidate = & const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( true ));
+ pToInvalidate->InvalidatePos_();
+ pToInvalidate->InvalidateSize_();
+ pToInvalidate->InvalidatePrt_();
+ }
}
-
if ( pToInvalidate->Lower() )
::SwInvalidateAll( pToInvalidate->Lower(), nBottom);
}
@@ -1596,14 +1598,17 @@ static bool lcl_InnerCalcLayout( SwFrame *pFrame,
bRet |= lcl_InnerCalcLayout( static_cast<SwLayoutFrame*>(pFrame)->Lower(), nBottom);
// NEW TABLES
- SwCellFrame* pThisCell = dynamic_cast<SwCellFrame*>(pFrame);
- if ( pThisCell && pThisCell->GetTabBox()->getRowSpan() < 1 )
+ if (pFrame->IsCellFrame())
{
- SwCellFrame& rToCalc = const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( true ));
- bRet |= !rToCalc.isFrameAreaDefinitionValid();
- rToCalc.Calc(pRenderContext);
- if ( rToCalc.Lower() )
- bRet |= lcl_InnerCalcLayout( rToCalc.Lower(), nBottom);
+ SwCellFrame* pThisCell = static_cast<SwCellFrame*>(pFrame);
+ if ( pThisCell->GetTabBox()->getRowSpan() < 1 )
+ {
+ SwCellFrame& rToCalc = const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( true ));
+ bRet |= !rToCalc.isFrameAreaDefinitionValid();
+ rToCalc.Calc(pRenderContext);
+ if ( rToCalc.Lower() )
+ bRet |= lcl_InnerCalcLayout( rToCalc.Lower(), nBottom);
+ }
}
}
pFrame = pFrame->GetNext();
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 4e8fb2e1fa1f..cb03f3a9e1c0 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -1513,9 +1513,9 @@ SwTwips SwFrame::Grow( SwTwips nDist, bool bTst, bool bInfo )
return static_cast<SwSectionFrame*>(this)->Grow_( nDist, bTst );
else
{
- const SwCellFrame* pThisCell = dynamic_cast<const SwCellFrame*>(this);
- if ( pThisCell )
+ if (IsCellFrame())
{
+ const SwCellFrame* pThisCell = static_cast<const SwCellFrame*>(this);
const SwTabFrame* pTab = FindTabFrame();
// NEW TABLES
@@ -1523,7 +1523,6 @@ SwTwips SwFrame::Grow( SwTwips nDist, bool bTst, bool bInfo )
pThisCell->GetLayoutRowSpan() < 1 )
return 0;
}
-
const SwTwips nReal = GrowFrame( nDist, bTst, bInfo );
if( !bTst )
{
@@ -1552,9 +1551,9 @@ SwTwips SwFrame::Shrink( SwTwips nDist, bool bTst, bool bInfo )
return static_cast<SwSectionFrame*>(this)->Shrink_( nDist, bTst );
else
{
- const SwCellFrame* pThisCell = dynamic_cast<const SwCellFrame*>(this);
- if ( pThisCell )
+ if (IsCellFrame())
{
+ const SwCellFrame* pThisCell = static_cast<const SwCellFrame*>(this);
const SwTabFrame* pTab = FindTabFrame();
// NEW TABLES
@@ -1562,7 +1561,6 @@ SwTwips SwFrame::Shrink( SwTwips nDist, bool bTst, bool bInfo )
pThisCell->GetLayoutRowSpan() < 1 )
return 0;
}
-
SwRectFnSet aRectFnSet(this);
SwTwips nReal = aRectFnSet.GetHeight(getFrameArea());
ShrinkFrame( nDist, bTst, bInfo );
@@ -2688,16 +2686,18 @@ SwTwips SwLayoutFrame::GrowFrame( SwTwips nDist, bool bTst, bool bInfo )
// A cell with a row span of > 1 is allowed to grow the
// line containing the end of the row span if it is
// located in the same table frame:
- const SwCellFrame* pThisCell = dynamic_cast<const SwCellFrame*>(this);
- if ( pThisCell && pThisCell->GetLayoutRowSpan() > 1 )
+ if (IsCellFrame())
{
- SwCellFrame& rEndCell = const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( false ));
- if ( -1 == rEndCell.GetTabBox()->getRowSpan() )
- pToGrow = rEndCell.GetUpper();
- else
- pToGrow = nullptr;
+ const SwCellFrame* pThisCell = static_cast<const SwCellFrame*>(this);
+ if ( pThisCell->GetLayoutRowSpan() > 1 )
+ {
+ SwCellFrame& rEndCell = const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( false ));
+ if ( -1 == rEndCell.GetTabBox()->getRowSpan() )
+ pToGrow = rEndCell.GetUpper();
+ else
+ pToGrow = nullptr;
+ }
}
-
nGrow = pToGrow ? pToGrow->Grow( nReal, bTst, bInfo ) : 0;
}
@@ -2905,12 +2905,15 @@ SwTwips SwLayoutFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo )
{
SwTwips nShrink = nReal;
SwFrame* pToShrink = GetUpper();
- const SwCellFrame* pThisCell = dynamic_cast<const SwCellFrame*>(this);
// NEW TABLES
- if ( pThisCell && pThisCell->GetLayoutRowSpan() > 1 )
+ if ( IsCellFrame() )
{
- SwCellFrame& rEndCell = const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( false ));
- pToShrink = rEndCell.GetUpper();
+ const SwCellFrame* pThisCell = static_cast<const SwCellFrame*>(this);
+ if ( pThisCell->GetLayoutRowSpan() > 1 )
+ {
+ SwCellFrame& rEndCell = const_cast<SwCellFrame&>(pThisCell->FindStartEndOfRowSpanCell( false ));
+ pToShrink = rEndCell.GetUpper();
+ }
}
nReal = pToShrink ? pToShrink->Shrink( nShrink, bTst, bInfo ) : 0;
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 94014ae13c9a..53c07abe8c0f 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -688,9 +688,9 @@ void SwTaggedPDFHelper::SetAttributes( vcl::PDFWriter::StructElement eType )
if ( bRowSpan )
{
- const SwCellFrame* pThisCell = dynamic_cast<const SwCellFrame*>(pFrame);
- if ( pThisCell )
+ if ( pFrame->IsCellFrame() )
{
+ const SwCellFrame* pThisCell = static_cast<const SwCellFrame*>(pFrame);
nVal = pThisCell->GetTabBox()->getRowSpan();
if ( nVal > 1 )
mpPDFExtOutDevData->SetStructureAttributeNumerical( vcl::PDFWriter::RowSpan, nVal );
More information about the Libreoffice-commits
mailing list