[Libreoffice-commits] core.git: sw/inc sw/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Fri Apr 17 11:04:19 UTC 2020
sw/inc/calbck.hxx | 5
sw/source/core/access/accdoc.cxx | 16 +
sw/source/core/attr/swatrset.cxx | 30 +--
sw/source/core/bastyp/breakit.cxx | 16 -
sw/source/core/bastyp/calc.cxx | 12 +
sw/source/core/bastyp/index.cxx | 16 +
sw/source/core/crsr/callnk.cxx | 17 +-
sw/source/core/crsr/crsrsh.cxx | 52 ++++--
sw/source/core/crsr/crstrvl.cxx | 309 ++++++++++++++++++++++----------------
sw/source/core/crsr/findattr.cxx | 126 +++++++++------
sw/source/core/crsr/pam.cxx | 8
sw/source/core/crsr/swcrsr.cxx | 53 ++++--
sw/source/core/crsr/trvlcol.cxx | 46 ++---
sw/source/core/crsr/trvlfnfl.cxx | 14 +
sw/source/core/crsr/trvlreg.cxx | 34 ++--
15 files changed, 457 insertions(+), 297 deletions(-)
New commits:
commit 9a3b47afab1750eba0451d59a8bac53302d85b2f
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Fri Apr 17 09:00:44 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Apr 17 13:03:38 2020 +0200
loplugin:buriedassign in sw(1)
Change-Id: Ifaab4ab1bde3ff8236b51244098c81e6f460fbd5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92408
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index e0f71b8e9229..fc17b826f965 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -312,7 +312,8 @@ namespace sw
if(m_pPosition)
while( m_pPosition->m_pLeft )
m_pPosition = m_pPosition->m_pLeft;
- return m_pCurrent = m_pPosition;
+ m_pCurrent = m_pPosition;
+ return m_pCurrent;
}
~ClientIteratorBase() override
{
@@ -326,7 +327,7 @@ namespace sw
// SwModify::Add() asserts this
bool IsChanged() const { return m_pPosition != m_pCurrent; }
// ensures the iterator to point at a current client
- WriterListener* Sync() { return m_pCurrent = m_pPosition; }
+ WriterListener* Sync() { m_pCurrent = m_pPosition; return m_pCurrent; }
};
}
diff --git a/sw/source/core/access/accdoc.cxx b/sw/source/core/access/accdoc.cxx
index 3b518626647d..18ae284d440c 100644
--- a/sw/source/core/access/accdoc.cxx
+++ b/sw/source/core/access/accdoc.cxx
@@ -747,19 +747,21 @@ css::uno::Sequence< css::uno::Any >
o3tl::sorted_vector<SwFrame*> vFrameList;
do
{
- if ( _pStartCursor && _pStartCursor->HasMark() )
+ if ( !_pStartCursor )
+ break;
+ if ( _pStartCursor->HasMark() )
{
SwContentNode* pContentNode = _pStartCursor->GetContentNode();
- SwFrame *const pFrame = pContentNode
- ? pContentNode->getLayoutFrame(pCursorShell->GetLayout(), _pStartCursor->GetPoint())
- : nullptr;
- if ( pFrame )
+ if (pContentNode)
{
- vFrameList.insert( pFrame );
+ SwFrame *const pFrame = pContentNode->getLayoutFrame(pCursorShell->GetLayout(), _pStartCursor->GetPoint());
+ if ( pFrame )
+ vFrameList.insert( pFrame );
}
}
+ _pStartCursor = _pStartCursor->GetNext();
}
- while( _pStartCursor && ( (_pStartCursor = _pStartCursor->GetNext()) != _pStartCursor2) );
+ while( _pStartCursor != _pStartCursor2 );
if ( !vFrameList.empty() )
{
diff --git a/sw/source/core/attr/swatrset.cxx b/sw/source/core/attr/swatrset.cxx
index 3870d7334afe..d62df7e94719 100644
--- a/sw/source/core/attr/swatrset.cxx
+++ b/sw/source/core/attr/swatrset.cxx
@@ -263,9 +263,8 @@ bool SwAttrSet::SetModifyAtAttr( const SwModify* pModify )
{
// If CharFormat is set and it is set in different attribute pools then
// the CharFormat has to be copied.
- SwCharFormat* pCharFormat;
- if( nullptr != ( pCharFormat = const_cast<SwFormatDrop*>(static_cast<const SwFormatDrop*>(pItem))->GetCharFormat() )
- && GetPool() != pCharFormat->GetAttrSet().GetPool() )
+ SwCharFormat* pCharFormat = const_cast<SwFormatDrop*>(static_cast<const SwFormatDrop*>(pItem))->GetCharFormat();
+ if( pCharFormat && GetPool() != pCharFormat->GetAttrSet().GetPool() )
{
pCharFormat = GetDoc()->CopyCharFormat( *pCharFormat );
const_cast<SwFormatDrop*>(static_cast<const SwFormatDrop*>(pItem))->SetCharFormat( pCharFormat );
@@ -370,20 +369,23 @@ void SwAttrSet::CopyToModify( SwModify& rMod ) const
const SwPageDesc* pPgDesc;
if( pSrcDoc != pDstDoc && SfxItemState::SET == GetItemState(
- RES_PAGEDESC, false, &pItem ) &&
- nullptr != ( pPgDesc = static_cast<const SwFormatPageDesc*>(pItem)->GetPageDesc()) )
+ RES_PAGEDESC, false, &pItem ))
{
- tmpSet.reset(new SfxItemSet(*this));
-
- SwPageDesc* pDstPgDesc = pDstDoc->FindPageDesc(pPgDesc->GetName());
- if( !pDstPgDesc )
+ pPgDesc = static_cast<const SwFormatPageDesc*>(pItem)->GetPageDesc();
+ if( pPgDesc )
{
- pDstPgDesc = pDstDoc->MakePageDesc(pPgDesc->GetName());
- pDstDoc->CopyPageDesc( *pPgDesc, *pDstPgDesc );
+ tmpSet.reset(new SfxItemSet(*this));
+
+ SwPageDesc* pDstPgDesc = pDstDoc->FindPageDesc(pPgDesc->GetName());
+ if( !pDstPgDesc )
+ {
+ pDstPgDesc = pDstDoc->MakePageDesc(pPgDesc->GetName());
+ pDstDoc->CopyPageDesc( *pPgDesc, *pDstPgDesc );
+ }
+ SwFormatPageDesc aDesc( pDstPgDesc );
+ aDesc.SetNumOffset( static_cast<const SwFormatPageDesc*>(pItem)->GetNumOffset() );
+ tmpSet->Put( aDesc );
}
- SwFormatPageDesc aDesc( pDstPgDesc );
- aDesc.SetNumOffset( static_cast<const SwFormatPageDesc*>(pItem)->GetNumOffset() );
- tmpSet->Put( aDesc );
}
if( pSrcDoc != pDstDoc && SfxItemState::SET == GetItemState( RES_ANCHOR, false, &pItem )
diff --git a/sw/source/core/bastyp/breakit.cxx b/sw/source/core/bastyp/breakit.cxx
index 964e9a37d5b2..af77672f7eb8 100644
--- a/sw/source/core/bastyp/breakit.cxx
+++ b/sw/source/core/bastyp/breakit.cxx
@@ -105,18 +105,18 @@ sal_uInt16 SwBreakIt::GetRealScriptOfText( const OUString& rText, sal_Int32 nPos
break;
}
}
- if( i18n::ScriptType::WEAK == nScript &&
- nPos &&
- 0 < ( nChgPos = m_xBreak->beginOfScript(rText, nPos, nScript) ) )
+ if( i18n::ScriptType::WEAK == nScript && nPos )
{
- nScript = m_xBreak->getScriptType(rText, nChgPos-1);
+ nChgPos = m_xBreak->beginOfScript(rText, nPos, nScript);
+ if( 0 < nChgPos )
+ nScript = m_xBreak->getScriptType(rText, nChgPos-1);
}
- if( i18n::ScriptType::WEAK == nScript &&
- rText.getLength() > ( nChgPos = m_xBreak->endOfScript(rText, nPos, nScript) ) &&
- 0 <= nChgPos )
+ if( i18n::ScriptType::WEAK == nScript )
{
- nScript = m_xBreak->getScriptType(rText, nChgPos);
+ nChgPos = m_xBreak->endOfScript(rText, nPos, nScript);
+ if( rText.getLength() > nChgPos && 0 <= nChgPos )
+ nScript = m_xBreak->getScriptType(rText, nChgPos);
}
}
if( i18n::ScriptType::WEAK == nScript )
diff --git a/sw/source/core/bastyp/calc.cxx b/sw/source/core/bastyp/calc.cxx
index b82a328ad3d8..ffe3d9d9c92b 100644
--- a/sw/source/core/bastyp/calc.cxx
+++ b/sw/source/core/bastyp/calc.cxx
@@ -358,8 +358,13 @@ SwSbxValue SwCalc::Calculate( const OUString& rStr )
m_sCommand = rStr;
m_nCommandPos = 0;
- while( (m_eCurrOper = GetToken()) != CALC_ENDCALC && m_eError == SwCalcError::NONE )
+ for (;;)
+ {
+ m_eCurrOper = GetToken();
+ if (m_eCurrOper == CALC_ENDCALC || m_eError != SwCalcError::NONE )
+ break;
nResult = Expr();
+ }
if( m_eError != SwCalcError::NONE)
nResult.PutDouble( DBL_MAX );
@@ -615,7 +620,10 @@ CharClass* SwCalc::GetCharClass()
SwCalcOper SwCalc::GetToken()
{
if( m_nCommandPos >= m_sCommand.getLength() )
- return m_eCurrOper = CALC_ENDCALC;
+ {
+ m_eCurrOper = CALC_ENDCALC;
+ return m_eCurrOper;
+ }
using namespace ::com::sun::star::i18n;
{
diff --git a/sw/source/core/bastyp/index.cxx b/sw/source/core/bastyp/index.cxx
index 4f740948abff..073b6656311d 100644
--- a/sw/source/core/bastyp/index.cxx
+++ b/sw/source/core/bastyp/index.cxx
@@ -87,9 +87,13 @@ SwIndex& SwIndex::ChgValue( const SwIndex& rIdx, sal_Int32 nNewValue )
SwIndex* pFnd = const_cast<SwIndex*>(&rIdx);
if (rIdx.m_nIndex > nNewValue) // move forwards
{
- SwIndex* pPrv;
- while ((nullptr != (pPrv = pFnd->m_pPrev)) && (pPrv->m_nIndex > nNewValue))
+ for (;;)
+ {
+ SwIndex* pPrv = pFnd->m_pPrev;
+ if (!pPrv || pPrv->m_nIndex <= nNewValue)
+ break;
pFnd = pPrv;
+ }
if( pFnd != this )
{
@@ -107,9 +111,13 @@ SwIndex& SwIndex::ChgValue( const SwIndex& rIdx, sal_Int32 nNewValue )
}
else if (rIdx.m_nIndex < nNewValue)
{
- SwIndex* pNxt;
- while ((nullptr != (pNxt = pFnd->m_pNext)) && (pNxt->m_nIndex < nNewValue))
+ for (;;)
+ {
+ SwIndex* pNxt = pFnd->m_pNext;
+ if (!pNxt || pNxt->m_nIndex >= nNewValue)
+ break;
pFnd = pNxt;
+ }
if( pFnd != this )
{
diff --git a/sw/source/core/crsr/callnk.cxx b/sw/source/core/crsr/callnk.cxx
index 4d27742fca12..90905da63b7a 100644
--- a/sw/source/core/crsr/callnk.cxx
+++ b/sw/source/core/crsr/callnk.cxx
@@ -197,8 +197,13 @@ SwCallLink::~SwCallLink() COVERITY_NOEXCEPT_FALSE
const SwFrame* pFrame;
const SwFlyFrame *pFlyFrame;
- if (!m_rShell.ActionPend() && nullptr != (pFrame = pCNd->getLayoutFrame(m_rShell.GetLayout(), nullptr, nullptr)) &&
- nullptr != ( pFlyFrame = pFrame->FindFlyFrame() ) && !m_rShell.IsTableMode() )
+ if (m_rShell.ActionPend())
+ return;
+ pFrame = pCNd->getLayoutFrame(m_rShell.GetLayout(), nullptr, nullptr);
+ if (!pFrame)
+ return;
+ pFlyFrame = pFrame->FindFlyFrame();
+ if ( pFlyFrame && !m_rShell.IsTableMode() )
{
const SwNodeIndex* pIndex = pFlyFrame->GetFormat()->GetContent().GetContentIdx();
OSL_ENSURE( pIndex, "Fly without Content" );
@@ -224,9 +229,13 @@ long SwCallLink::getLayoutFrame(const SwRootFrame* pRoot,
if( pFrame->HasFollow() )
{
TextFrameIndex const nPos(pFrame->MapModelToView(&rNd, nCntPos));
- while( nullptr != ( pNext = pFrame->GetFollow() ) &&
- nPos >= pNext->GetOffset())
+ for (;;)
+ {
+ pNext = pFrame->GetFollow();
+ if(!pNext || nPos < pNext->GetOffset())
+ break;
pFrame = pNext;
+ }
}
return pFrame->getFrameArea().Left();
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 7a33146ac52f..d7b4ffc1988b 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -194,12 +194,18 @@ SwPaM* SwCursorShell::GetCursor( bool bMakeTableCursor ) const
//don't re-create 'parked' cursors
const SwContentNode* pCNd;
if( m_pTableCursor->GetPoint()->nNode.GetIndex() &&
- m_pTableCursor->GetMark()->nNode.GetIndex() &&
- nullptr != ( pCNd = m_pTableCursor->GetContentNode() ) && pCNd->getLayoutFrame( GetLayout() ) &&
- nullptr != ( pCNd = m_pTableCursor->GetContentNode(false) ) && pCNd->getLayoutFrame( GetLayout() ) )
+ m_pTableCursor->GetMark()->nNode.GetIndex() )
{
- SwShellTableCursor* pTC = m_pTableCursor;
- GetLayout()->MakeTableCursors( *pTC );
+ pCNd = m_pTableCursor->GetContentNode();
+ if( pCNd && pCNd->getLayoutFrame( GetLayout() ) )
+ {
+ pCNd = m_pTableCursor->GetContentNode(false);
+ if( pCNd && pCNd->getLayoutFrame( GetLayout() ) )
+ {
+ SwShellTableCursor* pTC = m_pTableCursor;
+ GetLayout()->MakeTableCursors( *pTC );
+ }
+ }
}
}
@@ -637,13 +643,13 @@ bool SwCursorShell::MovePage( SwWhichPage fnWhichPage, SwPosPage fnPosPage )
std::pair<Point, bool> tmp(rPt, false);
SwContentFrame * pFrame = m_pCurrentCursor->GetContentNode()->
getLayoutFrame(GetLayout(), m_pCurrentCursor->GetPoint(), &tmp);
- if( pFrame && ( bRet = GetFrameInPage( pFrame, fnWhichPage,
- fnPosPage, m_pCurrentCursor ) ) &&
+ if( pFrame && GetFrameInPage( pFrame, fnWhichPage, fnPosPage, m_pCurrentCursor ) &&
!m_pCurrentCursor->IsSelOvr( SwCursorSelOverFlags::Toggle |
SwCursorSelOverFlags::ChangePos ))
+ {
UpdateCursor();
- else
- bRet = false;
+ bRet = true;
+ }
}
return bRet;
}
@@ -1224,11 +1230,15 @@ sal_uInt16 SwCursorShell::GetPageNumSeqNonEmpty()
const SwContentFrame* pCFrame = GetCurrFrame(/*bCalcFrame*/true);
const SwPageFrame* pPg = nullptr;
- if (!pCFrame || nullptr == (pPg = pCFrame->FindPageFrame()))
+ if (!pCFrame )
{
- pPg = Imp()->GetFirstVisPage(GetOut());
- while (pPg && pPg->IsEmptyPage())
- pPg = static_cast<const SwPageFrame*>(pPg->GetNext());
+ pPg = pCFrame->FindPageFrame();
+ if( !pPg )
+ {
+ pPg = Imp()->GetFirstVisPage(GetOut());
+ while (pPg && pPg->IsEmptyPage())
+ pPg = static_cast<const SwPageFrame*>(pPg->GetNext());
+ }
}
sal_uInt16 nPageNo = 0;
@@ -2850,7 +2860,8 @@ void SwCursorShell::ParkCursor( const SwNodeIndex &rIdx )
std::unique_ptr<SwPaM> pNew( new SwPaM( *GetCursor()->GetPoint() ) );
if( pNode->GetStartNode() )
{
- if( ( pNode = pNode->StartOfSectionNode())->IsTableNode() )
+ pNode = pNode->StartOfSectionNode();
+ if( pNode->IsTableNode() )
{
// the given node is in a table, thus park cursor to table node
// (outside of the table)
@@ -3728,10 +3739,15 @@ void SwCursorShell::GetSmartTagRect( const Point& rPt, SwRect& rSelectRect )
SwTextNode *pNode;
const SwWrongList *pSmartTagList;
- if( GetLayout()->GetModelPositionForViewPoint( &aPos, aPt, &eTmpState ) &&
- nullptr != (pNode = aPos.nNode.GetNode().GetTextNode()) &&
- nullptr != (pSmartTagList = pNode->GetSmartTags()) &&
- !pNode->IsInProtectSect() )
+ if( !GetLayout()->GetModelPositionForViewPoint( &aPos, aPt, &eTmpState ) )
+ return;
+ pNode = aPos.nNode.GetNode().GetTextNode();
+ if( !pNode )
+ return;
+ pSmartTagList = pNode->GetSmartTags();
+ if( !pSmartTagList )
+ return;
+ if( !pNode->IsInProtectSect() )
{
sal_Int32 nBegin = aPos.nContent.GetIndex();
sal_Int32 nLen = 1;
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 79cd6551bc4e..c9ced018ee83 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -376,39 +376,42 @@ void SwCursorShell::GotoTOXMarkBase()
// for the actual index
const SwTOXType* pType = aMarks[0]->GetTOXType();
SwIterator<SwTOXBase,SwTOXType> aIter( *pType );
- const SwSectionFormat* pSectFormat;
for( SwTOXBase* pTOX = aIter.First(); pTOX; pTOX = aIter.Next() )
{
- const SwSectionNode* pSectNd;
- if( dynamic_cast<const SwTOXBaseSection*>( pTOX) != nullptr &&
- nullptr != ( pSectFormat = static_cast<SwTOXBaseSection*>(pTOX)->GetFormat() ) &&
- nullptr != ( pSectNd = pSectFormat->GetSectionNode() ))
+ auto pTOXBaseSection = dynamic_cast<const SwTOXBaseSection*>( pTOX);
+ if( !pTOXBaseSection )
+ continue;
+ auto pSectFormat = pTOXBaseSection->GetFormat();
+ if( !pSectFormat )
+ continue;
+ const SwSectionNode* pSectNd = pSectFormat->GetSectionNode();
+ if (!pSectNd)
+ continue;
+ SwNodeIndex aIdx( *pSectNd, 1 );
+ SwContentNode* pCNd = aIdx.GetNode().GetContentNode();
+ if( !pCNd )
+ pCNd = GetDoc()->GetNodes().GoNext( &aIdx );
+ if( !pCNd )
+ continue;
+ if( pCNd->EndOfSectionIndex() >= pSectNd->EndOfSectionIndex() )
+ continue;
+ const SwContentFrame* pCFrame = pCNd->getLayoutFrame( GetLayout() );
+ if( pCFrame && ( IsReadOnlyAvailable() || !pCFrame->IsProtected() ) )
{
- SwNodeIndex aIdx( *pSectNd, 1 );
- SwContentNode* pCNd = aIdx.GetNode().GetContentNode();
- if( !pCNd )
- pCNd = GetDoc()->GetNodes().GoNext( &aIdx );
- const SwContentFrame* pCFrame;
- if( pCNd &&
- pCNd->EndOfSectionIndex() < pSectNd->EndOfSectionIndex() &&
- nullptr != ( pCFrame = pCNd->getLayoutFrame( GetLayout() ) ) &&
- ( IsReadOnlyAvailable() || !pCFrame->IsProtected() ))
- {
- SwCallLink aLk( *this ); // watch Cursor-Moves
- SwCursorSaveState aSaveState( *m_pCurrentCursor );
- assert(pCFrame->IsTextFrame());
- *m_pCurrentCursor->GetPoint() =
- static_cast<SwTextFrame const*>(pCFrame)
- ->MapViewToModelPos(TextFrameIndex(0));
- bRet = !m_pCurrentCursor->IsInProtectTable() &&
- !m_pCurrentCursor->IsSelOvr();
- if( bRet )
- UpdateCursor(SwCursorShell::SCROLLWIN|SwCursorShell::CHKRANGE|SwCursorShell::READONLY);
- break;
- }
+ SwCallLink aLk( *this ); // watch Cursor-Moves
+ SwCursorSaveState aSaveState( *m_pCurrentCursor );
+ assert(pCFrame->IsTextFrame());
+ *m_pCurrentCursor->GetPoint() =
+ static_cast<SwTextFrame const*>(pCFrame)
+ ->MapViewToModelPos(TextFrameIndex(0));
+ bRet = !m_pCurrentCursor->IsInProtectTable() &&
+ !m_pCurrentCursor->IsSelOvr();
+ if( bRet )
+ UpdateCursor(SwCursorShell::SCROLLWIN|SwCursorShell::CHKRANGE|SwCursorShell::READONLY);
+ break;
}
- }
+ }
}
}
@@ -460,28 +463,33 @@ bool SwCursorShell::GotoNxtPrvTableFormula( bool bNext, bool bOnlyErrors )
{
const SwTableBox* pTBox;
auto pFormulaItem = dynamic_cast<const SwTableBoxFormula*>(pItem);
- if( pFormulaItem &&
- nullptr != (pTBox = pFormulaItem->GetTableBox() ) &&
- pTBox->GetSttNd() &&
- pTBox->GetSttNd()->GetNodes().IsDocNodes() &&
- ( !bOnlyErrors ||
- !pFormulaItem->HasValidBoxes() ) )
+ if( !pFormulaItem )
+ continue;
+ pTBox = pFormulaItem->GetTableBox();
+ if( pTBox &&
+ pTBox->GetSttNd() &&
+ pTBox->GetSttNd()->GetNodes().IsDocNodes() &&
+ ( !bOnlyErrors ||
+ !pFormulaItem->HasValidBoxes() ) )
{
const SwContentFrame* pCFrame;
SwNodeIndex aIdx( *pTBox->GetSttNd() );
const SwContentNode* pCNd = GetDoc()->GetNodes().GoNext( &aIdx );
std::pair<Point, bool> const tmp(aPt, false);
- if (pCNd && nullptr != (pCFrame = pCNd->getLayoutFrame(GetLayout(), nullptr, &tmp)) &&
- (IsReadOnlyAvailable() || !pCFrame->IsProtected() ))
+ if (pCNd)
{
- SetGetExpField aCmp( *pTBox );
- aCmp.SetBodyPos( *pCFrame );
-
- if( bNext ? ( aCurGEF < aCmp && aCmp < aFndGEF )
- : ( aCmp < aCurGEF && aFndGEF < aCmp ))
+ pCFrame = pCNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if (pCFrame && (IsReadOnlyAvailable() || !pCFrame->IsProtected() ))
{
- aFndGEF = aCmp;
- bFnd = true;
+ SetGetExpField aCmp( *pTBox );
+ aCmp.SetBodyPos( *pCFrame );
+
+ if( bNext ? ( aCurGEF < aCmp && aCmp < aFndGEF )
+ : ( aCmp < aCurGEF && aFndGEF < aCmp ))
+ {
+ aFndGEF = aCmp;
+ bFnd = true;
+ }
}
}
}
@@ -564,14 +572,17 @@ bool SwCursorShell::GotoNxtPrvTOXMark( bool bNext )
for (const SfxPoolItem* pItem : GetDoc()->GetAttrPool().GetItemSurrogates(RES_TXTATR_TOXMARK))
{
auto pToxMarkItem = dynamic_cast<const SwTOXMark*>(pItem);
- const SwContentFrame* pCFrame;
-
+ if( !pToxMarkItem )
+ continue;
+ pTextTOX = pToxMarkItem->GetTextTOXMark();
+ if( !pTextTOX )
+ continue;
+ pTextNd = &pTextTOX->GetTextNode();
+ if( !pTextNd->GetNodes().IsDocNodes() )
+ continue;
std::pair<Point, bool> const tmp(aPt, false);
- if( pToxMarkItem &&
- nullptr != (pTextTOX = pToxMarkItem->GetTextTOXMark() ) &&
- ( pTextNd = &pTextTOX->GetTextNode())->GetNodes().IsDocNodes() &&
- nullptr != (pCFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)) &&
- ( IsReadOnlyAvailable() || !pCFrame->IsProtected() ))
+ const SwContentFrame* pCFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if( pCFrame && ( IsReadOnlyAvailable() || !pCFrame->IsProtected() ))
{
SwNodeIndex aNdIndex( *pTextNd ); // UNIX needs this object
SetGetExpField aCmp( aNdIndex, *pTextTOX );
@@ -1366,8 +1377,12 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
rContentAtPos.eContentAtPos = IsAttrAtPos::SmartTag;
std::pair<Point, bool> tmp(aPt, true);
- if (pFieldRect && nullptr != (pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
- pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ if (pFieldRect)
+ {
+ pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if (pFrame)
+ pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ }
}
}
}
@@ -1388,15 +1403,19 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
if ( pField )
{
- std::pair<Point, bool> tmp(aPt, true);
- if (pFieldRect && nullptr != (pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
+ if (pFieldRect)
{
- //tdf#116397 now that we looking for the bounds of the field drop the SmartTag
- //index within field setting so we don't the bounds of the char within the field
- SwSpecialPos* pSpecialPos = aTmpState.m_pSpecialPos;
- aTmpState.m_pSpecialPos = nullptr;
- pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
- aTmpState.m_pSpecialPos = pSpecialPos;
+ std::pair<Point, bool> tmp(aPt, true);
+ pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if (pFrame)
+ {
+ //tdf#116397 now that we looking for the bounds of the field drop the SmartTag
+ //index within field setting so we don't the bounds of the char within the field
+ SwSpecialPos* pSpecialPos = aTmpState.m_pSpecialPos;
+ aTmpState.m_pSpecialPos = nullptr;
+ pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ aTmpState.m_pSpecialPos = pSpecialPos;
+ }
}
if( bSetCursor )
@@ -1495,9 +1514,13 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
rContentAtPos.pFndTextAttr = pTextAttr;
rContentAtPos.aFnd.pAttr = &pTextAttr->GetAttr();
- std::pair<Point, bool> tmp(aPt, true);
- if (pFieldRect && nullptr != (pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
- pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ if (pFieldRect)
+ {
+ std::pair<Point, bool> tmp(aPt, true);
+ pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if (pFrame)
+ pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ }
}
}
}
@@ -1563,8 +1586,12 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
rContentAtPos.aFnd.pAttr = &pTextAttr->GetAttr();
std::pair<Point, bool> tmp(aPt, true);
- if (pFieldRect && nullptr != (pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
- pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ if (pFieldRect)
+ {
+ pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if (pFrame)
+ pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+ }
}
}
}
@@ -1602,22 +1629,26 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
rContentAtPos.eContentAtPos = IsAttrAtPos::InetAttr;
rContentAtPos.pFndTextAttr = pTextAttr;
- std::pair<Point, bool> tmp(aPt, true);
- if (pFieldRect && nullptr != (pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
+ if (pFieldRect)
{
- //get bounding box of range
- SwRect aStart;
- SwPosition aStartPos(*pTextNd, nSt);
- pFrame->GetCharRect(aStart, aStartPos, &aTmpState);
- SwRect aEnd;
- SwPosition aEndPos(*pTextNd, nEnd);
- pFrame->GetCharRect(aEnd, aEndPos, &aTmpState);
- if (aStart.Top() != aEnd.Top() || aStart.Bottom() != aEnd.Bottom())
+ std::pair<Point, bool> tmp(aPt, true);
+ pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if (pFrame)
{
- aStart.Left(pFrame->getFrameArea().Left());
- aEnd.Right(pFrame->getFrameArea().Right());
+ //get bounding box of range
+ SwRect aStart;
+ SwPosition aStartPos(*pTextNd, nSt);
+ pFrame->GetCharRect(aStart, aStartPos, &aTmpState);
+ SwRect aEnd;
+ SwPosition aEndPos(*pTextNd, nEnd);
+ pFrame->GetCharRect(aEnd, aEndPos, &aTmpState);
+ if (aStart.Top() != aEnd.Top() || aStart.Bottom() != aEnd.Bottom())
+ {
+ aStart.Left(pFrame->getFrameArea().Left());
+ aEnd.Right(pFrame->getFrameArea().Right());
+ }
+ *pFieldRect = aStart.Union(aEnd);
}
- *pFieldRect = aStart.Union(aEnd);
}
}
}
@@ -1634,37 +1665,41 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
rContentAtPos.pFndTextAttr = nullptr;
bRet = true;
- std::pair<Point, bool> tmp(aPt, true);
- if (pFieldRect && nullptr != (pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
+ if (pFieldRect)
{
- // not sure if this should be limited to one
- // paragraph, or mark the entire redline; let's
- // leave it limited to one for now...
- sal_Int32 nStart;
- sal_Int32 nEnd;
- pRedl->CalcStartEnd(pTextNd->GetIndex(), nStart, nEnd);
- if (nStart == COMPLETE_STRING)
- {
- // consistency: found pRedl, so there must be
- // something in pTextNd
- assert(nEnd != COMPLETE_STRING);
- nStart = 0;
- }
- if (nEnd == COMPLETE_STRING)
- {
- nEnd = pTextNd->Len();
- }
- //get bounding box of range
- SwRect aStart;
- pFrame->GetCharRect(aStart, SwPosition(*pTextNd, nStart), &aTmpState);
- SwRect aEnd;
- pFrame->GetCharRect(aEnd, SwPosition(*pTextNd, nEnd), &aTmpState);
- if (aStart.Top() != aEnd.Top() || aStart.Bottom() != aEnd.Bottom())
+ std::pair<Point, bool> tmp(aPt, true);
+ pFrame = pTextNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if( pFrame )
{
- aStart.Left(pFrame->getFrameArea().Left());
- aEnd.Right(pFrame->getFrameArea().Right());
+ // not sure if this should be limited to one
+ // paragraph, or mark the entire redline; let's
+ // leave it limited to one for now...
+ sal_Int32 nStart;
+ sal_Int32 nEnd;
+ pRedl->CalcStartEnd(pTextNd->GetIndex(), nStart, nEnd);
+ if (nStart == COMPLETE_STRING)
+ {
+ // consistency: found pRedl, so there must be
+ // something in pTextNd
+ assert(nEnd != COMPLETE_STRING);
+ nStart = 0;
+ }
+ if (nEnd == COMPLETE_STRING)
+ {
+ nEnd = pTextNd->Len();
+ }
+ //get bounding box of range
+ SwRect aStart;
+ pFrame->GetCharRect(aStart, SwPosition(*pTextNd, nStart), &aTmpState);
+ SwRect aEnd;
+ pFrame->GetCharRect(aEnd, SwPosition(*pTextNd, nEnd), &aTmpState);
+ if (aStart.Top() != aEnd.Top() || aStart.Bottom() != aEnd.Bottom())
+ {
+ aStart.Left(pFrame->getFrameArea().Left());
+ aEnd.Right(pFrame->getFrameArea().Right());
+ }
+ *pFieldRect = aStart.Union(aEnd);
}
- *pFieldRect = aStart.Union(aEnd);
}
}
}
@@ -1892,10 +1927,13 @@ bool SwContentAtPos::IsInProtectSect() const
}
}
- const SwContentFrame* pFrame;
- return pNd && ( pNd->IsInProtectSect() ||
- (nullptr != (pFrame = pNd->getLayoutFrame(pNd->GetDoc()->getIDocumentLayoutAccess().GetCurrentLayout(), nullptr, nullptr)) &&
- pFrame->IsProtected() ));
+ if( !pNd )
+ return false;
+ if( pNd->IsInProtectSect() )
+ return true;
+
+ const SwContentFrame* pFrame = pNd->getLayoutFrame(pNd->GetDoc()->getIDocumentLayoutAccess().GetCurrentLayout(), nullptr, nullptr);
+ return pFrame && pFrame->IsProtected() ;
}
bool SwContentAtPos::IsInRTLText()const
@@ -2235,16 +2273,18 @@ const SwRangeRedline* SwCursorShell::GotoRedline_( SwRedlineTable::size_type nAr
{
*m_pCurrentCursor->GetPoint() = *pFnd->Start();
- SwContentNode* pCNd;
SwNodeIndex* pIdx = &m_pCurrentCursor->GetPoint()->nNode;
- if( !pIdx->GetNode().IsContentNode() &&
- nullptr != ( pCNd = GetDoc()->GetNodes().GoNextSection( pIdx,
- true, IsReadOnlyAvailable() )) )
+ if( !pIdx->GetNode().IsContentNode() )
{
- if( *pIdx <= pFnd->End()->nNode )
- m_pCurrentCursor->GetPoint()->nContent.Assign( pCNd, 0 );
- else
- pFnd = nullptr;
+ SwContentNode* pCNd = GetDoc()->GetNodes().GoNextSection( pIdx,
+ true, IsReadOnlyAvailable() );
+ if( pCNd )
+ {
+ if( *pIdx <= pFnd->End()->nNode )
+ m_pCurrentCursor->GetPoint()->nContent.Assign( pCNd, 0 );
+ else
+ pFnd = nullptr;
+ }
}
if( pFnd && bSelect )
@@ -2252,7 +2292,7 @@ const SwRangeRedline* SwCursorShell::GotoRedline_( SwRedlineTable::size_type nAr
m_pCurrentCursor->SetMark();
if( RedlineType::FmtColl == pFnd->GetType() )
{
- pCNd = pIdx->GetNode().GetContentNode();
+ SwContentNode* pCNd = pIdx->GetNode().GetContentNode();
m_pCurrentCursor->GetPoint()->nContent.Assign( pCNd, pCNd->Len() );
m_pCurrentCursor->GetMark()->nContent.Assign( pCNd, 0 );
}
@@ -2260,14 +2300,17 @@ const SwRangeRedline* SwCursorShell::GotoRedline_( SwRedlineTable::size_type nAr
*m_pCurrentCursor->GetPoint() = *pFnd->End();
pIdx = &m_pCurrentCursor->GetPoint()->nNode;
- if( !pIdx->GetNode().IsContentNode() &&
- nullptr != ( pCNd = SwNodes::GoPrevSection( pIdx,
- true, IsReadOnlyAvailable() )) )
+ if( !pIdx->GetNode().IsContentNode() )
{
- if( *pIdx >= m_pCurrentCursor->GetMark()->nNode )
- m_pCurrentCursor->GetPoint()->nContent.Assign( pCNd, pCNd->Len() );
- else
- pFnd = nullptr;
+ SwContentNode* pCNd = SwNodes::GoPrevSection( pIdx,
+ true, IsReadOnlyAvailable() );
+ if( pCNd )
+ {
+ if( *pIdx >= m_pCurrentCursor->GetMark()->nNode )
+ m_pCurrentCursor->GetPoint()->nContent.Assign( pCNd, pCNd->Len() );
+ else
+ pFnd = nullptr;
+ }
}
}
@@ -2416,8 +2459,12 @@ bool SwCursorShell::SelectNxtPrvHyperlink( bool bNext )
const SwContentNode* pCNd = aCurPos.GetNodeFromContent()->GetContentNode();
SwContentFrame* pFrame;
std::pair<Point, bool> tmp(aPt, true);
- if (pCNd && nullptr != (pFrame = pCNd->getLayoutFrame(GetLayout(), nullptr, &tmp)))
- aCurPos.SetBodyPos( *pFrame );
+ if (pCNd)
+ {
+ pFrame = pCNd->getLayoutFrame(GetLayout(), nullptr, &tmp);
+ if( pFrame )
+ aCurPos.SetBodyPos( *pFrame );
+ }
}
// check first all the hyperlink fields
@@ -2429,8 +2476,9 @@ bool SwCursorShell::SelectNxtPrvHyperlink( bool bNext )
SwIterator<SwTextINetFormat,SwCharFormat> aIter(*(*pFormats)[--n]);
for( SwTextINetFormat* pFnd = aIter.First(); pFnd; pFnd = aIter.Next() )
- if( nullptr != ( pTextNd = pFnd->GetpTextNode()) &&
- pTextNd->GetNodes().IsDocNodes() )
+ {
+ pTextNd = pFnd->GetpTextNode();
+ if( pTextNd && pTextNd->GetNodes().IsDocNodes() )
{
SwTextINetFormat& rAttr = *pFnd;
SwPosition aTmpPos( *pTextNd );
@@ -2461,6 +2509,7 @@ bool SwCursorShell::SelectNxtPrvHyperlink( bool bNext )
aCmpPos = aPos;
}
}
+ }
}
}
diff --git a/sw/source/core/crsr/findattr.cxx b/sw/source/core/crsr/findattr.cxx
index 061932700c7c..fc0a7abb5dfa 100644
--- a/sw/source/core/crsr/findattr.cxx
+++ b/sw/source/core/crsr/findattr.cxx
@@ -394,7 +394,8 @@ bool SwAttrCheckArr::SetAttrFwd( const SwTextAttr& rAttr )
}
else if( pArrPtr->nStt <= aTmp.nStt )
{
- if( ( pCmp = &m_pFindArr[ n ])->nWhich )
+ pCmp = &m_pFindArr[ n ];
+ if( pCmp->nWhich )
{
if( pCmp->nEnd < pArrPtr->nEnd ) // extend
pCmp->nEnd = pArrPtr->nEnd;
@@ -419,7 +420,8 @@ bool SwAttrCheckArr::SetAttrFwd( const SwTextAttr& rAttr )
*pTmpItem ))
{
// search attribute and extend if needed
- if( !( pCmp = &m_pFindArr[ nWhch - m_nArrStart ])->nWhich )
+ pCmp = &m_pFindArr[ nWhch - m_nArrStart ];
+ if( !pCmp->nWhich )
{
*pCmp = aTmp; // not found, insert
m_nFound++;
@@ -439,24 +441,28 @@ bool SwAttrCheckArr::SetAttrFwd( const SwTextAttr& rAttr )
}
// then is has to go on the stack
- if( !bContinue && ( pCmp = &m_pFindArr[ nWhch - m_nArrStart ])->nWhich )
+ if( !bContinue )
{
- // exists on stack, only if it is even bigger
- if( pCmp->nEnd > aTmp.nEnd )
+ pCmp = &m_pFindArr[ nWhch - m_nArrStart ];
+ if (pCmp->nWhich )
{
- OSL_ENSURE( !m_pStackArr[ nWhch - m_nArrStart ].nWhich,
- "slot on stack is still in use" );
+ // exists on stack, only if it is even bigger
+ if( pCmp->nEnd > aTmp.nEnd )
+ {
+ OSL_ENSURE( !m_pStackArr[ nWhch - m_nArrStart ].nWhich,
+ "slot on stack is still in use" );
- if( aTmp.nStt <= pCmp->nStt )
- pCmp->nStt = aTmp.nEnd;
- else
- pCmp->nEnd = aTmp.nStt;
+ if( aTmp.nStt <= pCmp->nStt )
+ pCmp->nStt = aTmp.nEnd;
+ else
+ pCmp->nEnd = aTmp.nStt;
- m_pStackArr[ nWhch - m_nArrStart ] = *pCmp;
- m_nStackCount++;
+ m_pStackArr[ nWhch - m_nArrStart ] = *pCmp;
+ m_nStackCount++;
+ }
+ pCmp->nWhich = 0;
+ m_nFound--;
}
- pCmp->nWhich = 0;
- m_nFound--;
}
}
if( pIter )
@@ -547,7 +553,8 @@ bool SwAttrCheckArr::SetAttrBwd( const SwTextAttr& rAttr )
}
else if( pArrPtr->nEnd >= aTmp.nEnd )
{
- if( ( pCmp = &m_pFindArr[ n ])->nWhich )
+ pCmp = &m_pFindArr[ n ];
+ if( pCmp->nWhich )
{
if( pCmp->nStt > pArrPtr->nStt ) // extend
pCmp->nStt = pArrPtr->nStt;
@@ -571,7 +578,8 @@ bool SwAttrCheckArr::SetAttrBwd( const SwTextAttr& rAttr )
*pTmpItem ) )
{
// search attribute and extend if needed
- if( !( pCmp = &m_pFindArr[ nWhch - m_nArrStart ])->nWhich )
+ pCmp = &m_pFindArr[ nWhch - m_nArrStart ];
+ if( !pCmp->nWhich )
{
*pCmp = aTmp; // not found, insert
m_nFound++;
@@ -591,24 +599,28 @@ bool SwAttrCheckArr::SetAttrBwd( const SwTextAttr& rAttr )
}
// then is has to go on the stack
- if( !bContinue && ( pCmp = &m_pFindArr[ nWhch - m_nArrStart ])->nWhich )
+ if( !bContinue )
{
- // exists on stack, only if it is even bigger
- if( pCmp->nStt < aTmp.nStt )
+ pCmp = &m_pFindArr[ nWhch - m_nArrStart ];
+ if( pCmp->nWhich )
{
- OSL_ENSURE( !m_pStackArr[ nWhch - m_nArrStart ].nWhich,
- "slot on stack is still in use" );
+ // exists on stack, only if it is even bigger
+ if( pCmp->nStt < aTmp.nStt )
+ {
+ OSL_ENSURE( !m_pStackArr[ nWhch - m_nArrStart ].nWhich,
+ "slot on stack is still in use" );
- if( aTmp.nEnd <= pCmp->nEnd )
- pCmp->nEnd = aTmp.nStt;
- else
- pCmp->nStt = aTmp.nEnd;
+ if( aTmp.nEnd <= pCmp->nEnd )
+ pCmp->nEnd = aTmp.nStt;
+ else
+ pCmp->nStt = aTmp.nEnd;
- m_pStackArr[ nWhch - m_nArrStart ] = *pCmp;
- m_nStackCount++;
+ m_pStackArr[ nWhch - m_nArrStart ] = *pCmp;
+ m_nStackCount++;
+ }
+ pCmp->nWhich = 0;
+ m_nFound--;
}
- pCmp->nWhich = 0;
- m_nFound--;
}
}
if( pIter )
@@ -706,7 +718,9 @@ static bool lcl_SearchForward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpAr
if( rCmpArr.Found() )
{
for( ; nPos < rHtArr.Count(); ++nPos )
- if( !rCmpArr.SetAttrFwd( *( pAttr = rHtArr.Get( nPos )) ) )
+ {
+ pAttr = rHtArr.Get( nPos );
+ if( !rCmpArr.SetAttrFwd( *pAttr ) )
{
if( rCmpArr.GetNdStt() < pAttr->GetStart() )
{
@@ -719,6 +733,7 @@ static bool lcl_SearchForward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpAr
// continue search
break;
}
+ }
if( nPos == rHtArr.Count() && rCmpArr.Found() )
{
@@ -731,14 +746,18 @@ static bool lcl_SearchForward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpAr
sal_Int32 nSttPos;
for( ; nPos < rHtArr.Count(); ++nPos )
- if( rCmpArr.SetAttrFwd( *( pAttr = rHtArr.Get( nPos )) ) )
+ {
+ pAttr = rHtArr.Get( nPos );
+ if( rCmpArr.SetAttrFwd( *pAttr ) )
{
// Do multiple start at that position? Do also check those:
nSttPos = pAttr->GetStart();
- while( ++nPos < rHtArr.Count() && nSttPos ==
- ( pAttr = rHtArr.Get( nPos ))->GetStart() &&
- rCmpArr.SetAttrFwd( *pAttr ) )
- ;
+ while( ++nPos < rHtArr.Count() )
+ {
+ pAttr = rHtArr.Get( nPos );
+ if( nSttPos != pAttr->GetStart() || !rCmpArr.SetAttrFwd( *pAttr ) )
+ break;
+ }
if( !rCmpArr.Found() )
continue;
@@ -750,9 +769,13 @@ static bool lcl_SearchForward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpAr
lcl_SetAttrPam( rPam, nSttPos, &nEndPos, true );
return true;
}
+ }
- if( !rCmpArr.CheckStack() ||
- (nSttPos = rCmpArr.Start()) > (nEndPos = rCmpArr.End()) )
+ if( !rCmpArr.CheckStack() )
+ return false;
+ nSttPos = rCmpArr.Start();
+ nEndPos = rCmpArr.End();
+ if( nSttPos > nEndPos )
return false;
lcl_SetAttrPam( rPam, nSttPos, &nEndPos, true );
@@ -782,7 +805,9 @@ static bool lcl_SearchBackward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpA
if( rCmpArr.Found() )
{
while( nPos )
- if( !rCmpArr.SetAttrBwd( *( pAttr = rHtArr.GetSortedByEnd( --nPos )) ) )
+ {
+ pAttr = rHtArr.GetSortedByEnd( --nPos );
+ if( !rCmpArr.SetAttrBwd( *pAttr ) )
{
nSttPos = pAttr->GetAnyEnd();
if( nSttPos < rCmpArr.GetNdEnd() )
@@ -796,6 +821,7 @@ static bool lcl_SearchBackward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpA
// continue search
break;
}
+ }
if( !nPos && rCmpArr.Found() )
{
@@ -807,16 +833,20 @@ static bool lcl_SearchBackward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpA
}
while( nPos )
- if( rCmpArr.SetAttrBwd( *( pAttr = rHtArr.GetSortedByEnd( --nPos )) ) )
+ {
+ pAttr = rHtArr.GetSortedByEnd( --nPos );
+ if( rCmpArr.SetAttrBwd( *pAttr ) )
{
// Do multiple start at that position? Do also check those:
if( nPos )
{
nEndPos = pAttr->GetAnyEnd();
- while( --nPos && nEndPos ==
- ( pAttr = rHtArr.GetSortedByEnd( nPos ))->GetAnyEnd() &&
- rCmpArr.SetAttrBwd( *pAttr ) )
- ;
+ while( --nPos )
+ {
+ pAttr = rHtArr.GetSortedByEnd( nPos );
+ if( nEndPos != pAttr->GetAnyEnd() || !rCmpArr.SetAttrBwd( *pAttr ) )
+ break;
+ }
}
if( !rCmpArr.Found() )
continue;
@@ -828,9 +858,13 @@ static bool lcl_SearchBackward( const SwTextNode& rTextNd, SwAttrCheckArr& rCmpA
lcl_SetAttrPam( rPam, nSttPos, &nEndPos, false );
return true;
}
+ }
- if( !rCmpArr.CheckStack() ||
- (nSttPos = rCmpArr.Start()) > (nEndPos = rCmpArr.End()) )
+ if( !rCmpArr.CheckStack() )
+ return false;
+ nSttPos = rCmpArr.Start();
+ nEndPos = rCmpArr.End();
+ if( nSttPos > nEndPos )
return false;
lcl_SetAttrPam( rPam, nSttPos, &nEndPos, false );
diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
index 59ed41a036b1..c10f6ea37f58 100644
--- a/sw/source/core/crsr/pam.cxx
+++ b/sw/source/core/crsr/pam.cxx
@@ -229,9 +229,13 @@ static bool lcl_ChkOneRange( CHKSECTION eSec, bool bChkSections,
if( !pNd->StartOfSectionIndex() )
return false;
- while( ( pTmp = pNd->StartOfSectionNode())->EndOfSectionNode() !=
- &rBaseEnd )
+ for (;;)
+ {
+ pTmp = pNd->StartOfSectionNode();
+ if (pTmp->EndOfSectionNode() == &rBaseEnd )
+ break;
pNd = pTmp;
+ }
sal_uLong nSttIdx = pNd->GetIndex(), nEndIdx = pNd->EndOfSectionIndex();
return nSttIdx <= nStt && nStt <= nEndIdx &&
diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index 9881a260f382..08c914b8c67a 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -340,9 +340,12 @@ bool SwCursor::IsSelOvr( SwCursorSelOverFlags eFlags )
// skip to the next/prev valid paragraph with a layout
SwNodeIndex& rPtIdx = GetPoint()->nNode;
bool bGoNxt = m_vSavePos.back().nNode < rPtIdx.GetIndex();
- while( nullptr != ( pFrame = ( bGoNxt ? pFrame->GetNextContentFrame() : pFrame->GetPrevContentFrame() ))
- && 0 == pFrame->getFrameArea().Height() )
- ;
+ for (;;)
+ {
+ pFrame = bGoNxt ? pFrame->GetNextContentFrame() : pFrame->GetPrevContentFrame();
+ if (!pFrame || 0 != pFrame->getFrameArea().Height() )
+ break;
+ }
// #i72394# skip to prev/next valid paragraph with a layout in case
// the first search did not succeed:
@@ -424,7 +427,8 @@ bool SwCursor::IsSelOvr( SwCursorSelOverFlags eFlags )
return true; // we need a frame
}
- if( (pNd = &GetMark()->nNode.GetNode())->IsContentNode()
+ pNd = &GetMark()->nNode.GetNode();
+ if( pNd->IsContentNode()
&& !static_cast<const SwContentNode*>(pNd)->getLayoutFrame( pDoc->getIDocumentLayoutAccess().GetCurrentLayout() )
&& !dynamic_cast<SwUnoCursor*>(this) )
{
@@ -535,9 +539,15 @@ bool SwCursor::IsSelOvr( SwCursorSelOverFlags eFlags )
return false;
}
}
- if( bSelTop
- ? ( !pMyNd->IsEndNode() || nullptr == ( pPtNd = pMyNd->FindTableNode() ))
- : nullptr == ( pPtNd = pMyNd->GetTableNode() ))
+ if( bSelTop )
+ {
+ if ( !pMyNd->IsEndNode() )
+ break;
+ pPtNd = pMyNd->FindTableNode();
+ }
+ else
+ pPtNd = pMyNd->GetTableNode();
+ if (!pPtNd)
break;
} while( true );
}
@@ -629,8 +639,8 @@ SetNextCursor:
}
// end of table, so go to next node
++aCellStt;
- SwNode* pNd;
- if( ( pNd = &aCellStt.GetNode())->IsEndNode() || HasMark())
+ SwNode* pNd = &aCellStt.GetNode();
+ if( pNd->IsEndNode() || HasMark())
{
// if only table in FlyFrame or SSelection then stay on old position
if( bChgCursor )
@@ -653,7 +663,8 @@ SetNextCursor:
bool bProt = true;
GoPrevCell:
for (;;) {
- if( !( pNd = &aCellStt.GetNode())->IsEndNode() )
+ pNd = &aCellStt.GetNode();
+ if( !pNd->IsEndNode() )
break;
aCellStt.Assign( *pNd->StartOfSectionNode(), +1 );
if( nullptr == ( pCNd = aCellStt.GetNode().GetContentNode() ))
@@ -679,7 +690,8 @@ SetPrevCursor:
}
// at the beginning of a table, so go to next node
--aCellStt;
- if( ( pNd = &aCellStt.GetNode())->IsStartNode() || HasMark() )
+ pNd = &aCellStt.GetNode();
+ if( pNd->IsStartNode() || HasMark() )
{
// if only table in FlyFrame or SSelection then stay on old position
if( bChgCursor )
@@ -780,13 +792,14 @@ static sal_uLong lcl_FindSelection( SwFindParas& rParas, SwCursor* pCurrentCurso
pPHdl.reset(new PercentHdl( aRegion ));
// as long as found and not at same position
- while( *pSttPos <= *pEndPos &&
- 0 != ( nFndRet = rParas.DoFind(*pCurrentCursor, fnMove,
- aRegion, bInReadOnly)) &&
- ( !pFndRing ||
- *pFndRing->GetPoint() != *pCurrentCursor->GetPoint() ||
- *pFndRing->GetMark() != *pCurrentCursor->GetMark() ))
+ while( *pSttPos <= *pEndPos )
{
+ nFndRet = rParas.DoFind(*pCurrentCursor, fnMove, aRegion, bInReadOnly);
+ if( 0 == nFndRet ||
+ ( pFndRing &&
+ *pFndRing->GetPoint() == *pCurrentCursor->GetPoint() &&
+ *pFndRing->GetMark() == *pCurrentCursor->GetMark() ))
+ break;
if( !( FIND_NO_RING & nFndRet ))
{
// #i24084# - create ring similar to the one in CreateCursor
@@ -2372,7 +2385,8 @@ SwCursor* SwTableCursor::MakeBoxSels( SwCursor* pCurrentCursor )
pPos->nContent.Assign( const_cast<SwContentNode*>(static_cast<const SwContentNode*>(pNd)), 0 );
aIdx.Assign( *pSttNd->EndOfSectionNode(), - 1 );
- if( !( pNd = &aIdx.GetNode())->IsContentNode() )
+ pNd = &aIdx.GetNode();
+ if( !pNd->IsContentNode() )
pNd = SwNodes::GoPrevSection( &aIdx, true, false );
pPos = pCur->GetPoint();
@@ -2417,7 +2431,8 @@ SwCursor* SwTableCursor::MakeBoxSels( SwCursor* pCurrentCursor )
SwPosition* pPos = pNew->GetPoint();
pPos->nNode.Assign( *pSttNd->EndOfSectionNode(), - 1 );
- if( !( pNd = &pPos->nNode.GetNode())->IsContentNode() )
+ pNd = &pPos->nNode.GetNode();
+ if( !pNd->IsContentNode() )
pNd = SwNodes::GoPrevSection( &pPos->nNode, true, false );
pPos->nContent.Assign(static_cast<SwContentNode*>(pNd), pNd ? static_cast<SwContentNode*>(pNd)->Len() : 0);
diff --git a/sw/source/core/crsr/trvlcol.cxx b/sw/source/core/crsr/trvlcol.cxx
index b05bf7c503cb..8e1de5ba8ab5 100644
--- a/sw/source/core/crsr/trvlcol.cxx
+++ b/sw/source/core/crsr/trvlcol.cxx
@@ -65,34 +65,36 @@ SwContentFrame* GetColumnEnd( const SwLayoutFrame* pColFrame )
void SwCursorShell::MoveColumn( SwWhichColumn fnWhichCol, SwPosColumn fnPosCol )
{
- if( !m_pTableCursor )
+ if( m_pTableCursor )
+ return;
+ SwLayoutFrame* pLayFrame = GetCurrFrame()->GetUpper();
+ if( !pLayFrame )
+ return;
+ pLayFrame = (*fnWhichCol)( pLayFrame );
+ if( pLayFrame )
{
- SwLayoutFrame* pLayFrame = GetCurrFrame()->GetUpper();
- if( pLayFrame && nullptr != ( pLayFrame = (*fnWhichCol)( pLayFrame )) )
+ SwContentFrame* pCnt = (*fnPosCol)( pLayFrame );
+ if( pCnt )
{
- SwContentFrame* pCnt = (*fnPosCol)( pLayFrame );
- if( pCnt )
- {
- SET_CURR_SHELL( this );
- SwCallLink aLk( *this ); // watch Cursor-Moves; call Link if needed
- SwCursorSaveState aSaveState( *m_pCurrentCursor );
+ SET_CURR_SHELL( this );
+ SwCallLink aLk( *this ); // watch Cursor-Moves; call Link if needed
+ SwCursorSaveState aSaveState( *m_pCurrentCursor );
- pCnt->Calc(GetOut());
+ pCnt->Calc(GetOut());
- Point aPt( pCnt->getFrameArea().Pos() + pCnt->getFramePrintArea().Pos() );
- if( fnPosCol == GetColumnEnd )
- {
- aPt.setX(aPt.getX() + pCnt->getFramePrintArea().Width());
- aPt.setY(aPt.getY() + pCnt->getFramePrintArea().Height());
- }
+ Point aPt( pCnt->getFrameArea().Pos() + pCnt->getFramePrintArea().Pos() );
+ if( fnPosCol == GetColumnEnd )
+ {
+ aPt.setX(aPt.getX() + pCnt->getFramePrintArea().Width());
+ aPt.setY(aPt.getY() + pCnt->getFramePrintArea().Height());
+ }
- pCnt->GetModelPositionForViewPoint( m_pCurrentCursor->GetPoint(), aPt );
+ pCnt->GetModelPositionForViewPoint( m_pCurrentCursor->GetPoint(), aPt );
- if( !m_pCurrentCursor->IsInProtectTable( true ) &&
- !m_pCurrentCursor->IsSelOvr() )
- {
- UpdateCursor();
- }
+ if( !m_pCurrentCursor->IsInProtectTable( true ) &&
+ !m_pCurrentCursor->IsSelOvr() )
+ {
+ UpdateCursor();
}
}
}
diff --git a/sw/source/core/crsr/trvlfnfl.cxx b/sw/source/core/crsr/trvlfnfl.cxx
index 155e37187f81..e0eb9ca48711 100644
--- a/sw/source/core/crsr/trvlfnfl.cxx
+++ b/sw/source/core/crsr/trvlfnfl.cxx
@@ -94,9 +94,13 @@ bool SwCursorShell::GotoFootnoteText()
GetCursor_()->Start(), &tmp);
const SwFootnoteBossFrame* pFootnoteBoss;
bool bSkip = pFrame && pFrame->IsInFootnote();
- while( pFrame && nullptr != ( pFootnoteBoss = pFrame->FindFootnoteBossFrame() ) )
+ while( pFrame )
{
- if( nullptr != ( pFrame = pFootnoteBoss->FindFootnoteCont() ) )
+ pFootnoteBoss = pFrame->FindFootnoteBossFrame();
+ if (!pFootnoteBoss)
+ break;
+ pFrame = pFootnoteBoss->FindFootnoteCont();
+ if( pFrame )
{
if( bSkip )
bSkip = false;
@@ -134,10 +138,11 @@ bool SwCursor::GotoFootnoteAnchor()
if( pSttNd )
{
// search in all footnotes in document for this StartIndex
- const SwTextFootnote* pTextFootnote;
const SwFootnoteIdxs& rFootnoteArr = pSttNd->GetDoc()->GetFootnoteIdxs();
for( size_t n = 0; n < rFootnoteArr.size(); ++n )
- if( nullptr != ( pTextFootnote = rFootnoteArr[ n ])->GetStartNode() &&
+ {
+ const SwTextFootnote* pTextFootnote = rFootnoteArr[ n ];
+ if( nullptr != pTextFootnote->GetStartNode() &&
pSttNd == &pTextFootnote->GetStartNode()->GetNode() )
{
SwCursorSaveState aSaveState( *this );
@@ -149,6 +154,7 @@ bool SwCursor::GotoFootnoteAnchor()
return !IsSelOvr( SwCursorSelOverFlags::CheckNodeSection |
SwCursorSelOverFlags::Toggle );
}
+ }
}
return false;
}
diff --git a/sw/source/core/crsr/trvlreg.cxx b/sw/source/core/crsr/trvlreg.cxx
index ecec0f16ee85..1648caf8f162 100644
--- a/sw/source/core/crsr/trvlreg.cxx
+++ b/sw/source/core/crsr/trvlreg.cxx
@@ -40,9 +40,11 @@ bool GotoPrevRegion( SwPaM& rCurrentCursor, SwMoveFnCollection const & fnPosRegi
SwNodeIndex aOldIdx = aIdx;
sal_uLong nLastNd = rCurrentCursor.GetDoc()->GetNodes().Count() - 1;
do {
- while( aIdx.GetIndex() &&
- nullptr == ( pNd = aIdx.GetNode().StartOfSectionNode()->GetSectionNode()) )
+ while( aIdx.GetIndex() )
{
+ pNd = aIdx.GetNode().StartOfSectionNode()->GetSectionNode();
+ if (pNd)
+ break;
--aIdx;
if ( aIdx == aOldIdx )
{
@@ -113,9 +115,11 @@ bool GotoNextRegion( SwPaM& rCurrentCursor, SwMoveFnCollection const & fnPosRegi
SwNodeIndex aOldIdx = aIdx;
sal_uLong nEndCount = aIdx.GetNode().GetNodes().Count()-1;
do {
- while( aIdx.GetIndex() < nEndCount &&
- nullptr == ( pNd = aIdx.GetNode().GetSectionNode()) )
+ while( aIdx.GetIndex() < nEndCount )
{
+ pNd = aIdx.GetNode().GetSectionNode();
+ if (pNd)
+ break;
++aIdx;
if ( aIdx == aOldIdx )
{
@@ -245,19 +249,19 @@ bool SwCursor::GotoRegion( const OUString& rName )
for( SwSectionFormats::size_type n = rFormats.size(); n; )
{
const SwSectionFormat* pFormat = rFormats[ --n ];
- const SwNodeIndex* pIdx = nullptr;
- const SwSection* pSect;
- if( nullptr != ( pSect = pFormat->GetSection() ) &&
- pSect->GetSectionName() == rName &&
- nullptr != ( pIdx = pFormat->GetContent().GetContentIdx() ) &&
- pIdx->GetNode().GetNodes().IsDocNodes() )
+ const SwSection* pSect = pFormat->GetSection();
+ if( pSect && pSect->GetSectionName() == rName )
{
- // area in normal nodes array
- SwCursorSaveState aSaveState( *this );
+ const SwNodeIndex* pIdx = pFormat->GetContent().GetContentIdx();
+ if( pIdx && pIdx->GetNode().GetNodes().IsDocNodes() )
+ {
+ // area in normal nodes array
+ SwCursorSaveState aSaveState( *this );
- GetPoint()->nNode = *pIdx;
- Move( fnMoveForward, GoInContent );
- bRet = !IsSelOvr();
+ GetPoint()->nNode = *pIdx;
+ Move( fnMoveForward, GoInContent );
+ bRet = !IsSelOvr();
+ }
}
}
return bRet;
More information about the Libreoffice-commits
mailing list