sw/source/core/doc/DocumentChartDataProviderManager.cxx | 40 - sw/source/core/doc/DocumentContentOperationsManager.cxx | 308 ++++---- sw/source/core/doc/DocumentDeviceManager.cxx | 56 - sw/source/core/doc/DocumentDrawModelManager.cxx | 26 sw/source/core/doc/DocumentFieldsManager.cxx | 62 - sw/source/core/doc/DocumentRedlineManager.cxx | 120 +-- sw/source/core/doc/DocumentSettingManager.cxx | 40 - sw/source/core/doc/DocumentStatisticsManager.cxx | 22 sw/source/core/doc/acmplwrd.cxx | 28 sw/source/core/doc/doc.cxx | 140 +-- sw/source/core/doc/docbm.cxx | 42 - sw/source/core/doc/docchart.cxx | 24 sw/source/core/doc/doccomp.cxx | 204 ++--- sw/source/core/doc/docdesc.cxx | 48 - sw/source/core/doc/docedt.cxx | 78 +- sw/source/core/doc/docfld.cxx | 70 - sw/source/core/doc/docfmt.cxx | 68 - sw/source/core/doc/doclay.cxx | 50 - sw/source/core/doc/docnew.cxx | 34 sw/source/core/doc/docnum.cxx | 101 +- sw/source/core/doc/docredln.cxx | 184 ++--- sw/source/core/doc/docsort.cxx | 22 sw/source/core/doc/doctxm.cxx | 51 - sw/source/core/doc/docxforms.cxx | 56 - sw/source/core/doc/extinput.cxx | 287 +++---- sw/source/core/doc/fmtcol.cxx | 28 sw/source/core/doc/htmltbl.cxx | 491 ++++++------- sw/source/core/doc/notxtfrm.cxx | 72 - sw/source/core/doc/number.cxx | 126 +-- sw/source/core/doc/swserv.cxx | 152 ++-- sw/source/core/doc/tblafmt.cxx | 134 +-- sw/source/core/doc/tblcpy.cxx | 236 +++--- sw/source/core/doc/tblrwcl.cxx | 96 +- sw/source/core/doc/textboxhelper.cxx | 578 ++++++++-------- sw/source/core/doc/visiturl.cxx | 78 +- sw/source/core/draw/dcontact.cxx | 148 ++-- sw/source/core/draw/dflyobj.cxx | 234 +++--- sw/source/core/draw/dview.cxx | 136 +-- sw/source/core/edit/acorrect.cxx | 66 - sw/source/core/edit/autofmt.cxx | 94 +- sw/source/core/edit/edfcol.cxx | 54 - sw/source/core/edit/editsh.cxx | 38 - sw/source/core/edit/edlingu.cxx | 200 ++--- sw/source/core/edit/edsect.cxx | 30 sw/source/core/edit/edtox.cxx | 44 - sw/source/core/edit/edundo.cxx | 30 46 files changed, 2613 insertions(+), 2613 deletions(-)
New commits: commit da64ad86e9f2dd66fbcecb46dcc22626e9f5a6a6 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Jul 30 10:34:02 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Aug 1 09:20:08 2020 +0200 loplugin:flatten in sw/core/doc Change-Id: If7738d47ec0273f24eee99b7336380cfa78c1243 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99896 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/core/doc/DocumentChartDataProviderManager.cxx b/sw/source/core/doc/DocumentChartDataProviderManager.cxx index 90785725e2dd..72640b4629d4 100644 --- a/sw/source/core/doc/DocumentChartDataProviderManager.cxx +++ b/sw/source/core/doc/DocumentChartDataProviderManager.cxx @@ -55,32 +55,32 @@ SwChartDataProvider * DocumentChartDataProviderManager::GetChartDataProvider( bo void DocumentChartDataProviderManager::CreateChartInternalDataProviders( const SwTable *pTable ) { - if (pTable) + if (!pTable) + return; + + OUString aName( pTable->GetFrameFormat()->GetName() ); + SwOLENode *pONd; + SwStartNode *pStNd; + SwNodeIndex aIdx( *m_rDoc.GetNodes().GetEndOfAutotext().StartOfSectionNode(), 1 ); + while (nullptr != (pStNd = aIdx.GetNode().GetStartNode())) { - OUString aName( pTable->GetFrameFormat()->GetName() ); - SwOLENode *pONd; - SwStartNode *pStNd; - SwNodeIndex aIdx( *m_rDoc.GetNodes().GetEndOfAutotext().StartOfSectionNode(), 1 ); - while (nullptr != (pStNd = aIdx.GetNode().GetStartNode())) + ++aIdx; + pONd = aIdx.GetNode().GetOLENode(); + if( pONd && + aName == pONd->GetChartTableName() /* OLE node is chart? */ && + nullptr != (pONd->getLayoutFrame( m_rDoc.getIDocumentLayoutAccess().GetCurrentLayout() )) /* chart frame is not hidden */ ) { - ++aIdx; - pONd = aIdx.GetNode().GetOLENode(); - if( pONd && - aName == pONd->GetChartTableName() /* OLE node is chart? */ && - nullptr != (pONd->getLayoutFrame( m_rDoc.getIDocumentLayoutAccess().GetCurrentLayout() )) /* chart frame is not hidden */ ) + uno::Reference < embed::XEmbeddedObject > xIP = pONd->GetOLEObj().GetOleRef(); + if ( svt::EmbeddedObjectRef::TryRunningState( xIP ) ) { - uno::Reference < embed::XEmbeddedObject > xIP = pONd->GetOLEObj().GetOleRef(); - if ( svt::EmbeddedObjectRef::TryRunningState( xIP ) ) - { - uno::Reference< chart2::XChartDocument > xChart( xIP->getComponent(), UNO_QUERY ); - if (xChart.is()) - xChart->createInternalDataProvider( true ); + uno::Reference< chart2::XChartDocument > xChart( xIP->getComponent(), UNO_QUERY ); + if (xChart.is()) + xChart->createInternalDataProvider( true ); - // there may be more than one chart for each table thus we need to continue the loop... - } + // there may be more than one chart for each table thus we need to continue the loop... } - aIdx.Assign( *pStNd->EndOfSectionNode(), + 1 ); } + aIdx.Assign( *pStNd->EndOfSectionNode(), + 1 ); } } diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index 434be7f7de7b..695057d342c2 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -335,86 +335,86 @@ namespace { const SwDoc* pSrcDoc = rPam.GetDoc(); const SwRedlineTable& rTable = pSrcDoc->getIDocumentRedlineAccess().GetRedlineTable(); - if( !rTable.empty() ) - { - SwDoc* pDestDoc = rCpyPam.GetDoc(); - SwPosition* pCpyStt = rCpyPam.Start(), *pCpyEnd = rCpyPam.End(); - std::unique_ptr<SwPaM> pDelPam; - const SwPosition *pStt = rPam.Start(), *pEnd = rPam.End(); - // We have to count the "non-copied" nodes - sal_uLong nDelCount; - SwNodeIndex aCorrIdx(InitDelCount(rPam, nDelCount)); - - SwRedlineTable::size_type n = 0; - pSrcDoc->getIDocumentRedlineAccess().GetRedline( *pStt, &n ); - for( ; n < rTable.size(); ++n ) + if( rTable.empty() ) + return; + + SwDoc* pDestDoc = rCpyPam.GetDoc(); + SwPosition* pCpyStt = rCpyPam.Start(), *pCpyEnd = rCpyPam.End(); + std::unique_ptr<SwPaM> pDelPam; + const SwPosition *pStt = rPam.Start(), *pEnd = rPam.End(); + // We have to count the "non-copied" nodes + sal_uLong nDelCount; + SwNodeIndex aCorrIdx(InitDelCount(rPam, nDelCount)); + + SwRedlineTable::size_type n = 0; + pSrcDoc->getIDocumentRedlineAccess().GetRedline( *pStt, &n ); + for( ; n < rTable.size(); ++n ) + { + const SwRangeRedline* pRedl = rTable[ n ]; + if( RedlineType::Delete == pRedl->GetType() && pRedl->IsVisible() ) { - const SwRangeRedline* pRedl = rTable[ n ]; - if( RedlineType::Delete == pRedl->GetType() && pRedl->IsVisible() ) - { - const SwPosition *pRStt = pRedl->Start(), *pREnd = pRedl->End(); + const SwPosition *pRStt = pRedl->Start(), *pREnd = pRedl->End(); - SwComparePosition eCmpPos = ComparePosition( *pStt, *pEnd, *pRStt, *pREnd ); - switch( eCmpPos ) - { - case SwComparePosition::CollideEnd: - case SwComparePosition::Before: - // Pos1 is before Pos2 - break; + SwComparePosition eCmpPos = ComparePosition( *pStt, *pEnd, *pRStt, *pREnd ); + switch( eCmpPos ) + { + case SwComparePosition::CollideEnd: + case SwComparePosition::Before: + // Pos1 is before Pos2 + break; - case SwComparePosition::CollideStart: - case SwComparePosition::Behind: - // Pos1 is after Pos2 - n = rTable.size(); - break; + case SwComparePosition::CollideStart: + case SwComparePosition::Behind: + // Pos1 is after Pos2 + n = rTable.size(); + break; - default: + default: + { + pDelPam.reset(new SwPaM( *pCpyStt, pDelPam.release() )); + if( *pStt < *pRStt ) { - pDelPam.reset(new SwPaM( *pCpyStt, pDelPam.release() )); - if( *pStt < *pRStt ) - { - lcl_NonCopyCount( rPam, aCorrIdx, pRStt->nNode.GetIndex(), nDelCount ); - lcl_SetCpyPos( *pRStt, *pStt, *pCpyStt, - *pDelPam->GetPoint(), nDelCount ); - } - pDelPam->SetMark(); + lcl_NonCopyCount( rPam, aCorrIdx, pRStt->nNode.GetIndex(), nDelCount ); + lcl_SetCpyPos( *pRStt, *pStt, *pCpyStt, + *pDelPam->GetPoint(), nDelCount ); + } + pDelPam->SetMark(); - if( *pEnd < *pREnd ) - *pDelPam->GetPoint() = *pCpyEnd; - else - { - lcl_NonCopyCount( rPam, aCorrIdx, pREnd->nNode.GetIndex(), nDelCount ); - lcl_SetCpyPos( *pREnd, *pStt, *pCpyStt, - *pDelPam->GetPoint(), nDelCount ); - } + if( *pEnd < *pREnd ) + *pDelPam->GetPoint() = *pCpyEnd; + else + { + lcl_NonCopyCount( rPam, aCorrIdx, pREnd->nNode.GetIndex(), nDelCount ); + lcl_SetCpyPos( *pREnd, *pStt, *pCpyStt, + *pDelPam->GetPoint(), nDelCount ); + } - if (pDelPam->GetNext() && *pDelPam->GetNext()->End() == *pDelPam->Start()) - { - *pDelPam->GetNext()->End() = *pDelPam->End(); - pDelPam.reset(pDelPam->GetNext()); - } + if (pDelPam->GetNext() && *pDelPam->GetNext()->End() == *pDelPam->Start()) + { + *pDelPam->GetNext()->End() = *pDelPam->End(); + pDelPam.reset(pDelPam->GetNext()); } } } } + } - if( pDelPam ) - { - RedlineFlags eOld = pDestDoc->getIDocumentRedlineAccess().GetRedlineFlags(); - pDestDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld | RedlineFlags::Ignore ); + if( !pDelPam ) + return; - ::sw::UndoGuard const undoGuard(pDestDoc->GetIDocumentUndoRedo()); + RedlineFlags eOld = pDestDoc->getIDocumentRedlineAccess().GetRedlineFlags(); + pDestDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld | RedlineFlags::Ignore ); - do { - pDestDoc->getIDocumentContentOperations().DeleteAndJoin( *pDelPam->GetNext() ); - if( !pDelPam->IsMultiSelection() ) - break; - delete pDelPam->GetNext(); - } while( true ); + ::sw::UndoGuard const undoGuard(pDestDoc->GetIDocumentUndoRedo()); - pDestDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld ); - } - } + do { + pDestDoc->getIDocumentContentOperations().DeleteAndJoin( *pDelPam->GetNext() ); + if( !pDelPam->IsMultiSelection() ) + break; + delete pDelPam->GetNext(); + } while( true ); + + pDestDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld ); } void lcl_DeleteRedlines( const SwNodeRange& rRg, SwNodeRange const & rCpyRg ) @@ -2948,23 +2948,23 @@ void DocumentContentOperationsManager::ReRead( SwPaM& rPam, const OUString& rGrf const OUString& rFltName, const Graphic* pGraphic ) { SwGrfNode *pGrfNd; - if( ( !rPam.HasMark() + if( !(( !rPam.HasMark() || rPam.GetPoint()->nNode.GetIndex() == rPam.GetMark()->nNode.GetIndex() ) - && nullptr != ( pGrfNd = rPam.GetPoint()->nNode.GetNode().GetGrfNode() ) ) + && nullptr != ( pGrfNd = rPam.GetPoint()->nNode.GetNode().GetGrfNode() )) ) + return; + + if (m_rDoc.GetIDocumentUndoRedo().DoesUndo()) { - if (m_rDoc.GetIDocumentUndoRedo().DoesUndo()) - { - m_rDoc.GetIDocumentUndoRedo().AppendUndo(std::make_unique<SwUndoReRead>(rPam, *pGrfNd)); - } + m_rDoc.GetIDocumentUndoRedo().AppendUndo(std::make_unique<SwUndoReRead>(rPam, *pGrfNd)); + } - // Because we don't know if we can mirror the graphic, the mirror attribute is always reset - if( MirrorGraph::Dont != pGrfNd->GetSwAttrSet(). - GetMirrorGrf().GetValue() ) - pGrfNd->SetAttr( SwMirrorGrf() ); + // Because we don't know if we can mirror the graphic, the mirror attribute is always reset + if( MirrorGraph::Dont != pGrfNd->GetSwAttrSet(). + GetMirrorGrf().GetValue() ) + pGrfNd->SetAttr( SwMirrorGrf() ); - pGrfNd->ReRead( rGrfName, rFltName, pGraphic ); - m_rDoc.getIDocumentState().SetModified(); - } + pGrfNd->ReRead( rGrfName, rFltName, pGraphic ); + m_rDoc.getIDocumentState().SetModified(); } // Insert drawing object, which has to be already inserted in the DrawModel @@ -3399,28 +3399,28 @@ void DocumentContentOperationsManager::InsertItemSet ( const SwPaM &rRg, const S void DocumentContentOperationsManager::RemoveLeadingWhiteSpace(const SwPosition & rPos ) { const SwTextNode* pTNd = rPos.nNode.GetNode().GetTextNode(); - if ( pTNd ) + if ( !pTNd ) + return; + + const OUString& rText = pTNd->GetText(); + sal_Int32 nIdx = 0; + while (nIdx < rText.getLength()) { - const OUString& rText = pTNd->GetText(); - sal_Int32 nIdx = 0; - while (nIdx < rText.getLength()) + sal_Unicode const cCh = rText[nIdx]; + if (('\t' != cCh) && (' ' != cCh)) { - sal_Unicode const cCh = rText[nIdx]; - if (('\t' != cCh) && (' ' != cCh)) - { - break; - } - ++nIdx; + break; } + ++nIdx; + } - if ( nIdx > 0 ) - { - SwPaM aPam(rPos); - aPam.GetPoint()->nContent = 0; - aPam.SetMark(); - aPam.GetMark()->nContent = nIdx; - DeleteRange( aPam ); - } + if ( nIdx > 0 ) + { + SwPaM aPam(rPos); + aPam.GetPoint()->nContent = 0; + aPam.SetMark(); + aPam.GetMark()->nContent = nIdx; + DeleteRange( aPam ); } } @@ -3798,41 +3798,41 @@ void DocumentContentOperationsManager::CopyFlyInFlyImpl( // Rebuild as much as possible of all chains that are available in the original, OSL_ENSURE( aSet.size() == aVecSwFrameFormat.size(), "Missing new Flys" ); - if ( aSet.size() == aVecSwFrameFormat.size() ) + if ( aSet.size() != aVecSwFrameFormat.size() ) + return; + + size_t n = 0; + for (const auto& rFlyN : aSet) { - size_t n = 0; - for (const auto& rFlyN : aSet) + const SwFrameFormat *pFormatN = rFlyN.GetFormat(); + const SwFormatChain &rChain = pFormatN->GetChain(); + int nCnt = int(nullptr != rChain.GetPrev()); + nCnt += rChain.GetNext() ? 1: 0; + size_t k = 0; + for (const auto& rFlyK : aSet) { - const SwFrameFormat *pFormatN = rFlyN.GetFormat(); - const SwFormatChain &rChain = pFormatN->GetChain(); - int nCnt = int(nullptr != rChain.GetPrev()); - nCnt += rChain.GetNext() ? 1: 0; - size_t k = 0; - for (const auto& rFlyK : aSet) + const SwFrameFormat *pFormatK = rFlyK.GetFormat(); + if ( rChain.GetPrev() == pFormatK ) { - const SwFrameFormat *pFormatK = rFlyK.GetFormat(); - if ( rChain.GetPrev() == pFormatK ) - { - ::lcl_ChainFormats( static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[k]), - static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[n]) ); - --nCnt; - } - else if ( rChain.GetNext() == pFormatK ) - { - ::lcl_ChainFormats( static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[n]), - static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[k]) ); - --nCnt; - } - ++k; + ::lcl_ChainFormats( static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[k]), + static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[n]) ); + --nCnt; + } + else if ( rChain.GetNext() == pFormatK ) + { + ::lcl_ChainFormats( static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[n]), + static_cast< SwFlyFrameFormat* >(aVecSwFrameFormat[k]) ); + --nCnt; } - ++n; + ++k; } - - // Re-create content property of draw formats, knowing how old shapes - // were paired with old fly formats (aOldTextBoxes) and that aSet is - // parallel with aVecSwFrameFormat. - SwTextBoxHelper::restoreLinks(aSet, aVecSwFrameFormat, aOldTextBoxes, aOldContent); + ++n; } + + // Re-create content property of draw formats, knowing how old shapes + // were paired with old fly formats (aOldTextBoxes) and that aSet is + // parallel with aVecSwFrameFormat. + SwTextBoxHelper::restoreLinks(aSet, aVecSwFrameFormat, aOldTextBoxes, aOldContent); } /* @@ -4550,20 +4550,20 @@ static void lcl_PushNumruleState( // Safe numrule item at destination. // #i86492# - Safe also <ListId> item of destination. const SfxItemSet * pAttrSet = pDestTextNd->GetpSwAttrSet(); - if (pAttrSet != nullptr) + if (pAttrSet == nullptr) + return; + + const SfxPoolItem * pItem = nullptr; + aNumRuleState = pAttrSet->GetItemState(RES_PARATR_NUMRULE, false, &pItem); + if (SfxItemState::SET == aNumRuleState) { - const SfxPoolItem * pItem = nullptr; - aNumRuleState = pAttrSet->GetItemState(RES_PARATR_NUMRULE, false, &pItem); - if (SfxItemState::SET == aNumRuleState) - { - aNumRuleItem.reset(static_cast<SwNumRuleItem*>(pItem->Clone())); - } + aNumRuleItem.reset(static_cast<SwNumRuleItem*>(pItem->Clone())); + } - aListIdState = pAttrSet->GetItemState(RES_PARATR_LIST_ID, false, &pItem); - if (SfxItemState::SET == aListIdState) - { - aListIdItem.reset(static_cast<SfxStringItem*>(pItem->Clone())); - } + aListIdState = pAttrSet->GetItemState(RES_PARATR_LIST_ID, false, &pItem); + if (SfxItemState::SET == aListIdState) + { + aListIdItem.reset(static_cast<SfxStringItem*>(pItem->Clone())); } } @@ -4575,24 +4575,24 @@ static void lcl_PopNumruleState( /* If only a part of one paragraph is copied restore the numrule at the destination. */ // #i86492# - restore also <ListId> item - if ( !lcl_MarksWholeNode(rPam) ) + if ( lcl_MarksWholeNode(rPam) ) + return; + + if (SfxItemState::SET == aNumRuleState) { - if (SfxItemState::SET == aNumRuleState) - { - pDestTextNd->SetAttr(*aNumRuleItem); - } - else - { - pDestTextNd->ResetAttr(RES_PARATR_NUMRULE); - } - if (SfxItemState::SET == aListIdState) - { - pDestTextNd->SetAttr(*aListIdItem); - } - else - { - pDestTextNd->ResetAttr(RES_PARATR_LIST_ID); - } + pDestTextNd->SetAttr(*aNumRuleItem); + } + else + { + pDestTextNd->ResetAttr(RES_PARATR_NUMRULE); + } + if (SfxItemState::SET == aListIdState) + { + pDestTextNd->SetAttr(*aListIdItem); + } + else + { + pDestTextNd->ResetAttr(RES_PARATR_LIST_ID); } } diff --git a/sw/source/core/doc/DocumentDeviceManager.cxx b/sw/source/core/doc/DocumentDeviceManager.cxx index 18da1249341c..5dadd15d2130 100644 --- a/sw/source/core/doc/DocumentDeviceManager.cxx +++ b/sw/source/core/doc/DocumentDeviceManager.cxx @@ -143,38 +143,38 @@ OutputDevice* DocumentDeviceManager::getReferenceDevice(/*[in]*/ bool bCreate ) void DocumentDeviceManager::setReferenceDeviceType(/*[in]*/ bool bNewVirtual, /*[in]*/ bool bNewHiRes ) { - if ( m_rDoc.GetDocumentSettingManager().get(DocumentSettingId::USE_VIRTUAL_DEVICE) != bNewVirtual || - m_rDoc.GetDocumentSettingManager().get(DocumentSettingId::USE_HIRES_VIRTUAL_DEVICE) != bNewHiRes ) - { - if ( bNewVirtual ) - { - VirtualDevice* pMyVirDev = getVirtualDevice( true ); - if ( !bNewHiRes ) - pMyVirDev->SetReferenceDevice( VirtualDevice::RefDevMode::Dpi600 ); - else - pMyVirDev->SetReferenceDevice( VirtualDevice::RefDevMode::MSO1 ); + if ( m_rDoc.GetDocumentSettingManager().get(DocumentSettingId::USE_VIRTUAL_DEVICE) == bNewVirtual && + m_rDoc.GetDocumentSettingManager().get(DocumentSettingId::USE_HIRES_VIRTUAL_DEVICE) == bNewHiRes ) + return; - if( m_rDoc.getIDocumentDrawModelAccess().GetDrawModel() ) - m_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pMyVirDev ); - } + if ( bNewVirtual ) + { + VirtualDevice* pMyVirDev = getVirtualDevice( true ); + if ( !bNewHiRes ) + pMyVirDev->SetReferenceDevice( VirtualDevice::RefDevMode::Dpi600 ); else - { - // #i41075# - // We have to take care that a printer exists before calling - // PrtDataChanged() in order to prevent that PrtDataChanged() - // triggers this funny situation: - // getReferenceDevice()->getPrinter()->CreatePrinter_() - // ->setPrinter()-> PrtDataChanged() - SfxPrinter* pPrinter = getPrinter( true ); - if( m_rDoc.getIDocumentDrawModelAccess().GetDrawModel() ) - m_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pPrinter ); - } + pMyVirDev->SetReferenceDevice( VirtualDevice::RefDevMode::MSO1 ); - m_rDoc.GetDocumentSettingManager().set(DocumentSettingId::USE_VIRTUAL_DEVICE, bNewVirtual ); - m_rDoc.GetDocumentSettingManager().set(DocumentSettingId::USE_HIRES_VIRTUAL_DEVICE, bNewHiRes ); - PrtDataChanged(); - m_rDoc.getIDocumentState().SetModified(); + if( m_rDoc.getIDocumentDrawModelAccess().GetDrawModel() ) + m_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pMyVirDev ); + } + else + { + // #i41075# + // We have to take care that a printer exists before calling + // PrtDataChanged() in order to prevent that PrtDataChanged() + // triggers this funny situation: + // getReferenceDevice()->getPrinter()->CreatePrinter_() + // ->setPrinter()-> PrtDataChanged() + SfxPrinter* pPrinter = getPrinter( true ); + if( m_rDoc.getIDocumentDrawModelAccess().GetDrawModel() ) + m_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pPrinter ); } + + m_rDoc.GetDocumentSettingManager().set(DocumentSettingId::USE_VIRTUAL_DEVICE, bNewVirtual ); + m_rDoc.GetDocumentSettingManager().set(DocumentSettingId::USE_HIRES_VIRTUAL_DEVICE, bNewHiRes ); + PrtDataChanged(); + m_rDoc.getIDocumentState().SetModified(); } const JobSetup* DocumentDeviceManager::getJobsetup() const diff --git a/sw/source/core/doc/DocumentDrawModelManager.cxx b/sw/source/core/doc/DocumentDrawModelManager.cxx index ef1aa1a29d65..57ecf006d278 100644 --- a/sw/source/core/doc/DocumentDrawModelManager.cxx +++ b/sw/source/core/doc/DocumentDrawModelManager.cxx @@ -131,21 +131,21 @@ void DocumentDrawModelManager::InitDrawModel() mpDrawModel->SetNotifyUndoActionHdl( std::bind( &SwDoc::AddDrawUndo, &m_rDoc, std::placeholders::_1 )); SwViewShell* const pSh = m_rDoc.getIDocumentLayoutAccess().GetCurrentViewShell(); - if ( pSh ) + if ( !pSh ) + return; + + for(const SwViewShell& rViewSh : pSh->GetRingContainer()) { - for(const SwViewShell& rViewSh : pSh->GetRingContainer()) + SwRootFrame* pRoot = rViewSh.GetLayout(); + if( pRoot && !pRoot->GetDrawPage() ) { - SwRootFrame* pRoot = rViewSh.GetLayout(); - if( pRoot && !pRoot->GetDrawPage() ) - { - // Disable "multiple layout" for the moment: - // use pMasterPage instead of a new created SdrPage - // mpDrawModel->AllocPage( FALSE ); - // mpDrawModel->InsertPage( pDrawPage ); - SdrPage* pDrawPage = pMasterPage; - pRoot->SetDrawPage( pDrawPage ); - pDrawPage->SetSize( pRoot->getFrameArea().SSize() ); - } + // Disable "multiple layout" for the moment: + // use pMasterPage instead of a new created SdrPage + // mpDrawModel->AllocPage( FALSE ); + // mpDrawModel->InsertPage( pDrawPage ); + SdrPage* pDrawPage = pMasterPage; + pRoot->SetDrawPage( pDrawPage ); + pDrawPage->SetSize( pRoot->getFrameArea().SSize() ); } } } diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx index af90f08f8270..c77e93aa00c9 100644 --- a/sw/source/core/doc/DocumentFieldsManager.cxx +++ b/sw/source/core/doc/DocumentFieldsManager.cxx @@ -343,43 +343,43 @@ void DocumentFieldsManager::RemoveFieldType(size_t nField) /* * Dependent fields present -> ErrRaise */ - if(nField < mpFieldTypes->size()) - { - SwFieldType* pTmp = (*mpFieldTypes)[nField].get(); + if(nField >= mpFieldTypes->size()) + return; - // JP 29.07.96: Optionally prepare FieldList for Calculator - SwFieldIds nWhich = pTmp->Which(); - switch( nWhich ) - { - case SwFieldIds::SetExp: - case SwFieldIds::User: - mpUpdateFields->RemoveFieldType( *pTmp ); - [[fallthrough]]; - case SwFieldIds::Dde: - if( pTmp->HasWriterListeners() && !m_rDoc.IsUsed( *pTmp ) ) - { - if( SwFieldIds::SetExp == nWhich ) - static_cast<SwSetExpFieldType*>(pTmp)->SetDeleted( true ); - else if( SwFieldIds::User == nWhich ) - static_cast<SwUserFieldType*>(pTmp)->SetDeleted( true ); - else - static_cast<SwDDEFieldType*>(pTmp)->SetDeleted( true ); - nWhich = SwFieldIds::Database; - } - break; - default: break; - } + SwFieldType* pTmp = (*mpFieldTypes)[nField].get(); - if( nWhich != SwFieldIds::Database ) + // JP 29.07.96: Optionally prepare FieldList for Calculator + SwFieldIds nWhich = pTmp->Which(); + switch( nWhich ) + { + case SwFieldIds::SetExp: + case SwFieldIds::User: + mpUpdateFields->RemoveFieldType( *pTmp ); + [[fallthrough]]; + case SwFieldIds::Dde: + if( pTmp->HasWriterListeners() && !m_rDoc.IsUsed( *pTmp ) ) { - OSL_ENSURE( !pTmp->HasWriterListeners(), "Dependent fields present!" ); + if( SwFieldIds::SetExp == nWhich ) + static_cast<SwSetExpFieldType*>(pTmp)->SetDeleted( true ); + else if( SwFieldIds::User == nWhich ) + static_cast<SwUserFieldType*>(pTmp)->SetDeleted( true ); + else + static_cast<SwDDEFieldType*>(pTmp)->SetDeleted( true ); + nWhich = SwFieldIds::Database; } - else - (*mpFieldTypes)[nField].release(); // DB fields are ref-counted and delete themselves + break; + default: break; + } - mpFieldTypes->erase( mpFieldTypes->begin() + nField ); - m_rDoc.getIDocumentState().SetModified(); + if( nWhich != SwFieldIds::Database ) + { + OSL_ENSURE( !pTmp->HasWriterListeners(), "Dependent fields present!" ); } + else + (*mpFieldTypes)[nField].release(); // DB fields are ref-counted and delete themselves + + mpFieldTypes->erase( mpFieldTypes->begin() + nField ); + m_rDoc.getIDocumentState().SetModified(); } // All have to be re-evaluated. diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index 143e20e21005..52bd17fd5230 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -957,81 +957,81 @@ RedlineFlags DocumentRedlineManager::GetRedlineFlags() const void DocumentRedlineManager::SetRedlineFlags( RedlineFlags eMode ) { - if( meRedlineFlags != eMode ) + if( meRedlineFlags == eMode ) + return; + + if( (RedlineFlags::ShowMask & meRedlineFlags) != (RedlineFlags::ShowMask & eMode) + || !(RedlineFlags::ShowMask & eMode) ) { - if( (RedlineFlags::ShowMask & meRedlineFlags) != (RedlineFlags::ShowMask & eMode) - || !(RedlineFlags::ShowMask & eMode) ) + bool bSaveInXMLImportFlag = m_rDoc.IsInXMLImport(); + m_rDoc.SetInXMLImport( false ); + // and then hide/display everything + void (SwRangeRedline::*pFnc)(sal_uInt16, size_t); // Allow compiler warn if use of + // uninitialized ptr is possible + + RedlineFlags eShowMode = RedlineFlags::ShowMask & eMode; + if (eShowMode == (RedlineFlags::ShowInsert | RedlineFlags::ShowDelete)) + pFnc = &SwRangeRedline::Show; + else if (eShowMode == RedlineFlags::ShowInsert) + pFnc = &SwRangeRedline::Hide; + else if (eShowMode == RedlineFlags::ShowDelete) + pFnc = &SwRangeRedline::ShowOriginal; + else { - bool bSaveInXMLImportFlag = m_rDoc.IsInXMLImport(); - m_rDoc.SetInXMLImport( false ); - // and then hide/display everything - void (SwRangeRedline::*pFnc)(sal_uInt16, size_t); // Allow compiler warn if use of - // uninitialized ptr is possible - - RedlineFlags eShowMode = RedlineFlags::ShowMask & eMode; - if (eShowMode == (RedlineFlags::ShowInsert | RedlineFlags::ShowDelete)) - pFnc = &SwRangeRedline::Show; - else if (eShowMode == RedlineFlags::ShowInsert) - pFnc = &SwRangeRedline::Hide; - else if (eShowMode == RedlineFlags::ShowDelete) - pFnc = &SwRangeRedline::ShowOriginal; - else - { - pFnc = &SwRangeRedline::Hide; - eMode |= RedlineFlags::ShowInsert; - } + pFnc = &SwRangeRedline::Hide; + eMode |= RedlineFlags::ShowInsert; + } - CheckAnchoredFlyConsistency(m_rDoc); - CHECK_REDLINE( *this ) + CheckAnchoredFlyConsistency(m_rDoc); + CHECK_REDLINE( *this ) - o3tl::sorted_vector<SwRootFrame *> hiddenLayouts; - if (eShowMode == (RedlineFlags::ShowInsert | RedlineFlags::ShowDelete)) + o3tl::sorted_vector<SwRootFrame *> hiddenLayouts; + if (eShowMode == (RedlineFlags::ShowInsert | RedlineFlags::ShowDelete)) + { + // sw_redlinehide: the problem here is that MoveFromSection + // creates the frames wrongly (non-merged), because its own + // SwRangeRedline has wrong positions until after the nodes + // are all moved, so fix things up by force by re-creating + // all merged frames from scratch. + o3tl::sorted_vector<SwRootFrame *> const layouts(m_rDoc.GetAllLayouts()); + for (SwRootFrame *const pLayout : layouts) { - // sw_redlinehide: the problem here is that MoveFromSection - // creates the frames wrongly (non-merged), because its own - // SwRangeRedline has wrong positions until after the nodes - // are all moved, so fix things up by force by re-creating - // all merged frames from scratch. - o3tl::sorted_vector<SwRootFrame *> const layouts(m_rDoc.GetAllLayouts()); - for (SwRootFrame *const pLayout : layouts) + if (pLayout->IsHideRedlines()) { - if (pLayout->IsHideRedlines()) - { - pLayout->SetHideRedlines(false); - hiddenLayouts.insert(pLayout); - } + pLayout->SetHideRedlines(false); + hiddenLayouts.insert(pLayout); } } + } - for (sal_uInt16 nLoop = 1; nLoop <= 2; ++nLoop) - for (size_t i = 0; i < mpRedlineTable->size(); ++i) - { - SwRangeRedline *const pRedline((*mpRedlineTable)[i]); - (pRedline->*pFnc)(nLoop, i); - while (mpRedlineTable->size() <= i - || (*mpRedlineTable)[i] != pRedline) - { // ensure current position - --i; // a previous redline may have been deleted - } + for (sal_uInt16 nLoop = 1; nLoop <= 2; ++nLoop) + for (size_t i = 0; i < mpRedlineTable->size(); ++i) + { + SwRangeRedline *const pRedline((*mpRedlineTable)[i]); + (pRedline->*pFnc)(nLoop, i); + while (mpRedlineTable->size() <= i + || (*mpRedlineTable)[i] != pRedline) + { // ensure current position + --i; // a previous redline may have been deleted } + } - //SwRangeRedline::MoveFromSection routinely changes - //the keys that mpRedlineTable is sorted by - mpRedlineTable->Resort(); - - CheckAnchoredFlyConsistency(m_rDoc); - CHECK_REDLINE( *this ) + //SwRangeRedline::MoveFromSection routinely changes + //the keys that mpRedlineTable is sorted by + mpRedlineTable->Resort(); - for (SwRootFrame *const pLayout : hiddenLayouts) - { - pLayout->SetHideRedlines(true); - } + CheckAnchoredFlyConsistency(m_rDoc); + CHECK_REDLINE( *this ) - m_rDoc.SetInXMLImport( bSaveInXMLImportFlag ); + for (SwRootFrame *const pLayout : hiddenLayouts) + { + pLayout->SetHideRedlines(true); } - meRedlineFlags = eMode; - m_rDoc.getIDocumentState().SetModified(); + + m_rDoc.SetInXMLImport( bSaveInXMLImportFlag ); } + meRedlineFlags = eMode; + m_rDoc.getIDocumentState().SetModified(); // #TODO - add 'SwExtraRedlineTable' also ? } diff --git a/sw/source/core/doc/DocumentSettingManager.cxx b/sw/source/core/doc/DocumentSettingManager.cxx index 09f0d5efb2cc..843b6067f3c6 100644 --- a/sw/source/core/doc/DocumentSettingManager.cxx +++ b/sw/source/core/doc/DocumentSettingManager.cxx @@ -571,28 +571,28 @@ CharCompressType sw::DocumentSettingManager::getCharacterCompressionType() const void sw::DocumentSettingManager::setCharacterCompressionType( /*[in]*/CharCompressType n ) { - if( meChrCmprType != n ) + if( meChrCmprType == n ) + return; + + meChrCmprType = n; + + SdrModel *pDrawModel = m_rDoc.getIDocumentDrawModelAccess().GetDrawModel(); + if( pDrawModel ) { - meChrCmprType = n; - - SdrModel *pDrawModel = m_rDoc.getIDocumentDrawModelAccess().GetDrawModel(); - if( pDrawModel ) - { - pDrawModel->SetCharCompressType( n ); - if( !m_rDoc.IsInReading() ) - pDrawModel->ReformatAllTextObjects(); - } - - SwRootFrame* pTmpRoot = m_rDoc.getIDocumentLayoutAccess().GetCurrentLayout(); - if( pTmpRoot && !m_rDoc.IsInReading() ) - { - pTmpRoot->StartAllAction(); - for( auto aLayout : m_rDoc.GetAllLayouts() ) - aLayout->InvalidateAllContent(SwInvalidateFlags::Size); - pTmpRoot->EndAllAction(); - } - m_rDoc.getIDocumentState().SetModified(); + pDrawModel->SetCharCompressType( n ); + if( !m_rDoc.IsInReading() ) + pDrawModel->ReformatAllTextObjects(); } + + SwRootFrame* pTmpRoot = m_rDoc.getIDocumentLayoutAccess().GetCurrentLayout(); + if( pTmpRoot && !m_rDoc.IsInReading() ) + { + pTmpRoot->StartAllAction(); + for( auto aLayout : m_rDoc.GetAllLayouts() ) + aLayout->InvalidateAllContent(SwInvalidateFlags::Size); + pTmpRoot->EndAllAction(); + } + m_rDoc.getIDocumentState().SetModified(); } diff --git a/sw/source/core/doc/DocumentStatisticsManager.cxx b/sw/source/core/doc/DocumentStatisticsManager.cxx index 9508e6d7216c..03e00df6ceee 100644 --- a/sw/source/core/doc/DocumentStatisticsManager.cxx +++ b/sw/source/core/doc/DocumentStatisticsManager.cxx @@ -86,19 +86,19 @@ void DocumentStatisticsManager::SetDocStat( const SwDocStat& rStat ) void DocumentStatisticsManager::UpdateDocStat( bool bCompleteAsync, bool bFields ) { - if( mpDocStat->bModified || !mbInitialized) + if( !(mpDocStat->bModified || !mbInitialized)) + return; + + if (!bCompleteAsync) { - if (!bCompleteAsync) - { - maStatsUpdateIdle.Stop(); - while (IncrementalDocStatCalculate( - std::numeric_limits<long>::max(), bFields)) {} - } - else if (IncrementalDocStatCalculate(5000, bFields)) - maStatsUpdateIdle.Start(); - else - maStatsUpdateIdle.Stop(); + maStatsUpdateIdle.Stop(); + while (IncrementalDocStatCalculate( + std::numeric_limits<long>::max(), bFields)) {} } + else if (IncrementalDocStatCalculate(5000, bFields)) + maStatsUpdateIdle.Start(); + else + maStatsUpdateIdle.Stop(); } // returns true while there is more to do diff --git a/sw/source/core/doc/acmplwrd.cxx b/sw/source/core/doc/acmplwrd.cxx index b256c50658a1..720dfd6c9120 100644 --- a/sw/source/core/doc/acmplwrd.cxx +++ b/sw/source/core/doc/acmplwrd.cxx @@ -361,22 +361,22 @@ void SwAutoCompleteWord::CheckChangedList( } } // remove the elements at the end of the array - if( nMyPos < nMyLen ) + if( nMyPos >= nMyLen ) + return; + + // clear LRU array first then delete the string object + for( ; nNewPos < nMyLen; ++nNewPos ) { - // clear LRU array first then delete the string object - for( ; nNewPos < nMyLen; ++nNewPos ) - { - SwAutoCompleteString *const pDel = - dynamic_cast<SwAutoCompleteString*>(m_WordList[nNewPos]); - SwAutoCompleteStringPtrDeque::iterator it = std::find( m_aLRUList.begin(), m_aLRUList.end(), pDel ); - OSL_ENSURE( m_aLRUList.end() != it, "String not found" ); - m_aLRUList.erase( it ); - delete pDel; - } - // remove from array - m_WordList.erase(m_WordList.begin() + nMyPos, - m_WordList.begin() + nMyLen); + SwAutoCompleteString *const pDel = + dynamic_cast<SwAutoCompleteString*>(m_WordList[nNewPos]); + SwAutoCompleteStringPtrDeque::iterator it = std::find( m_aLRUList.begin(), m_aLRUList.end(), pDel ); + OSL_ENSURE( m_aLRUList.end() != it, "String not found" ); + m_aLRUList.erase( it ); + delete pDel; } + // remove from array + m_WordList.erase(m_WordList.begin() + nMyPos, + m_WordList.begin() + nMyLen); } void SwAutoCompleteWord::DocumentDying(const SwDoc& rDoc) diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index b51e957810b3..f560de2e7238 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -1185,20 +1185,20 @@ void SwDoc::SpellItAgainSam( bool bInvalid, bool bOnlyWrong, bool bSmartTags ) void SwDoc::InvalidateAutoCompleteFlag() { SwRootFrame* pTmpRoot = getIDocumentLayoutAccess().GetCurrentLayout(); - if( pTmpRoot ) - { - o3tl::sorted_vector<SwRootFrame*> aAllLayouts = GetAllLayouts(); - for( auto aLayout : aAllLayouts ) - aLayout->AllInvalidateAutoCompleteWords(); - for( sal_uLong nNd = 1, nCnt = GetNodes().Count(); nNd < nCnt; ++nNd ) - { - SwTextNode* pTextNode = GetNodes()[ nNd ]->GetTextNode(); - if ( pTextNode ) pTextNode->SetAutoCompleteWordDirty( true ); - } + if( !pTmpRoot ) + return; - for( auto aLayout : aAllLayouts ) - aLayout->SetIdleFlags(); + o3tl::sorted_vector<SwRootFrame*> aAllLayouts = GetAllLayouts(); + for( auto aLayout : aAllLayouts ) + aLayout->AllInvalidateAutoCompleteWords(); + for( sal_uLong nNd = 1, nCnt = GetNodes().Count(); nNd < nCnt; ++nNd ) + { + SwTextNode* pTextNode = GetNodes()[ nNd ]->GetTextNode(); + if ( pTextNode ) pTextNode->SetAutoCompleteWordDirty( true ); } + + for( auto aLayout : aAllLayouts ) + aLayout->SetIdleFlags(); } const SwFormatINetFormat* SwDoc::FindINetAttr( const OUString& rName ) const @@ -1223,73 +1223,73 @@ const SwFormatINetFormat* SwDoc::FindINetAttr( const OUString& rName ) const void SwDoc::Summary( SwDoc* pExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, bool bImpress ) { const SwOutlineNodes& rOutNds = GetNodes().GetOutLineNds(); - if( pExtDoc && !rOutNds.empty() ) + if( !(pExtDoc && !rOutNds.empty()) ) + return; + + ::StartProgress( STR_STATSTR_SUMMARY, 0, rOutNds.size(), GetDocShell() ); + SwNodeIndex aEndOfDoc( pExtDoc->GetNodes().GetEndOfContent(), -1 ); + for( SwOutlineNodes::size_type i = 0; i < rOutNds.size(); ++i ) { - ::StartProgress( STR_STATSTR_SUMMARY, 0, rOutNds.size(), GetDocShell() ); - SwNodeIndex aEndOfDoc( pExtDoc->GetNodes().GetEndOfContent(), -1 ); - for( SwOutlineNodes::size_type i = 0; i < rOutNds.size(); ++i ) + ::SetProgressState( static_cast<long>(i), GetDocShell() ); + const sal_uLong nIndex = rOutNds[ i ]->GetIndex(); + + const int nLvl = GetNodes()[ nIndex ]->GetTextNode()->GetAttrOutlineLevel()-1; + if( nLvl > nLevel ) + continue; + long nEndOfs = 1; + sal_uInt8 nWish = nPara; + sal_uLong nNextOutNd = i + 1 < rOutNds.size() ? + rOutNds[ i + 1 ]->GetIndex() : GetNodes().Count(); + bool bKeep = false; + while( ( nWish || bKeep ) && nIndex + nEndOfs < nNextOutNd && + GetNodes()[ nIndex + nEndOfs ]->IsTextNode() ) { - ::SetProgressState( static_cast<long>(i), GetDocShell() ); - const sal_uLong nIndex = rOutNds[ i ]->GetIndex(); + SwTextNode* pTextNode = GetNodes()[ nIndex+nEndOfs ]->GetTextNode(); + if (pTextNode->GetText().getLength() && nWish) + --nWish; + bKeep = pTextNode->GetSwAttrSet().GetKeep().GetValue(); + ++nEndOfs; + } - const int nLvl = GetNodes()[ nIndex ]->GetTextNode()->GetAttrOutlineLevel()-1; - if( nLvl > nLevel ) - continue; - long nEndOfs = 1; - sal_uInt8 nWish = nPara; - sal_uLong nNextOutNd = i + 1 < rOutNds.size() ? - rOutNds[ i + 1 ]->GetIndex() : GetNodes().Count(); - bool bKeep = false; - while( ( nWish || bKeep ) && nIndex + nEndOfs < nNextOutNd && - GetNodes()[ nIndex + nEndOfs ]->IsTextNode() ) + SwNodeRange aRange( *rOutNds[ i ], 0, *rOutNds[ i ], nEndOfs ); + GetNodes().Copy_( aRange, aEndOfDoc ); + } + const SwTextFormatColls *pColl = pExtDoc->GetTextFormatColls(); + for( SwTextFormatColls::size_type i = 0; i < pColl->size(); ++i ) + (*pColl)[ i ]->ResetFormatAttr( RES_PAGEDESC, RES_BREAK ); + SwNodeIndex aIndx( pExtDoc->GetNodes().GetEndOfExtras() ); + ++aEndOfDoc; + while( aIndx < aEndOfDoc ) + { + bool bDelete = false; + SwNode *pNode = &aIndx.GetNode(); + if( pNode->IsTextNode() ) + { + SwTextNode *pNd = pNode->GetTextNode(); + if( pNd->HasSwAttrSet() ) + pNd->ResetAttr( RES_PAGEDESC, RES_BREAK ); + if( bImpress ) { - SwTextNode* pTextNode = GetNodes()[ nIndex+nEndOfs ]->GetTextNode(); - if (pTextNode->GetText().getLength() && nWish) - --nWish; - bKeep = pTextNode->GetSwAttrSet().GetKeep().GetValue(); - ++nEndOfs; + SwTextFormatColl* pMyColl = pNd->GetTextColl(); + + const sal_uInt16 nHeadLine = static_cast<sal_uInt16>( + !pMyColl->IsAssignedToListLevelOfOutlineStyle() + ? RES_POOLCOLL_HEADLINE2 + : RES_POOLCOLL_HEADLINE1 ); + pMyColl = pExtDoc->getIDocumentStylePoolAccess().GetTextCollFromPool( nHeadLine ); + pNd->ChgFormatColl( pMyColl ); } - - SwNodeRange aRange( *rOutNds[ i ], 0, *rOutNds[ i ], nEndOfs ); - GetNodes().Copy_( aRange, aEndOfDoc ); - } - const SwTextFormatColls *pColl = pExtDoc->GetTextFormatColls(); - for( SwTextFormatColls::size_type i = 0; i < pColl->size(); ++i ) - (*pColl)[ i ]->ResetFormatAttr( RES_PAGEDESC, RES_BREAK ); - SwNodeIndex aIndx( pExtDoc->GetNodes().GetEndOfExtras() ); - ++aEndOfDoc; - while( aIndx < aEndOfDoc ) - { - bool bDelete = false; - SwNode *pNode = &aIndx.GetNode(); - if( pNode->IsTextNode() ) + if( !pNd->Len() && + pNd->StartOfSectionIndex()+2 < pNd->EndOfSectionIndex() ) { - SwTextNode *pNd = pNode->GetTextNode(); - if( pNd->HasSwAttrSet() ) - pNd->ResetAttr( RES_PAGEDESC, RES_BREAK ); - if( bImpress ) - { - SwTextFormatColl* pMyColl = pNd->GetTextColl(); - - const sal_uInt16 nHeadLine = static_cast<sal_uInt16>( - !pMyColl->IsAssignedToListLevelOfOutlineStyle() - ? RES_POOLCOLL_HEADLINE2 - : RES_POOLCOLL_HEADLINE1 ); - pMyColl = pExtDoc->getIDocumentStylePoolAccess().GetTextCollFromPool( nHeadLine ); - pNd->ChgFormatColl( pMyColl ); - } - if( !pNd->Len() && - pNd->StartOfSectionIndex()+2 < pNd->EndOfSectionIndex() ) - { - bDelete = true; - pExtDoc->GetNodes().Delete( aIndx ); - } + bDelete = true; + pExtDoc->GetNodes().Delete( aIndx ); } - if( !bDelete ) - ++aIndx; } - ::EndProgress( GetDocShell() ); + if( !bDelete ) + ++aIndx; } + ::EndProgress( GetDocShell() ); } namespace diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx index 429c2e1129f6..002582c6cb4a 100644 --- a/sw/source/core/doc/docbm.cxx +++ b/sw/source/core/doc/docbm.cxx @@ -1759,29 +1759,29 @@ void SaveBookmark::SetInDoc( else aPam.GetPoint()->nContent.Assign(aPam.GetContentNode(), m_nContent1); - if(!aPam.HasMark() - || CheckNodesRange(aPam.GetPoint()->nNode, aPam.GetMark()->nNode, true)) + if(!(!aPam.HasMark() + || CheckNodesRange(aPam.GetPoint()->nNode, aPam.GetMark()->nNode, true))) + return; + + ::sw::mark::IBookmark* const pBookmark = dynamic_cast<::sw::mark::IBookmark*>( + pDoc->getIDocumentMarkAccess()->makeMark(aPam, m_aName, + m_eOrigBkmType, sw::mark::InsertMode::New)); + if(!pBookmark) + return; + + pBookmark->SetKeyCode(m_aCode); + pBookmark->SetShortName(m_aShortName); + pBookmark->Hide(m_bHidden); + pBookmark->SetHideCondition(m_aHideCondition); + + if (m_pMetadataUndo) { - ::sw::mark::IBookmark* const pBookmark = dynamic_cast<::sw::mark::IBookmark*>( - pDoc->getIDocumentMarkAccess()->makeMark(aPam, m_aName, - m_eOrigBkmType, sw::mark::InsertMode::New)); - if(pBookmark) + ::sfx2::Metadatable * const pMeta( + dynamic_cast< ::sfx2::Metadatable* >(pBookmark)); + assert(pMeta && "metadata undo, but not metadatable?"); + if (pMeta) { - pBookmark->SetKeyCode(m_aCode); - pBookmark->SetShortName(m_aShortName); - pBookmark->Hide(m_bHidden); - pBookmark->SetHideCondition(m_aHideCondition); - - if (m_pMetadataUndo) - { - ::sfx2::Metadatable * const pMeta( - dynamic_cast< ::sfx2::Metadatable* >(pBookmark)); - assert(pMeta && "metadata undo, but not metadatable?"); - if (pMeta) - { - pMeta->RestoreMetadata(m_pMetadataUndo); - } - } + pMeta->RestoreMetadata(m_pMetadataUndo); } } } diff --git a/sw/source/core/doc/docchart.cxx b/sw/source/core/doc/docchart.cxx index 4acfb511949a..0e2cef59555b 100644 --- a/sw/source/core/doc/docchart.cxx +++ b/sw/source/core/doc/docchart.cxx @@ -78,19 +78,19 @@ bool SwTable::IsTableComplexForChart( const OUString& rSelection ) const void SwDoc::DoUpdateAllCharts() { SwViewShell* pVSh = getIDocumentLayoutAccess().GetCurrentViewShell(); - if( pVSh ) + if( !pVSh ) + return; + + const SwFrameFormats& rTableFormats = *GetTableFrameFormats(); + for( size_t n = 0; n < rTableFormats.size(); ++n ) { - const SwFrameFormats& rTableFormats = *GetTableFrameFormats(); - for( size_t n = 0; n < rTableFormats.size(); ++n ) - { - const SwFrameFormat* pFormat = rTableFormats[ n ]; - if( SwTable* pTmpTable = SwTable::FindTable( pFormat ) ) - if( const SwTableNode* pTableNd = pTmpTable->GetTableNode() ) - if( pTableNd->GetNodes().IsDocNodes() ) - { - UpdateCharts_( *pTmpTable, *pVSh ); - } - } + const SwFrameFormat* pFormat = rTableFormats[ n ]; + if( SwTable* pTmpTable = SwTable::FindTable( pFormat ) ) + if( const SwTableNode* pTableNd = pTmpTable->GetTableNode() ) + if( pTableNd->GetNodes().IsDocNodes() ) + { + UpdateCharts_( *pTmpTable, *pVSh ); + } } } diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 279fbdeb4c54..149f2e1eb518 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -543,32 +543,32 @@ Hash::Hash( sal_uLong nSize ) void Hash::CalcHashValue( CompareData& rData ) { - if( m_pHashArr ) + if( !m_pHashArr ) + return; + + for( size_t n = 0; n < rData.GetLineCount(); ++n ) { - for( size_t n = 0; n < rData.GetLineCount(); ++n ) - { - const SwCompareLine* pLine = rData.GetLine( n ); - OSL_ENSURE( pLine, "where is the line?" ); - sal_uLong nH = pLine->GetHashValue(); - - sal_uLong* pFound = &m_pHashArr[ nH % m_nPrime ]; - size_t i; - for( i = *pFound; ; i = m_pDataArr[i].nNext ) - if( !i ) - { - i = m_nCount++; - m_pDataArr[i].nNext = *pFound; - m_pDataArr[i].nHash = nH; - m_pDataArr[i].pLine = pLine; - *pFound = i; - break; - } - else if( m_pDataArr[i].nHash == nH && - m_pDataArr[i].pLine->Compare( *pLine )) - break; + const SwCompareLine* pLine = rData.GetLine( n ); + OSL_ENSURE( pLine, "where is the line?" ); + sal_uLong nH = pLine->GetHashValue(); - rData.SetIndex( n, i ); - } + sal_uLong* pFound = &m_pHashArr[ nH % m_nPrime ]; + size_t i; + for( i = *pFound; ; i = m_pDataArr[i].nNext ) + if( !i ) + { + i = m_nCount++; + m_pDataArr[i].nNext = *pFound; + m_pDataArr[i].nHash = nH; + m_pDataArr[i].pLine = pLine; + *pFound = i; + break; + } + else if( m_pDataArr[i].nHash == nH && + m_pDataArr[i].pLine->Compare( *pLine )) + break; + + rData.SetIndex( n, i ); } } @@ -1703,82 +1703,82 @@ void CompareData::SetRedlinesToDoc( bool bUseDocInfo ) } pTmp = m_pInsertRing.get(); - if( pTmp ) - { - do { - if( pTmp->GetPoint()->nContent == 0 ) - { - ++pTmp->GetPoint()->nNode; - pTmp->GetPoint()->nContent.Assign( pTmp->GetContentNode(), 0 ); - } - // #i101009# - // prevent redlines that end on structural end node - if (& GetEndOfContent() == - & pTmp->GetPoint()->nNode.GetNode()) - { - --pTmp->GetPoint()->nNode; - SwContentNode *const pContentNode( pTmp->GetContentNode() ); - pTmp->GetPoint()->nContent.Assign( pContentNode, - pContentNode ? pContentNode->Len() : 0 ); - // tdf#106218 try to avoid losing a paragraph break here: - if (pTmp->GetMark()->nContent == 0) - { - SwNodeIndex const prev(pTmp->GetMark()->nNode, -1); - if (prev.GetNode().IsTextNode()) - { - *pTmp->GetMark() = SwPosition( - *prev.GetNode().GetTextNode(), - prev.GetNode().GetTextNode()->Len()); - } - } - } - } while( m_pInsertRing.get() != ( pTmp = pTmp->GetNext()) ); - SwRedlineData aRedlnData( RedlineType::Insert, nAuthor, aTimeStamp, - OUString(), nullptr ); + if( !pTmp ) + return; - // combine consecutive - if( pTmp->GetNext() != m_pInsertRing.get() ) + do { + if( pTmp->GetPoint()->nContent == 0 ) { - do { - SwPosition& rSttEnd = *pTmp->End(), - & rEndStt = *pTmp->GetNext()->Start(); - const SwContentNode* pCNd; - if( rSttEnd == rEndStt || - (!rEndStt.nContent.GetIndex() && - rEndStt.nNode.GetIndex() - 1 == rSttEnd.nNode.GetIndex() && - nullptr != ( pCNd = rSttEnd.nNode.GetNode().GetContentNode() ) && - rSttEnd.nContent.GetIndex() == pCNd->Len())) + ++pTmp->GetPoint()->nNode; + pTmp->GetPoint()->nContent.Assign( pTmp->GetContentNode(), 0 ); + } + // #i101009# + // prevent redlines that end on structural end node + if (& GetEndOfContent() == + & pTmp->GetPoint()->nNode.GetNode()) + { + --pTmp->GetPoint()->nNode; + SwContentNode *const pContentNode( pTmp->GetContentNode() ); + pTmp->GetPoint()->nContent.Assign( pContentNode, + pContentNode ? pContentNode->Len() : 0 ); + // tdf#106218 try to avoid losing a paragraph break here: + if (pTmp->GetMark()->nContent == 0) + { + SwNodeIndex const prev(pTmp->GetMark()->nNode, -1); + if (prev.GetNode().IsTextNode()) { - if( pTmp->GetNext() == m_pInsertRing.get() ) - { - // are consecutive, so combine - rEndStt = *pTmp->Start(); - delete pTmp; - pTmp = m_pInsertRing.get(); - } - else - { - // are consecutive, so combine - rSttEnd = *pTmp->GetNext()->End(); - delete pTmp->GetNext(); - } + *pTmp->GetMark() = SwPosition( + *prev.GetNode().GetTextNode(), + prev.GetNode().GetTextNode()->Len()); } - else - pTmp = pTmp->GetNext(); - } while( m_pInsertRing.get() != pTmp ); + } } + } while( m_pInsertRing.get() != ( pTmp = pTmp->GetNext()) ); + SwRedlineData aRedlnData( RedlineType::Insert, nAuthor, aTimeStamp, + OUString(), nullptr ); + // combine consecutive + if( pTmp->GetNext() != m_pInsertRing.get() ) + { do { - if (IDocumentRedlineAccess::AppendResult::APPENDED == - m_rDoc.getIDocumentRedlineAccess().AppendRedline( - new SwRangeRedline(aRedlnData, *pTmp), true) && - m_rDoc.GetIDocumentUndoRedo().DoesUndo()) + SwPosition& rSttEnd = *pTmp->End(), + & rEndStt = *pTmp->GetNext()->Start(); + const SwContentNode* pCNd; + if( rSttEnd == rEndStt || + (!rEndStt.nContent.GetIndex() && + rEndStt.nNode.GetIndex() - 1 == rSttEnd.nNode.GetIndex() && + nullptr != ( pCNd = rSttEnd.nNode.GetNode().GetContentNode() ) && + rSttEnd.nContent.GetIndex() == pCNd->Len())) { - m_rDoc.GetIDocumentUndoRedo().AppendUndo( - std::make_unique<SwUndoCompDoc>( *pTmp, true )); + if( pTmp->GetNext() == m_pInsertRing.get() ) + { + // are consecutive, so combine + rEndStt = *pTmp->Start(); + delete pTmp; + pTmp = m_pInsertRing.get(); + } + else + { + // are consecutive, so combine + rSttEnd = *pTmp->GetNext()->End(); + delete pTmp->GetNext(); + } } - } while( m_pInsertRing.get() != ( pTmp = pTmp->GetNext()) ); + else + pTmp = pTmp->GetNext(); + } while( m_pInsertRing.get() != pTmp ); } + + do { + if (IDocumentRedlineAccess::AppendResult::APPENDED == + m_rDoc.getIDocumentRedlineAccess().AppendRedline( + new SwRangeRedline(aRedlnData, *pTmp), true) && + m_rDoc.GetIDocumentUndoRedo().DoesUndo()) + { + m_rDoc.GetIDocumentUndoRedo().AppendUndo( + std::make_unique<SwUndoCompDoc>( *pTmp, true )); + } + } while( m_pInsertRing.get() != ( pTmp = pTmp->GetNext()) ); } typedef std::shared_ptr<CompareData> CompareDataPtr; @@ -1924,19 +1924,19 @@ SaveMergeRedline::SaveMergeRedline( const SwNode& rDstNd, aPos.nContent.Assign( const_cast<SwContentNode*>(static_cast<const SwContentNode*>(&rDstNd)), pStt->nContent.GetIndex() ); pDestRedl = new SwRangeRedline( rSrcRedl.GetRedlineData(), aPos ); - if( RedlineType::Delete == pDestRedl->GetType() ) - { - // mark the area as deleted - const SwPosition* pEnd = pStt == rSrcRedl.GetPoint() - ? rSrcRedl.GetMark() - : rSrcRedl.GetPoint(); + if( RedlineType::Delete != pDestRedl->GetType() ) + return; - pDestRedl->SetMark(); - pDestRedl->GetPoint()->nNode += pEnd->nNode.GetIndex() - - pStt->nNode.GetIndex(); - pDestRedl->GetPoint()->nContent.Assign( pDestRedl->GetContentNode(), - pEnd->nContent.GetIndex() ); - } + // mark the area as deleted + const SwPosition* pEnd = pStt == rSrcRedl.GetPoint() + ? rSrcRedl.GetMark() + : rSrcRedl.GetPoint(); + + pDestRedl->SetMark(); + pDestRedl->GetPoint()->nNode += pEnd->nNode.GetIndex() - + pStt->nNode.GetIndex(); + pDestRedl->GetPoint()->nContent.Assign( pDestRedl->GetContentNode(), + pEnd->nContent.GetIndex() ); } sal_uInt16 SaveMergeRedline::InsertRedline(SwPaM* pLastDestRedline) diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index 036185e88d7d..e63097b29279 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -770,36 +770,36 @@ void SwDoc::PrtOLENotify( bool bAll ) IMPL_LINK_NOARG( SwDoc, DoUpdateModifiedOLE, Timer *, void ) { SwFEShell* pSh = static_cast<SwFEShell*>(GetEditShell()); - if( pSh ) - { - mbOLEPrtNotifyPending = mbAllOLENotify = false; + if( !pSh ) + return; - std::unique_ptr<SwOLENodes> pNodes = SwContentNode::CreateOLENodesArray( *GetDfltGrfFormatColl(), true ); - if( pNodes ) - { - ::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY, - 0, pNodes->size(), GetDocShell()); - getIDocumentLayoutAccess().GetCurrentLayout()->StartAllAction(); - SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR ); + mbOLEPrtNotifyPending = mbAllOLENotify = false; - for( SwOLENodes::size_type i = 0; i < pNodes->size(); ++i ) - { - ::SetProgressState( i, GetDocShell() ); + std::unique_ptr<SwOLENodes> pNodes = SwContentNode::CreateOLENodesArray( *GetDfltGrfFormatColl(), true ); + if( !pNodes ) + return; - SwOLENode* pOLENd = (*pNodes)[i]; - pOLENd->SetOLESizeInvalid( false ); + ::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY, + 0, pNodes->size(), GetDocShell()); + getIDocumentLayoutAccess().GetCurrentLayout()->StartAllAction(); + SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR ); - // We don't know it, so the object has to be loaded. - // If it doesn't want to be informed - if( pOLENd->GetOLEObj().GetOleRef().is() ) // Broken? - { - pOLENd->ModifyNotification( &aMsgHint, &aMsgHint ); - } - } - getIDocumentLayoutAccess().GetCurrentLayout()->EndAllAction(); - ::EndProgress( GetDocShell() ); + for( SwOLENodes::size_type i = 0; i < pNodes->size(); ++i ) + { + ::SetProgressState( i, GetDocShell() ); + + SwOLENode* pOLENd = (*pNodes)[i]; + pOLENd->SetOLESizeInvalid( false ); + + // We don't know it, so the object has to be loaded. + // If it doesn't want to be informed + if( pOLENd->GetOLEObj().GetOleRef().is() ) // Broken? + { + pOLENd->ModifyNotification( &aMsgHint, &aMsgHint ); } } + getIDocumentLayoutAccess().GetCurrentLayout()->EndAllAction(); + ::EndProgress( GetDocShell() ); } static SwPageDesc* lcl_FindPageDesc( const SwPageDescs *pPageDescs, diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx index 07902efe3fd4..ceb7ada2f865 100644 --- a/sw/source/core/doc/docedt.cxx +++ b/sw/source/core/doc/docedt.cxx @@ -264,23 +264,23 @@ SaveRedlEndPosForRestore::SaveRedlEndPosForRestore( const SwNodeIndex& rInsIdx, { SwNode& rNd = rInsIdx.GetNode(); SwDoc* pDest = rNd.GetDoc(); - if( !pDest->getIDocumentRedlineAccess().GetRedlineTable().empty() ) + if( pDest->getIDocumentRedlineAccess().GetRedlineTable().empty() ) + return; + + SwRedlineTable::size_type nFndPos; + const SwPosition* pEnd; + SwPosition aSrcPos( rInsIdx, SwIndex( rNd.GetContentNode(), nCnt )); + pDest->getIDocumentRedlineAccess().GetRedline( aSrcPos, &nFndPos ); + const SwRangeRedline* pRedl; + while( nFndPos-- + && *( pEnd = ( pRedl = pDest->getIDocumentRedlineAccess().GetRedlineTable()[ nFndPos ] )->End() ) == aSrcPos + && *pRedl->Start() < aSrcPos ) { - SwRedlineTable::size_type nFndPos; - const SwPosition* pEnd; - SwPosition aSrcPos( rInsIdx, SwIndex( rNd.GetContentNode(), nCnt )); - pDest->getIDocumentRedlineAccess().GetRedline( aSrcPos, &nFndPos ); - const SwRangeRedline* pRedl; - while( nFndPos-- - && *( pEnd = ( pRedl = pDest->getIDocumentRedlineAccess().GetRedlineTable()[ nFndPos ] )->End() ) == aSrcPos - && *pRedl->Start() < aSrcPos ) + if( !mpSaveIndex ) { - if( !mpSaveIndex ) - { - mpSaveIndex.reset(new SwNodeIndex( rInsIdx, -1 )); - } - mvSavArr.push_back( const_cast<SwPosition*>(pEnd) ); + mpSaveIndex.reset(new SwNodeIndex( rInsIdx, -1 )); } + mvSavArr.push_back( const_cast<SwPosition*>(pEnd) ); } } @@ -328,31 +328,31 @@ void sw_GetJoinFlags( SwPaM& rPam, bool& rJoinText, bool& rJoinPrev ) { rJoinText = false; rJoinPrev = false; - if( rPam.GetPoint()->nNode != rPam.GetMark()->nNode ) - { - const SwPosition* pStt = rPam.Start(), *pEnd = rPam.End(); - SwTextNode *pSttNd = pStt->nNode.GetNode().GetTextNode(); - if( pSttNd ) - { - SwTextNode *pEndNd = pEnd->nNode.GetNode().GetTextNode(); - rJoinText = nullptr != pEndNd; - if( rJoinText ) - { - bool bExchange = pStt == rPam.GetPoint(); - if( !pStt->nContent.GetIndex() && - pEndNd->GetText().getLength() != pEnd->nContent.GetIndex()) - bExchange = !bExchange; - if( bExchange ) - rPam.Exchange(); - rJoinPrev = rPam.GetPoint() == pStt; - OSL_ENSURE( !pStt->nContent.GetIndex() && - pEndNd->GetText().getLength() != pEnd->nContent.GetIndex() - ? (rPam.GetPoint()->nNode < rPam.GetMark()->nNode) - : (rPam.GetPoint()->nNode > rPam.GetMark()->nNode), - "sw_GetJoinFlags"); - } - } - } + if( rPam.GetPoint()->nNode == rPam.GetMark()->nNode ) + return; + + const SwPosition* pStt = rPam.Start(), *pEnd = rPam.End(); + SwTextNode *pSttNd = pStt->nNode.GetNode().GetTextNode(); + if( !pSttNd ) + return; + + SwTextNode *pEndNd = pEnd->nNode.GetNode().GetTextNode(); + rJoinText = nullptr != pEndNd; + if( !rJoinText ) + return; + + bool bExchange = pStt == rPam.GetPoint(); + if( !pStt->nContent.GetIndex() && + pEndNd->GetText().getLength() != pEnd->nContent.GetIndex()) + bExchange = !bExchange; + if( bExchange ) + rPam.Exchange(); + rJoinPrev = rPam.GetPoint() == pStt; + OSL_ENSURE( !pStt->nContent.GetIndex() && + pEndNd->GetText().getLength() != pEnd->nContent.GetIndex() + ? (rPam.GetPoint()->nNode < rPam.GetMark()->nNode) + : (rPam.GetPoint()->nNode > rPam.GetMark()->nNode), + "sw_GetJoinFlags"); } bool sw_JoinText( SwPaM& rPam, bool bJoinPrev ) diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx index 7d4691a3422c..57f976d27e5b 100644 --- a/sw/source/core/doc/docfld.cxx +++ b/sw/source/core/doc/docfld.cxx @@ -1094,21 +1094,21 @@ void SwDocUpdateField::InsertFieldType( const SwFieldType& rType ) OSL_ENSURE( false, "No valid field type" ); } - if( !sFieldName.isEmpty() ) - { - SetFieldsDirty( true ); - // look up and remove from the hash table - sFieldName = GetAppCharClass().lowercase( sFieldName ); - sal_uInt16 n; + if( sFieldName.isEmpty() ) + return; + + SetFieldsDirty( true ); + // look up and remove from the hash table + sFieldName = GetAppCharClass().lowercase( sFieldName ); + sal_uInt16 n; - SwCalcFieldType* pFnd = GetFieldTypeTable().Find( sFieldName, &n ); + SwCalcFieldType* pFnd = GetFieldTypeTable().Find( sFieldName, &n ); - if( !pFnd ) - { - SwCalcFieldType* pNew = new SwCalcFieldType( sFieldName, &rType ); - pNew->pNext.reset( m_FieldTypeTable[n].release() ); - m_FieldTypeTable[n].reset(pNew); - } + if( !pFnd ) + { + SwCalcFieldType* pNew = new SwCalcFieldType( sFieldName, &rType ); + pNew->pNext.reset( m_FieldTypeTable[n].release() ); + m_FieldTypeTable[n].reset(pNew); } } @@ -1126,29 +1126,29 @@ void SwDocUpdateField::RemoveFieldType( const SwFieldType& rType ) default: break; } - if( !sFieldName.isEmpty() ) - { - SetFieldsDirty( true ); - // look up and remove from the hash table - sFieldName = GetAppCharClass().lowercase( sFieldName ); - sal_uInt16 n; + if( sFieldName.isEmpty() ) + return; - SwCalcFieldType* pFnd = GetFieldTypeTable().Find( sFieldName, &n ); - if( pFnd ) - { - if (m_FieldTypeTable[n].get() == pFnd) - { - m_FieldTypeTable[n].reset(static_cast<SwCalcFieldType*>(pFnd->pNext.release())); - } - else - { - SwHash* pPrev = m_FieldTypeTable[n].get(); - while( pPrev->pNext.get() != pFnd ) - pPrev = pPrev->pNext.get(); - pPrev->pNext = std::move(pFnd->pNext); - // no need to explicitly delete here, the embedded linked list uses unique_ptr - } - } + SetFieldsDirty( true ); + // look up and remove from the hash table + sFieldName = GetAppCharClass().lowercase( sFieldName ); + sal_uInt16 n; + + SwCalcFieldType* pFnd = GetFieldTypeTable().Find( sFieldName, &n ); + if( !pFnd ) + return; + + if (m_FieldTypeTable[n].get() == pFnd) + { + m_FieldTypeTable[n].reset(static_cast<SwCalcFieldType*>(pFnd->pNext.release())); + } + else + { + SwHash* pPrev = m_FieldTypeTable[n].get(); + while( pPrev->pNext.get() != pFnd ) + pPrev = pPrev->pNext.get(); + pPrev->pNext = std::move(pFnd->pNext); + // no need to explicitly delete here, the embedded linked list uses unique_ptr } } diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index dfab43445940..b0d5f00dfd40 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -1364,45 +1364,45 @@ void SwDoc::CopyPageDescHeaderFooterImpl( bool bCpyHeader, else pOldFormat = static_cast<SwFormatFooter*>(pNewItem.get())->GetFooterFormat(); - if( pOldFormat ) - { - SwFrameFormat* pNewFormat = new SwFrameFormat( GetAttrPool(), "CpyDesc", - GetDfltFrameFormat() ); - pNewFormat->CopyAttrs( *pOldFormat ); + if( !pOldFormat ) + return; + + SwFrameFormat* pNewFormat = new SwFrameFormat( GetAttrPool(), "CpyDesc", + GetDfltFrameFormat() ); + pNewFormat->CopyAttrs( *pOldFormat ); - if( SfxItemState::SET == pNewFormat->GetAttrSet().GetItemState( - RES_CNTNT, false, &pItem )) + if( SfxItemState::SET == pNewFormat->GetAttrSet().GetItemState( + RES_CNTNT, false, &pItem )) + { + const SwFormatContent* pContent = static_cast<const SwFormatContent*>(pItem); + if( pContent->GetContentIdx() ) { - const SwFormatContent* pContent = static_cast<const SwFormatContent*>(pItem); - if( pContent->GetContentIdx() ) - { - SwNodeIndex aTmpIdx( GetNodes().GetEndOfAutotext() ); - const SwNodes& rSrcNds = rSrcFormat.GetDoc()->GetNodes(); - SwStartNode* pSttNd = SwNodes::MakeEmptySection( aTmpIdx, - bCpyHeader - ? SwHeaderStartNode - : SwFooterStartNode ); - const SwNode& rCSttNd = pContent->GetContentIdx()->GetNode(); - SwNodeRange aRg( rCSttNd, 0, *rCSttNd.EndOfSectionNode() ); - aTmpIdx = *pSttNd->EndOfSectionNode(); - rSrcNds.Copy_( aRg, aTmpIdx ); - aTmpIdx = *pSttNd; - rSrcFormat.GetDoc()->GetDocumentContentOperationsManager().CopyFlyInFlyImpl(aRg, nullptr, aTmpIdx); - // TODO: investigate calling CopyWithFlyInFly? - SwPaM const source(aRg.aStart, aRg.aEnd); - SwPosition dest(aTmpIdx); - sw::CopyBookmarks(source, dest); - pNewFormat->SetFormatAttr( SwFormatContent( pSttNd )); - } - else - pNewFormat->ResetFormatAttr( RES_CNTNT ); + SwNodeIndex aTmpIdx( GetNodes().GetEndOfAutotext() ); + const SwNodes& rSrcNds = rSrcFormat.GetDoc()->GetNodes(); + SwStartNode* pSttNd = SwNodes::MakeEmptySection( aTmpIdx, + bCpyHeader + ? SwHeaderStartNode + : SwFooterStartNode ); + const SwNode& rCSttNd = pContent->GetContentIdx()->GetNode(); + SwNodeRange aRg( rCSttNd, 0, *rCSttNd.EndOfSectionNode() ); + aTmpIdx = *pSttNd->EndOfSectionNode(); + rSrcNds.Copy_( aRg, aTmpIdx ); + aTmpIdx = *pSttNd; + rSrcFormat.GetDoc()->GetDocumentContentOperationsManager().CopyFlyInFlyImpl(aRg, nullptr, aTmpIdx); + // TODO: investigate calling CopyWithFlyInFly? + SwPaM const source(aRg.aStart, aRg.aEnd); + SwPosition dest(aTmpIdx); + sw::CopyBookmarks(source, dest); + pNewFormat->SetFormatAttr( SwFormatContent( pSttNd )); } - if( bCpyHeader ) - static_cast<SwFormatHeader*>(pNewItem.get())->RegisterToFormat(*pNewFormat); else - static_cast<SwFormatFooter*>(pNewItem.get())->RegisterToFormat(*pNewFormat); - rDestFormat.SetFormatAttr( *pNewItem ); + pNewFormat->ResetFormatAttr( RES_CNTNT ); } + if( bCpyHeader ) + static_cast<SwFormatHeader*>(pNewItem.get())->RegisterToFormat(*pNewFormat); + else + static_cast<SwFormatFooter*>(pNewItem.get())->RegisterToFormat(*pNewFormat); + rDestFormat.SetFormatAttr( *pNewItem ); } void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx index af02d317d284..61108557a752 100644 --- a/sw/source/core/doc/doclay.cxx +++ b/sw/source/core/doc/doclay.cxx @@ -1290,18 +1290,18 @@ static void lcl_collectUsedNums(std::vector<unsigned int>& rSetFlags, sal_Int32 lcl_collectUsedNums(rSetFlags, nNmLen, sName, rCmpName); // tdf#122487 take groups into account, iterate and recurse through their // contents for name collision check - if (rObj.IsGroupObject()) + if (!rObj.IsGroupObject()) + return; + + const SdrObjList* pSub(rObj.GetSubList()); + assert(pSub && "IsGroupObject is implemented as GetSubList != nullptr"); + const size_t nCount = pSub->GetObjCount(); + for (size_t i = 0; i < nCount; ++i) { - const SdrObjList* pSub(rObj.GetSubList()); - assert(pSub && "IsGroupObject is implemented as GetSubList != nullptr"); - const size_t nCount = pSub->GetObjCount(); - for (size_t i = 0; i < nCount; ++i) - { - SdrObject* pObj = pSub->GetObj(i); - if (!pObj) - continue; - lcl_collectUsedNums(rSetFlags, nNmLen, *pObj, rCmpName); - } + SdrObject* pObj = pSub->GetObj(i); + if (!pObj) + continue; + lcl_collectUsedNums(rSetFlags, nNmLen, *pObj, rCmpName); } } @@ -1531,21 +1531,21 @@ void SwDoc::SetAllUniqueFlyNames() } aArr.clear(); - if( !GetFootnoteIdxs().empty() ) + if( GetFootnoteIdxs().empty() ) + return; + + SwTextFootnote::SetUniqueSeqRefNo( *this ); + // #i52775# Chapter footnotes did not get updated correctly. + // Calling UpdateAllFootnote() instead of UpdateFootnote() solves this problem, + // but I do not dare to call UpdateAllFootnote() in all cases: Safety first. + if ( FTNNUM_CHAPTER == GetFootnoteInfo().m_eNum ) { - SwTextFootnote::SetUniqueSeqRefNo( *this ); - // #i52775# Chapter footnotes did not get updated correctly. - // Calling UpdateAllFootnote() instead of UpdateFootnote() solves this problem, - // but I do not dare to call UpdateAllFootnote() in all cases: Safety first. - if ( FTNNUM_CHAPTER == GetFootnoteInfo().m_eNum ) - { - GetFootnoteIdxs().UpdateAllFootnote(); - } - else - { - SwNodeIndex aTmp( GetNodes() ); - GetFootnoteIdxs().UpdateFootnote( aTmp ); - } + GetFootnoteIdxs().UpdateAllFootnote(); + } + else + { + SwNodeIndex aTmp( GetNodes() ); + GetFootnoteIdxs().UpdateFootnote( aTmp ); } } diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index e4f38b44bbb0..24f5a218048e 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -580,26 +580,26 @@ SwDoc::~SwDoc() void SwDoc::SetDocShell( SwDocShell* pDSh ) { - if( mpDocShell != pDSh ) + if( mpDocShell == pDSh ) + return; + + if (mpDocShell) { - if (mpDocShell) - { - mpDocShell->SetUndoManager(nullptr); - } - mpDocShell = pDSh; - if (mpDocShell) - { - mpDocShell->SetUndoManager(& GetUndoManager()); - GetUndoManager().SetDocShell(mpDocShell); - } + mpDocShell->SetUndoManager(nullptr); + } + mpDocShell = pDSh; + if (mpDocShell) + { + mpDocShell->SetUndoManager(& GetUndoManager()); + GetUndoManager().SetDocShell(mpDocShell); + } - getIDocumentLinksAdministration().GetLinkManager().SetPersist( mpDocShell ); + getIDocumentLinksAdministration().GetLinkManager().SetPersist( mpDocShell ); - // set DocShell pointer also on DrawModel - InitDrawModelAndDocShell(mpDocShell, GetDocumentDrawModelManager().GetDrawModel()); - assert(!GetDocumentDrawModelManager().GetDrawModel() || - GetDocumentDrawModelManager().GetDrawModel()->GetPersist() == GetPersist()); - } + // set DocShell pointer also on DrawModel + InitDrawModelAndDocShell(mpDocShell, GetDocumentDrawModelManager().GetDrawModel()); + assert(!GetDocumentDrawModelManager().GetDrawModel() || + GetDocumentDrawModelManager().GetDrawModel()->GetPersist() == GetPersist()); } // Convenience method; to avoid excessive includes from docsh.hxx diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx index 13b6136ef89a..477f83220f32 100644 --- a/sw/source/core/doc/docnum.cxx +++ b/sw/source/core/doc/docnum.cxx @@ -81,19 +81,20 @@ namespace { void ExpandPamForParaPropsNodes(SwPaM& rPam, SwRootFrame const*const pLayout) { - if (pLayout) - { // ensure that selection from the Shell includes the para-props node - // to which the attributes should be applied - if (rPam.GetPoint()->nNode.GetNode().IsTextNode()) - { - rPam.GetPoint()->nNode = *sw::GetParaPropsNode(*pLayout, rPam.GetPoint()->nNode); - rPam.GetPoint()->nContent.Assign(rPam.GetPoint()->nNode.GetNode().GetContentNode(), 0); - } - if (rPam.GetMark()->nNode.GetNode().IsTextNode()) - { - rPam.GetMark()->nNode = *sw::GetParaPropsNode(*pLayout, rPam.GetMark()->nNode); - rPam.GetMark()->nContent.Assign(rPam.GetMark()->nNode.GetNode().GetContentNode(), 0); - } + if (!pLayout) + return; + + // ensure that selection from the Shell includes the para-props node + // to which the attributes should be applied + if (rPam.GetPoint()->nNode.GetNode().IsTextNode()) + { + rPam.GetPoint()->nNode = *sw::GetParaPropsNode(*pLayout, rPam.GetPoint()->nNode); + rPam.GetPoint()->nContent.Assign(rPam.GetPoint()->nNode.GetNode().GetContentNode(), 0); + } + if (rPam.GetMark()->nNode.GetNode().IsTextNode()) + { + rPam.GetMark()->nNode = *sw::GetParaPropsNode(*pLayout, rPam.GetMark()->nNode); + rPam.GetMark()->nContent.Assign(rPam.GetMark()->nNode.GetNode().GetContentNode(), 0); } } } @@ -1002,21 +1003,21 @@ void SwDoc::SetNumRuleStart( const SwPosition& rPos, bool bFlag ) { SwTextNode* pTextNd = rPos.nNode.GetNode().GetTextNode(); - if (pTextNd) + if (!pTextNd) + return; + + const SwNumRule* pRule = pTextNd->GetNumRule(); + if( pRule && !bFlag != !pTextNd->IsListRestart()) { - const SwNumRule* pRule = pTextNd->GetNumRule(); - if( pRule && !bFlag != !pTextNd->IsListRestart()) + if (GetIDocumentUndoRedo().DoesUndo()) { - if (GetIDocumentUndoRedo().DoesUndo()) - { - GetIDocumentUndoRedo().AppendUndo( - std::make_unique<SwUndoNumRuleStart>(rPos, bFlag) ); - } + GetIDocumentUndoRedo().AppendUndo( + std::make_unique<SwUndoNumRuleStart>(rPos, bFlag) ); + } - pTextNd->SetListRestart(bFlag); + pTextNd->SetListRestart(bFlag); - getIDocumentState().SetModified(); - } + getIDocumentState().SetModified(); } } @@ -1024,20 +1025,20 @@ void SwDoc::SetNodeNumStart( const SwPosition& rPos, sal_uInt16 nStt ) { SwTextNode* pTextNd = rPos.nNode.GetNode().GetTextNode(); - if (pTextNd) + if (!pTextNd) + return; + + if ( !pTextNd->HasAttrListRestartValue() || + pTextNd->GetAttrListRestartValue() != nStt ) { - if ( !pTextNd->HasAttrListRestartValue() || - pTextNd->GetAttrListRestartValue() != nStt ) + if (GetIDocumentUndoRedo().DoesUndo()) { - if (GetIDocumentUndoRedo().DoesUndo()) - { - GetIDocumentUndoRedo().AppendUndo( - std::make_unique<SwUndoNumRuleStart>(rPos, nStt) ); - } - pTextNd->SetAttrListRestartValue( nStt ); - - getIDocumentState().SetModified(); + GetIDocumentUndoRedo().AppendUndo( + std::make_unique<SwUndoNumRuleStart>(rPos, nStt) ); } + pTextNd->SetAttrListRestartValue( nStt ); + + getIDocumentState().SetModified(); } } @@ -1085,23 +1086,23 @@ bool SwDoc::DelNumRule( const OUString& rName, bool bBroadcast ) void SwDoc::ChgNumRuleFormats( const SwNumRule& rRule ) { SwNumRule* pRule = FindNumRulePtr( rRule.GetName() ); - if( pRule ) - { - SwUndoInsNum* pUndo = nullptr; - if (GetIDocumentUndoRedo().DoesUndo()) - { - pUndo = new SwUndoInsNum( *pRule, rRule, this ); - pUndo->GetHistory(); - GetIDocumentUndoRedo().AppendUndo( std::unique_ptr<SwUndo>(pUndo) ); - } - ::lcl_ChgNumRule( *this, rRule ); - if (pUndo) - { - pUndo->SetLRSpaceEndPos(); - } + if( !pRule ) + return; - getIDocumentState().SetModified(); + SwUndoInsNum* pUndo = nullptr; + if (GetIDocumentUndoRedo().DoesUndo()) + { + pUndo = new SwUndoInsNum( *pRule, rRule, this ); + pUndo->GetHistory(); + GetIDocumentUndoRedo().AppendUndo( std::unique_ptr<SwUndo>(pUndo) ); + } + ::lcl_ChgNumRule( *this, rRule ); + if (pUndo) + { + pUndo->SetLRSpaceEndPos(); } + + getIDocumentState().SetModified(); } bool SwDoc::RenameNumRule(const OUString & rOldName, const OUString & rNewName, diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx index 585a6600acc0..6cbffb7b56d5 100644 --- a/sw/source/core/doc/docredln.cxx +++ b/sw/source/core/doc/docredln.cxx @@ -1107,34 +1107,34 @@ void SwRangeRedline::CallDisplayFunc(size_t nMyPos) void SwRangeRedline::Show(sal_uInt16 nLoop, size_t nMyPos) { - if( 1 <= nLoop ) - { - SwDoc* pDoc = GetDoc(); - RedlineFlags eOld = pDoc->getIDocumentRedlineAccess().GetRedlineFlags(); - pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern(eOld | RedlineFlags::Ignore); - ::sw::UndoGuard const undoGuard(pDoc->GetIDocumentUndoRedo()); + if( 1 > nLoop ) + return; - switch( GetType() ) - { - case RedlineType::Insert: // Content has been inserted - m_bIsVisible = true; - MoveFromSection(nMyPos); - break; + SwDoc* pDoc = GetDoc(); + RedlineFlags eOld = pDoc->getIDocumentRedlineAccess().GetRedlineFlags(); + pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern(eOld | RedlineFlags::Ignore); + ::sw::UndoGuard const undoGuard(pDoc->GetIDocumentUndoRedo()); - case RedlineType::Delete: // Content has been deleted - m_bIsVisible = true; - MoveFromSection(nMyPos); - break; + switch( GetType() ) + { + case RedlineType::Insert: // Content has been inserted + m_bIsVisible = true; + MoveFromSection(nMyPos); + break; - case RedlineType::Format: // Attributes have been applied - case RedlineType::Table: // Table structure has been modified - InvalidateRange(Invalidation::Add); - break; - default: - break; - } - pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld ); + case RedlineType::Delete: // Content has been deleted + m_bIsVisible = true; + MoveFromSection(nMyPos); + break; + + case RedlineType::Format: // Attributes have been applied + case RedlineType::Table: // Table structure has been modified + InvalidateRange(Invalidation::Add); + break; + default: + break; } + pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld ); } void SwRangeRedline::Hide(sal_uInt16 nLoop, size_t nMyPos) @@ -1451,88 +1451,88 @@ void SwRangeRedline::CopyToSection() void SwRangeRedline::DelCopyOfSection(size_t nMyPos) { - if( m_pContentSect ) - { - const SwPosition* pStt = Start(), - * pEnd = pStt == GetPoint() ? GetMark() : GetPoint(); + if( !m_pContentSect ) + return; - SwDoc* pDoc = GetDoc(); - SwPaM aPam( *pStt, *pEnd ); - SwContentNode* pCSttNd = pStt->nNode.GetNode().GetContentNode(); - SwContentNode* pCEndNd = pEnd->nNode.GetNode().GetContentNode(); + const SwPosition* pStt = Start(), + * pEnd = pStt == GetPoint() ? GetMark() : GetPoint(); - if( !pCSttNd ) - { - // In order to not move other Redlines' indices, we set them - // to the end (is exclusive) - const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); - for(SwRangeRedline* pRedl : rTable) - { - if( pRedl->GetBound() == *pStt ) - pRedl->GetBound() = *pEnd; - if( pRedl->GetBound(false) == *pStt ) - pRedl->GetBound(false) = *pEnd; - } - } + SwDoc* pDoc = GetDoc(); + SwPaM aPam( *pStt, *pEnd ); + SwContentNode* pCSttNd = pStt->nNode.GetNode().GetContentNode(); + SwContentNode* pCEndNd = pEnd->nNode.GetNode().GetContentNode(); - if( pCSttNd && pCEndNd ) + if( !pCSttNd ) + { + // In order to not move other Redlines' indices, we set them + // to the end (is exclusive) + const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); + for(SwRangeRedline* pRedl : rTable) { - // #i100466# - force a <join next> on <delete and join> operation - // tdf#125319 - rather not? - pDoc->getIDocumentContentOperations().DeleteAndJoin(aPam/*, true*/); + if( pRedl->GetBound() == *pStt ) + pRedl->GetBound() = *pEnd; + if( pRedl->GetBound(false) == *pStt ) + pRedl->GetBound(false) = *pEnd; } - else if( pCSttNd || pCEndNd ) - { - if( pCSttNd && !pCEndNd ) - m_bDelLastPara = true; - pDoc->getIDocumentContentOperations().DeleteRange( aPam ); + } - if( m_bDelLastPara ) + if( pCSttNd && pCEndNd ) + { + // #i100466# - force a <join next> on <delete and join> operation + // tdf#125319 - rather not? + pDoc->getIDocumentContentOperations().DeleteAndJoin(aPam/*, true*/); + } + else if( pCSttNd || pCEndNd ) + { + if( pCSttNd && !pCEndNd ) + m_bDelLastPara = true; + pDoc->getIDocumentContentOperations().DeleteRange( aPam ); + + if( m_bDelLastPara ) + { + // To prevent dangling references to the paragraph to + // be deleted, redline that point into this paragraph should be + // moved to the new end position. Since redlines in the redline + // table are sorted and the pEnd position is an endnode (see + // bDelLastPara condition above), only redlines before the + // current ones can be affected. + const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); + size_t n = nMyPos; + for( bool bBreak = false; !bBreak && n > 0; ) { - // To prevent dangling references to the paragraph to - // be deleted, redline that point into this paragraph should be - // moved to the new end position. Since redlines in the redline - // table are sorted and the pEnd position is an endnode (see - // bDelLastPara condition above), only redlines before the - // current ones can be affected. - const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); - size_t n = nMyPos; - for( bool bBreak = false; !bBreak && n > 0; ) + --n; + bBreak = true; + if( rTable[ n ]->GetBound() == *aPam.GetPoint() ) { - --n; - bBreak = true; - if( rTable[ n ]->GetBound() == *aPam.GetPoint() ) - { - rTable[ n ]->GetBound() = *pEnd; - bBreak = false; - } - if( rTable[ n ]->GetBound(false) == *aPam.GetPoint() ) - { - rTable[ n ]->GetBound(false) = *pEnd; - bBreak = false; - } + rTable[ n ]->GetBound() = *pEnd; + bBreak = false; + } + if( rTable[ n ]->GetBound(false) == *aPam.GetPoint() ) + { + rTable[ n ]->GetBound(false) = *pEnd; + bBreak = false; } + } - *GetPoint() = *pEnd; - *GetMark() = *pEnd; - DeleteMark(); + *GetPoint() = *pEnd; + *GetMark() = *pEnd; + DeleteMark(); - aPam.GetBound().nContent.Assign( nullptr, 0 ); - aPam.GetBound( false ).nContent.Assign( nullptr, 0 ); - aPam.DeleteMark(); - pDoc->getIDocumentContentOperations().DelFullPara( aPam ); - } - } - else - { - pDoc->getIDocumentContentOperations().DeleteRange( aPam ); + aPam.GetBound().nContent.Assign( nullptr, 0 ); + aPam.GetBound( false ).nContent.Assign( nullptr, 0 ); + aPam.DeleteMark(); + pDoc->getIDocumentContentOperations().DelFullPara( aPam ); } + } + else + { + pDoc->getIDocumentContentOperations().DeleteRange( aPam ); + } - if( pStt == GetPoint() ) - Exchange(); + if( pStt == GetPoint() ) + Exchange(); - DeleteMark(); - } + DeleteMark(); } void SwRangeRedline::MoveFromSection(size_t nMyPos) diff --git a/sw/source/core/doc/docsort.cxx b/sw/source/core/doc/docsort.cxx index 18b128769939..b15a22dbe1f9 100644 --- a/sw/source/core/doc/docsort.cxx +++ b/sw/source/core/doc/docsort.cxx @@ -740,19 +740,19 @@ FlatFndBox::FlatFndBox(SwDoc* pDocPtr, const FndBox_& rBoxRef) : m_nCol(0) { // If the array is symmetric m_bSym = CheckLineSymmetry(rBoxRef); - if( m_bSym ) - { - // Determine column/row count - m_nCols = GetColCount(rBoxRef); - m_nRows = GetRowCount(rBoxRef); + if( !m_bSym ) + return; - // Create linear array - size_t nCount = static_cast<size_t>(m_nRows) * m_nCols; - m_pArr = std::make_unique<FndBox_ const *[]>(nCount); - memset(m_pArr.get(), 0, sizeof(const FndBox_*) * nCount); + // Determine column/row count + m_nCols = GetColCount(rBoxRef); + m_nRows = GetRowCount(rBoxRef); - FillFlat( rBoxRef ); - } + // Create linear array + size_t nCount = static_cast<size_t>(m_nRows) * m_nCols; + m_pArr = std::make_unique<FndBox_ const *[]>(nCount); + memset(m_pArr.get(), 0, sizeof(const FndBox_*) * nCount); + + FillFlat( rBoxRef ); } FlatFndBox::~FlatFndBox() diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx index 10b2be028f55..d5857479f6fe 100644 --- a/sw/source/core/doc/doctxm.cxx +++ b/sw/source/core/doc/doctxm.cxx @@ -1871,33 +1871,32 @@ void SwTOXBaseSection::UpdatePageNum_( SwTextNode* pNd, } // The main entries should get their character style - if (xCharStyleIdx && !xCharStyleIdx->empty() && !GetMainEntryCharStyle().isEmpty()) - { - // eventually the last index must me appended - if (xCharStyleIdx->size()&0x01) - xCharStyleIdx->push_back(aNumStr.getLength()); - - // search by name - SwDoc* pDoc = pNd->GetDoc(); - sal_uInt16 nPoolId = SwStyleNameMapper::GetPoolIdFromUIName( GetMainEntryCharStyle(), SwGetPoolIdFromName::ChrFmt ); - SwCharFormat* pCharFormat = nullptr; - if(USHRT_MAX != nPoolId) - pCharFormat = pDoc->getIDocumentStylePoolAccess().GetCharFormatFromPool(nPoolId); - else - pCharFormat = pDoc->FindCharFormatByName( GetMainEntryCharStyle() ); - if(!pCharFormat) - pCharFormat = pDoc->MakeCharFormat(GetMainEntryCharStyle(), nullptr); - - // find the page numbers in aNumStr and set the character style - sal_Int32 nOffset = pNd->GetText().getLength() - aNumStr.getLength(); - SwFormatCharFormat aCharFormat(pCharFormat); - for (size_t j = 0; j < xCharStyleIdx->size(); j += 2) - { - sal_Int32 nStartIdx = (*xCharStyleIdx)[j] + nOffset; - sal_Int32 nEndIdx = (*xCharStyleIdx)[j + 1] + nOffset; - pNd->InsertItem(aCharFormat, nStartIdx, nEndIdx, SetAttrMode::DONTEXPAND); - } + if (!(xCharStyleIdx && !xCharStyleIdx->empty() && !GetMainEntryCharStyle().isEmpty())) + return; + + // eventually the last index must me appended + if (xCharStyleIdx->size()&0x01) + xCharStyleIdx->push_back(aNumStr.getLength()); + // search by name + SwDoc* pDoc = pNd->GetDoc(); + sal_uInt16 nPoolId = SwStyleNameMapper::GetPoolIdFromUIName( GetMainEntryCharStyle(), SwGetPoolIdFromName::ChrFmt ); + SwCharFormat* pCharFormat = nullptr; + if(USHRT_MAX != nPoolId) + pCharFormat = pDoc->getIDocumentStylePoolAccess().GetCharFormatFromPool(nPoolId); + else + pCharFormat = pDoc->FindCharFormatByName( GetMainEntryCharStyle() ); + if(!pCharFormat) + pCharFormat = pDoc->MakeCharFormat(GetMainEntryCharStyle(), nullptr); + + // find the page numbers in aNumStr and set the character style + sal_Int32 nOffset = pNd->GetText().getLength() - aNumStr.getLength(); + SwFormatCharFormat aCharFormat(pCharFormat); + for (size_t j = 0; j < xCharStyleIdx->size(); j += 2) + { + sal_Int32 nStartIdx = (*xCharStyleIdx)[j] + nOffset; + sal_Int32 nEndIdx = (*xCharStyleIdx)[j + 1] + nOffset; + pNd->InsertItem(aCharFormat, nStartIdx, nEndIdx, SetAttrMode::DONTEXPAND); } } diff --git a/sw/source/core/doc/docxforms.cxx b/sw/source/core/doc/docxforms.cxx index ea827d58d9ad..2a7ee714cece 100644 --- a/sw/source/core/doc/docxforms.cxx +++ b/sw/source/core/doc/docxforms.cxx @@ -89,38 +89,38 @@ void SwDoc::initXForms( bool bCreateDefaultModel ) void SwDoc::disposeXForms( ) { // get XForms models - if( mxXForms.is() ) + if( !mxXForms.is() ) + return; + + // iterate over all models + const uno::Sequence<OUString> aNames = mxXForms->getElementNames(); + for( const OUString& rName : aNames ) { - // iterate over all models - const uno::Sequence<OUString> aNames = mxXForms->getElementNames(); - for( const OUString& rName : aNames ) + Reference< xforms::XModel > xModel( + mxXForms->getByName( rName ), UNO_QUERY ); + + if( xModel.is() ) { - Reference< xforms::XModel > xModel( - mxXForms->getByName( rName ), UNO_QUERY ); + // ask model for bindings + Reference< XIndexAccess > xBindings( + xModel->getBindings(), UNO_QUERY ); + + // Then release them one by one + int nCount = xBindings->getCount(); + for( int i = nCount-1; i >= 0; i-- ) + { + xModel->getBindings()->remove(xBindings->getByIndex( i )); + } + + // ask model for Submissions + Reference< XIndexAccess > xSubmissions( + xModel->getSubmissions(), UNO_QUERY ); - if( xModel.is() ) + // Then release them one by one + nCount = xSubmissions->getCount(); + for( int i = nCount-1; i >= 0; i-- ) { - // ask model for bindings - Reference< XIndexAccess > xBindings( - xModel->getBindings(), UNO_QUERY ); - - // Then release them one by one - int nCount = xBindings->getCount(); - for( int i = nCount-1; i >= 0; i-- ) - { - xModel->getBindings()->remove(xBindings->getByIndex( i )); - } - - // ask model for Submissions - Reference< XIndexAccess > xSubmissions( - xModel->getSubmissions(), UNO_QUERY ); - - // Then release them one by one - nCount = xSubmissions->getCount(); - for( int i = nCount-1; i >= 0; i-- ) - { - xModel->getSubmissions()->remove(xSubmissions->getByIndex( i )); - } + xModel->getSubmissions()->remove(xSubmissions->getByIndex( i )); } } } diff --git a/sw/source/core/doc/extinput.cxx b/sw/source/core/doc/extinput.cxx index d9d22c25f695..83325d73ecd1 100644 --- a/sw/source/core/doc/extinput.cxx +++ b/sw/source/core/doc/extinput.cxx @@ -50,160 +50,159 @@ SwExtTextInput::~SwExtTextInput() if (pDoc->IsInDtor()) { return; /* #i58606# */ } SwTextNode* pTNd = GetPoint()->nNode.GetNode().GetTextNode(); - if( pTNd ) + if( !pTNd ) + return; + ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits