diff options
36 files changed, 389 insertions, 410 deletions
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index 281054bfd9ff..b12d2f8d821b 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -337,7 +337,7 @@ private: sal_uInt32 mnRsid; //< current session ID of the document sal_uInt32 mnRsidRoot; //< session ID when the document was created - sal_Int32 mReferenceCount; + oslInterlockedCount mReferenceCount; bool mbDtor : 1; /**< TRUE: is in SwDoc DTOR. and unfortunately temporarily also in @@ -446,6 +446,9 @@ public: SwNodes & GetNodes() { return *m_pNodes; } SwNodes const& GetNodes() const { return *m_pNodes; } +private: + friend class ::rtl::Reference<SwDoc>; + /** Acquire a reference to an instance. A caller shall release the instance by calling 'release' when it is no longer needed. 'acquire' and 'release' calls need to be balanced. @@ -466,6 +469,7 @@ public: /** Returns the current reference count. This method should be used for debugging purposes. Using it otherwise is a signal of a design flaw. */ +public: sal_Int32 getReferenceCount() const; // IDocumentSettingAccess diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx index 62f4cf4e56d2..d917b6a5780b 100644 --- a/sw/inc/docsh.hxx +++ b/sw/inc/docsh.hxx @@ -64,7 +64,7 @@ class SW_DLLPUBLIC SwDocShell : public SfxObjectShell , public SfxListener { - SwDoc* m_pDoc; ///< Document. + rtl::Reference< SwDoc > m_xDoc; ///< Document. rtl::Reference< SfxStyleSheetBasePool > m_xBasePool; ///< Passing through for formats. FontList* m_pFontList; ///< Current Fontlist. bool m_IsInUpdateFontList; ///< prevent nested calls of UpdateFontList @@ -192,8 +192,8 @@ public: void StateStyleSheet(SfxItemSet&, SwWrtShell* pSh = nullptr ); /// returns Doc. But be careful! - SwDoc* GetDoc() { return m_pDoc; } - const SwDoc* GetDoc() const { return m_pDoc; } + SwDoc* GetDoc() { return m_xDoc.get(); } + const SwDoc* GetDoc() const { return m_xDoc.get(); } IDocumentDeviceAccess& getIDocumentDeviceAccess(); IDocumentChartDataProviderAccess& getIDocumentChartDataProviderAccess(); diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx index 4a52059a5141..6688ff6cb0e9 100644 --- a/sw/inc/viewsh.hxx +++ b/sw/inc/viewsh.hxx @@ -183,7 +183,7 @@ protected: static vcl::DeleteOnDeinit< VclPtr<vcl::Window> > mpCareWindow; ///< Avoid this window. SwRect maVisArea; ///< The modern version of VisArea. - SwDoc *mpDoc; ///< The document; never 0. + rtl::Reference<SwDoc> mxDoc; ///< The document; never 0. sal_uInt16 mnStartAction; ///< != 0 if at least one Action is active. sal_uInt16 mnLockPaint; ///< != 0 if Paint is locked. @@ -286,7 +286,7 @@ public: const Size GetPageSize( sal_uInt16 nPageNum, bool bSkipEmptyPages ) const; - SwDoc *GetDoc() const { return mpDoc; } //Never 0. + SwDoc *GetDoc() const { return mxDoc.get(); } //Never 0. /** Provides access to the document setting interface */ diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index ce7dbb16544f..f78125e3b8bf 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -812,15 +812,15 @@ void SwUiWriterTest::testExportRTF() pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 3, /*bBasicCall=*/false); // Create the clipboard document. - std::shared_ptr<SwDoc> pClpDoc(new SwDoc()); - pClpDoc->SetClipBoard(true); - pWrtShell->Copy(pClpDoc.get()); + std::shared_ptr<SwDoc> xClpDoc(new SwDoc()); + xClpDoc->SetClipBoard(true); + pWrtShell->Copy(xClpDoc.get()); // And finally export it as RTF. WriterRef xWrt; SwReaderWriter::GetWriter("RTF", OUString(), xWrt); SvMemoryStream aStream; - SwWriter aWrt(aStream, *pClpDoc); + SwWriter aWrt(aStream, *xClpDoc); aWrt.Write(xWrt); OString aData(static_cast<const sal_Char*>(aStream.GetBuffer()), aStream.GetSize()); @@ -2405,10 +2405,9 @@ void SwUiWriterTest::testTdf77342() IDocumentFieldsAccess& rField(pDoc->getIDocumentFieldsAccess()); rField.UpdateExpFields(nullptr, true); //creating new clipboard doc - SwDoc* pClpDoc = new SwDoc(); - pClpDoc->acquire(); - pClpDoc->SetClipBoard(true); - pClpDoc->getIDocumentFieldsAccess().LockExpFields(); + rtl::Reference<SwDoc> xClpDoc(new SwDoc()); + xClpDoc->SetClipBoard(true); + xClpDoc->getIDocumentFieldsAccess().LockExpFields(); //selecting reference field 2 and reference field 3 and footnote 1 and footnote 2 //selection is such that more than one and not all footnotes and ref fields are selected pCursor->Move(fnMoveBackward); @@ -2419,7 +2418,7 @@ void SwUiWriterTest::testTdf77342() pCursor->Move(fnMoveForward); pCursor->Move(fnMoveForward); //copying the selection to clipboard - pWrtShell->Copy(pClpDoc); + pWrtShell->Copy(xClpDoc.get()); //deleting selection mark after copy pCursor->DeleteMark(); //checking that the footnotes reference fields have same values after copy operation @@ -2449,7 +2448,7 @@ void SwUiWriterTest::testTdf77342() //moving cursor to the end of the document pWrtShell->EndDoc(); //pasting the copied selection at current cursor position - pWrtShell->Paste(pClpDoc); + pWrtShell->Paste(xClpDoc.get()); //checking the fields, both new and old, for proper values pWrtShell->SttDoc(); //old reference field 1 @@ -2521,7 +2520,7 @@ void SwUiWriterTest::testTdf77342() //moving the cursor to the starting of document pWrtShell->SttDoc(); //pasting the selection again at current cursor position - pWrtShell->Paste(pClpDoc); + pWrtShell->Paste(xClpDoc.get()); //checking the fields, both new and old, for proper values pWrtShell->SttDoc(); //new reference field 1 @@ -2659,10 +2658,9 @@ void SwUiWriterTest::testTdf63553() IDocumentFieldsAccess& rField(pDoc->getIDocumentFieldsAccess()); rField.UpdateExpFields(nullptr, true); //creating new clipboard doc - SwDoc* pClpDoc = new SwDoc(); - pClpDoc->acquire(); - pClpDoc->SetClipBoard(true); - pClpDoc->getIDocumentFieldsAccess().LockExpFields(); + rtl::Reference<SwDoc> xClpDoc( new SwDoc() ); + xClpDoc->SetClipBoard(true); + xClpDoc->getIDocumentFieldsAccess().LockExpFields(); //selecting reference field 2 and 3 and sequence field 1 and 2 //selection is such that more than one and not all sequence fields and reference fields are selected //ref1-[ref2-ref3-seq1-seq2]-seq3 @@ -2675,7 +2673,7 @@ void SwUiWriterTest::testTdf63553() pCursor->Move(fnMoveForward); pCursor->Move(fnMoveForward); //copying the selection to clipboard - pWrtShell->Copy(pClpDoc); + pWrtShell->Copy(xClpDoc.get()); //deleting selection mark after copy pCursor->DeleteMark(); //checking whether the sequence and reference fields have same values after copy operation @@ -2720,7 +2718,7 @@ void SwUiWriterTest::testTdf63553() //moving cursor to the end of the document pWrtShell->EndDoc(); //pasting the copied selection at current cursor position - pWrtShell->Paste(pClpDoc); + pWrtShell->Paste(xClpDoc.get()); //checking the fields, both new and old, for proper values pWrtShell->SttDoc(); //now we have ref1-ref2-ref3-seq1-seq2-seq3-nref1-nref2-nseq1-nseq2 @@ -2786,7 +2784,7 @@ void SwUiWriterTest::testTdf63553() //moving the cursor to the starting of document pWrtShell->SttDoc(); //pasting the selection again at current cursor position - pWrtShell->Paste(pClpDoc); + pWrtShell->Paste(xClpDoc.get()); //checking the fields, both new and old, for proper values pWrtShell->SttDoc(); //now we have [nnref1-nnref2-nnseq1-nnseq2]-ref1-[ref2-ref3-seq1-seq2]-seq3-[nref1-nref2-nseq1-nseq2] diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 5689d1b1d8ad..c21719a27409 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -379,11 +379,11 @@ void SwCursorShell::MarkListLevel( const OUString& sListId, nListLevel != m_nMarkedListLevel) { if ( !m_sMarkedListId.isEmpty() ) - mpDoc->MarkListLevel( m_sMarkedListId, m_nMarkedListLevel, false ); + mxDoc->MarkListLevel( m_sMarkedListId, m_nMarkedListLevel, false ); if ( !sListId.isEmpty() ) { - mpDoc->MarkListLevel( sListId, nListLevel, true ); + mxDoc->MarkListLevel( sListId, nListLevel, true ); } m_sMarkedListId = sListId; @@ -1437,7 +1437,7 @@ void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, bool bIdleEnd ) // then the table mode is active (also if it is already active: m_pTableCursor) SwPaM* pTstCursor = getShellCursor( true ); if( pTstCursor->HasMark() && !m_pBlockCursor && - mpDoc->IsIdxInTable( pTstCursor->GetPoint()->nNode ) && + mxDoc->IsIdxInTable( pTstCursor->GetPoint()->nNode ) && ( m_pTableCursor || pTstCursor->GetNode().StartOfSectionNode() != pTstCursor->GetNode( false ).StartOfSectionNode() ) && !mbSelectAll) @@ -1613,8 +1613,8 @@ void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, bool bIdleEnd ) if( pSectNd && ( pSectNd->GetSection().IsHiddenFlag() || ( !IsReadOnlyAvailable() && pSectNd->GetSection().IsProtectFlag() && - ( !mpDoc->GetDocShell() || - !mpDoc->GetDocShell()->IsReadOnly() || m_bAllProtect )) ) ) + ( !mxDoc->GetDocShell() || + !mxDoc->GetDocShell()->IsReadOnly() || m_bAllProtect )) ) ) { if( !FindValidContentNode( !HasDrawView() || 0 == Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount())) @@ -1710,8 +1710,8 @@ void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, bool bIdleEnd ) if( !IsReadOnlyAvailable() && pFrame->IsProtected() && ( !Imp()->GetDrawView() || !Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount() ) && - (!mpDoc->GetDocShell() || - !mpDoc->GetDocShell()->IsReadOnly() || m_bAllProtect ) ) + (!mxDoc->GetDocShell() || + !mxDoc->GetDocShell()->IsReadOnly() || m_bAllProtect ) ) { // look for a valid position bool bChgState = true; @@ -2832,7 +2832,7 @@ bool SwCursorShell::FindValidContentNode( bool bOnlyText ) // first check for frames SwNodeIndex& rNdIdx = m_pCurrentCursor->GetPoint()->nNode; sal_uLong nNdIdx = rNdIdx.GetIndex(); // keep backup - SwNodes& rNds = mpDoc->GetNodes(); + SwNodes& rNds = mxDoc->GetNodes(); SwContentNode* pCNd = rNdIdx.GetNode().GetContentNode(); const SwContentFrame * pFrame; @@ -2863,8 +2863,8 @@ bool SwCursorShell::FindValidContentNode( bool bOnlyText ) else if( bOnlyText && pCNd && pCNd->IsNoTextNode() ) { // set to beginning of document - rNdIdx = mpDoc->GetNodes().GetEndOfExtras(); - m_pCurrentCursor->GetPoint()->nContent.Assign( mpDoc->GetNodes().GoNext( + rNdIdx = mxDoc->GetNodes().GetEndOfExtras(); + m_pCurrentCursor->GetPoint()->nContent.Assign( mxDoc->GetNodes().GoNext( &rNdIdx ), 0 ); nNdIdx = rNdIdx.GetIndex(); } @@ -3108,7 +3108,7 @@ SvxFrameDirection SwCursorShell::GetTextDirection( const Point* pPt ) const GetLayout()->GetCursorOfst( &aPos, aPt, &aTmpState ); } - return mpDoc->GetTextDirection( aPos, &aPt ); + return mxDoc->GetTextDirection( aPos, &aPt ); } bool SwCursorShell::IsInVerticalText( const Point* pPt ) const diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx index 26144d19c8b6..e4ae81d5b71d 100644 --- a/sw/source/core/crsr/crstrvl.cxx +++ b/sw/source/core/crsr/crstrvl.cxx @@ -667,7 +667,7 @@ bool SwCursorShell::MoveFieldType( if( SwFieldIds::Input == pFieldType->Which() && bAddSetExpressionFieldsToInputFields ) { // there are hidden input fields in the set exp. fields - const SwFieldTypes& rFieldTypes = *mpDoc->getIDocumentFieldsAccess().GetFieldTypes(); + const SwFieldTypes& rFieldTypes = *mxDoc->getIDocumentFieldsAccess().GetFieldTypes(); const size_t nSize = rFieldTypes.size(); for( size_t i=0; i < nSize; ++i ) { @@ -681,7 +681,7 @@ bool SwCursorShell::MoveFieldType( } else { - const SwFieldTypes& rFieldTypes = *mpDoc->getIDocumentFieldsAccess().GetFieldTypes(); + const SwFieldTypes& rFieldTypes = *mxDoc->getIDocumentFieldsAccess().GetFieldTypes(); const size_t nSize = rFieldTypes.size(); for( size_t i=0; i < nSize; ++i ) { @@ -716,10 +716,10 @@ bool SwCursorShell::MoveFieldType( { // create dummy for the search SwFormatField* pFormatField = new SwFormatField( SwDateTimeField( - static_cast<SwDateTimeFieldType*>(mpDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::DateTime ) ) ) ); + static_cast<SwDateTimeFieldType*>(mxDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::DateTime ) ) ) ); pTextField = new SwTextField( *pFormatField, rPos.nContent.GetIndex(), - mpDoc->IsClipBoard() ); + mxDoc->IsClipBoard() ); pTextField->ChgTextNode( pTNd ); } else @@ -932,7 +932,7 @@ bool SwCursorShell::GotoOutline( const OUString& rName ) SwCursorSaveState aSaveState( *pCursor ); bool bRet = false; - if( mpDoc->GotoOutline( *pCursor->GetPoint(), rName ) && !pCursor->IsSelOvr() ) + if( mxDoc->GotoOutline( *pCursor->GetPoint(), rName ) && !pCursor->IsSelOvr() ) { UpdateCursor(SwCursorShell::SCROLLWIN|SwCursorShell::CHKRANGE|SwCursorShell::READONLY); bRet = true; @@ -1819,7 +1819,7 @@ bool SwCursorShell::GotoINetAttr( const SwTextINetFormat& rAttr ) const SwFormatINetFormat* SwCursorShell::FindINetAttr( const OUString& rName ) const { - return mpDoc->FindINetAttr( rName ); + return mxDoc->FindINetAttr( rName ); } bool SwCursorShell::GetShadowCursorPos( const Point& rPt, SwFillMode eFillMode, diff --git a/sw/source/core/crsr/trvltbl.cxx b/sw/source/core/crsr/trvltbl.cxx index 70b4000c46e8..fef5a4f4a78d 100644 --- a/sw/source/core/crsr/trvltbl.cxx +++ b/sw/source/core/crsr/trvltbl.cxx @@ -91,7 +91,7 @@ bool SwCursorShell::GoNextCell( bool bAppendLine ) // the document might change; w/o Action views would not be notified static_cast<SwEditShell*>(this)->StartAllAction(); - bRet = mpDoc->InsertRow( SwTable::SelLineFromBox( pTableBox, aBoxes, false )); + bRet = mxDoc->InsertRow( SwTable::SelLineFromBox( pTableBox, aBoxes, false )); static_cast<SwEditShell*>(this)->EndAllAction(); } } diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index 33211afdd558..9239aa5cf809 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -145,7 +145,10 @@ sal_Int32 SwDoc::acquire() sal_Int32 SwDoc::release() { assert(mReferenceCount >= 1); - return osl_atomic_decrement(&mReferenceCount); + auto x = osl_atomic_decrement(&mReferenceCount); + if (x == 0) + delete this; + return x; } sal_Int32 SwDoc::getReferenceCount() const diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index 8fa20bd5df18..883fcbac9047 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -856,12 +856,12 @@ void SwDoc::ReplaceCompatibilityOptions(const SwDoc& rSource) SfxObjectShell* SwDoc::CreateCopy( bool bCallInitNew, bool bEmpty ) const { SAL_INFO( "sw.pageframe", "(SwDoc::CreateCopy in" ); - SwDoc* pRet = new SwDoc; + rtl::Reference<SwDoc> xRet( new SwDoc ); // we have to use pointer here, since the callee has to decide whether // SfxObjectShellLock or SfxObjectShellRef should be used sometimes the // object will be returned with refcount set to 0 ( if no DoInitNew is done ) - SfxObjectShell* pRetShell = new SwDocShell( pRet, SfxObjectCreateMode::STANDARD ); + SfxObjectShell* pRetShell = new SwDocShell( xRet.get(), SfxObjectCreateMode::STANDARD ); if( bCallInitNew ) { // it could happen that DoInitNew creates model, @@ -869,30 +869,26 @@ SfxObjectShell* SwDoc::CreateCopy( bool bCallInitNew, bool bEmpty ) const pRetShell->DoInitNew(); } - (void)pRet->acquire(); + xRet->ReplaceDefaults(*this); - pRet->ReplaceDefaults(*this); + xRet->ReplaceCompatibilityOptions(*this); - pRet->ReplaceCompatibilityOptions(*this); - - pRet->ReplaceStyles(*this); + xRet->ReplaceStyles(*this); if( !bEmpty ) { #ifdef DBG_UTIL SAL_INFO( "sw.createcopy", "CC-Nd-Src: " << CNTNT_DOC( this ) ); - SAL_INFO( "sw.createcopy", "CC-Nd: " << CNTNT_DOC( pRet ) ); + SAL_INFO( "sw.createcopy", "CC-Nd: " << CNTNT_DOC( xRet ) ); #endif - pRet->AppendDoc(*this, 0, bCallInitNew, 0, 0); + xRet->AppendDoc(*this, 0, bCallInitNew, 0, 0); #ifdef DBG_UTIL - SAL_INFO( "sw.createcopy", "CC-Nd: " << CNTNT_DOC( pRet ) ); + SAL_INFO( "sw.createcopy", "CC-Nd: " << CNTNT_DOC( xRet ) ); #endif } // remove the temporary shell if it is there as it was done before - pRet->SetTmpDocShell( nullptr ); - - (void)pRet->release(); + xRet->SetTmpDocShell( nullptr ); SAL_INFO( "sw.pageframe", "SwDoc::CreateCopy out)" ); return pRetShell; diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index 4ffb751df908..5590071bd174 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -4352,20 +4352,18 @@ bool SwDoc::InsCopyOfTable( SwPosition& rInsPos, const SwSelBoxes& rBoxes, GetIDocumentUndoRedo().DoUndo(false); } - SwDoc* pCpyDoc = const_cast<SwDoc*>(pSrcTableNd->GetDoc()); - bool bDelCpyDoc = pCpyDoc == this; + rtl::Reference<SwDoc> xCpyDoc( const_cast<SwDoc*>(pSrcTableNd->GetDoc()) ); + bool bDelCpyDoc = xCpyDoc == this; if( bDelCpyDoc ) { // Copy the Table into a temporary Doc - pCpyDoc = new SwDoc; - pCpyDoc->acquire(); + xCpyDoc = new SwDoc; - SwPosition aPos( SwNodeIndex( pCpyDoc->GetNodes().GetEndOfContent() )); - if( !pSrcTableNd->GetTable().MakeCopy( pCpyDoc, aPos, rBoxes, true )) + SwPosition aPos( SwNodeIndex( xCpyDoc->GetNodes().GetEndOfContent() )); + if( !pSrcTableNd->GetTable().MakeCopy( xCpyDoc.get(), aPos, rBoxes, true )) { - if( pCpyDoc->release() == 0 ) - delete pCpyDoc; + xCpyDoc.clear(); if( pUndo ) { @@ -4413,11 +4411,7 @@ bool SwDoc::InsCopyOfTable( SwPosition& rInsPos, const SwSelBoxes& rBoxes, aNdIdx, pUndo ); } - if( bDelCpyDoc ) - { - if( pCpyDoc->release() == 0 ) - delete pCpyDoc; - } + xCpyDoc.clear(); if( pUndo ) { diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx index aad47d7f8b22..25d7368dc2d3 100644 --- a/sw/source/core/edit/edattr.cxx +++ b/sw/source/core/edit/edattr.cxx @@ -409,7 +409,7 @@ bool SwEditShell::SetCurFootnote( const SwFormatFootnote& rFillFootnote ) for(SwPaM& rCursor : GetCursor()->GetRingContainer()) { bChgd |= - mpDoc->SetCurFootnote( rCursor, rFillFootnote.GetNumStr(), rFillFootnote.GetNumber(), rFillFootnote.IsEndNote() ); + mxDoc->SetCurFootnote( rCursor, rFillFootnote.GetNumStr(), rFillFootnote.GetNumber(), rFillFootnote.IsEndNote() ); } @@ -419,7 +419,7 @@ bool SwEditShell::SetCurFootnote( const SwFormatFootnote& rFillFootnote ) bool SwEditShell::HasFootnotes( bool bEndNotes ) const { - const SwFootnoteIdxs &rIdxs = mpDoc->GetFootnoteIdxs(); + const SwFootnoteIdxs &rIdxs = mxDoc->GetFootnoteIdxs(); for ( auto pIdx : rIdxs ) { const SwFormatFootnote &rFootnote = pIdx->GetFootnote(); @@ -434,11 +434,11 @@ size_t SwEditShell::GetSeqFootnoteList( SwSeqFieldList& rList, bool bEndNotes ) { rList.Clear(); - const size_t nFootnoteCnt = mpDoc->GetFootnoteIdxs().size(); + const size_t nFootnoteCnt = mxDoc->GetFootnoteIdxs().size(); SwTextFootnote* pTextFootnote; for( size_t n = 0; n < nFootnoteCnt; ++n ) { - pTextFootnote = mpDoc->GetFootnoteIdxs()[ n ]; + pTextFootnote = mxDoc->GetFootnoteIdxs()[ n ]; const SwFormatFootnote& rFootnote = pTextFootnote->GetFootnote(); if ( rFootnote.IsEndNote() != bEndNotes ) continue; @@ -449,11 +449,11 @@ size_t SwEditShell::GetSeqFootnoteList( SwSeqFieldList& rList, bool bEndNotes ) SwNodeIndex aIdx( *pIdx, 1 ); SwTextNode* pTextNd = aIdx.GetNode().GetTextNode(); if( !pTextNd ) - pTextNd = static_cast<SwTextNode*>(mpDoc->GetNodes().GoNext( &aIdx )); + pTextNd = static_cast<SwTextNode*>(mxDoc->GetNodes().GoNext( &aIdx )); if( pTextNd ) { - OUString sText( rFootnote.GetViewNumStr( *mpDoc )); + OUString sText( rFootnote.GetViewNumStr( *mxDoc )); if( !sText.isEmpty() ) sText += " "; sText += pTextNd->GetExpandText(); diff --git a/sw/source/core/edit/edfmt.cxx b/sw/source/core/edit/edfmt.cxx index c162358a1913..329a25d43b7f 100644 --- a/sw/source/core/edit/edfmt.cxx +++ b/sw/source/core/edit/edfmt.cxx @@ -91,7 +91,7 @@ void SwEditShell::FillByEx(SwCharFormat* pCharFormat) else nStt = nEnd = pPam->GetPoint()->nContent.GetIndex(); - SfxItemSet aSet( mpDoc->GetAttrPool(), + SfxItemSet aSet( mxDoc->GetAttrPool(), pCharFormat->GetAttrSet().GetRanges() ); pTextNode->GetAttr( aSet, nStt, nEnd ); pCharFormat->SetFormatAttr( aSet ); @@ -140,22 +140,22 @@ SwPageDesc* SwEditShell::GetPageDescFromPool( sal_uInt16 nId ) bool SwEditShell::IsUsed( const SwModify& rModify ) const { - return mpDoc->IsUsed( rModify ); + return mxDoc->IsUsed( rModify ); } const SwFlyFrameFormat* SwEditShell::FindFlyByName( const OUString& rName ) const { - return mpDoc->FindFlyByName(rName); + return mxDoc->FindFlyByName(rName); } SwCharFormat* SwEditShell::FindCharFormatByName( const OUString& rName ) const { - return mpDoc->FindCharFormatByName( rName ); + return mxDoc->FindCharFormatByName( rName ); } SwTextFormatColl* SwEditShell::FindTextFormatCollByName( const OUString& rName ) const { - return mpDoc->FindTextFormatCollByName( rName ); + return mxDoc->FindTextFormatCollByName( rName ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx index cb3cf89d0088..492169cfa319 100644 --- a/sw/source/core/edit/editsh.cxx +++ b/sw/source/core/edit/editsh.cxx @@ -292,7 +292,7 @@ void SwEditShell::ReRead( const OUString& rGrfName, const OUString& rFltName, const Graphic* pGraphic ) { StartAllAction(); - mpDoc->getIDocumentContentOperations().ReRead( *GetCursor(), rGrfName, rFltName, pGraphic, nullptr ); + mxDoc->getIDocumentContentOperations().ReRead( *GetCursor(), rGrfName, rFltName, pGraphic, nullptr ); EndAllAction(); } @@ -570,7 +570,7 @@ OUString SwEditShell::Calculate() sfx2::LinkManager& SwEditShell::GetLinkManager() { - return mpDoc->getIDocumentLinksAdministration().GetLinkManager(); + return mxDoc->getIDocumentLinksAdministration().GetLinkManager(); } void *SwEditShell::GetIMapInventor() const diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx index d62d1cc118a3..c40d776b419a 100644 --- a/sw/source/core/edit/edlingu.cxx +++ b/sw/source/core/edit/edlingu.cxx @@ -966,10 +966,10 @@ bool SwEditShell::GetGrammarCorrection( { const OUString aText(pNode->GetText().copy(nBegin, nLen)); - uno::Reference< linguistic2::XProofreadingIterator > xGCIterator( mpDoc->GetGCIterator() ); + uno::Reference< linguistic2::XProofreadingIterator > xGCIterator( mxDoc->GetGCIterator() ); if (xGCIterator.is()) { - uno::Reference< lang::XComponent > xDoc( mpDoc->GetDocShell()->GetBaseModel(), uno::UNO_QUERY ); + uno::Reference< lang::XComponent > xDoc( mxDoc->GetDocShell()->GetBaseModel(), uno::UNO_QUERY ); // Expand the string: const ModelToViewHelper aConversionMap(*pNode); @@ -1125,7 +1125,7 @@ void SwEditShell::ApplyChangedSentence(const svx::SpellPortions& rNewPortions, b // iterate over the new portions, beginning at the end to take advantage of the previously // saved content positions - mpDoc->GetIDocumentUndoRedo().StartUndo( SwUndoId::UI_TEXT_CORRECTION, nullptr ); + mxDoc->GetIDocumentUndoRedo().StartUndo( SwUndoId::UI_TEXT_CORRECTION, nullptr ); StartAction(); SwPaM *pCursor = GetCursor(); @@ -1179,11 +1179,11 @@ void SwEditShell::ApplyChangedSentence(const svx::SpellPortions& rNewPortions, b if(aCurrentNewPortion->sText != aCurrentOldPortion->sText) { // change text ... - mpDoc->getIDocumentContentOperations().DeleteAndJoin(*pCursor); + mxDoc->getIDocumentContentOperations().DeleteAndJoin(*pCursor); // ... and apply language if necessary if(aCurrentNewPortion->eLanguage != aCurrentOldPortion->eLanguage) SetAttrItem( SvxLanguageItem(aCurrentNewPortion->eLanguage, nLangWhichId) ); - mpDoc->getIDocumentContentOperations().InsertString(*pCursor, aCurrentNewPortion->sText); + mxDoc->getIDocumentContentOperations().InsertString(*pCursor, aCurrentNewPortion->sText); } else if(aCurrentNewPortion->eLanguage != aCurrentOldPortion->eLanguage) { @@ -1213,7 +1213,7 @@ void SwEditShell::ApplyChangedSentence(const svx::SpellPortions& rNewPortions, b pCursor->GetMark()->nContent = aCurrentEndPosition->nRight; // delete the sentence completely - mpDoc->getIDocumentContentOperations().DeleteAndJoin(*pCursor); + mxDoc->getIDocumentContentOperations().DeleteAndJoin(*pCursor); svx::SpellPortions::const_iterator aCurrentNewPortion = rNewPortions.begin(); while(aCurrentNewPortion != rNewPortions.end()) { @@ -1232,7 +1232,7 @@ void SwEditShell::ApplyChangedSentence(const svx::SpellPortions& rNewPortions, b if(rLang.GetLanguage() != aCurrentNewPortion->eLanguage) SetAttrItem( SvxLanguageItem(aCurrentNewPortion->eLanguage, nLangWhichId) ); // insert the new string - mpDoc->getIDocumentContentOperations().InsertString(*pCursor, aCurrentNewPortion->sText); + mxDoc->getIDocumentContentOperations().InsertString(*pCursor, aCurrentNewPortion->sText); // set the cursor to the end of the inserted string *pCursor->Start() = *pCursor->End(); @@ -1255,7 +1255,7 @@ void SwEditShell::ApplyChangedSentence(const svx::SpellPortions& rNewPortions, b // set continuation position for spell/grammar checking to the end of this sentence g_pSpellIter->SetCurr( new SwPosition(*pCursor->Start()) ); - mpDoc->GetIDocumentUndoRedo().EndUndo( SwUndoId::UI_TEXT_CORRECTION, nullptr ); + mxDoc->GetIDocumentUndoRedo().EndUndo( SwUndoId::UI_TEXT_CORRECTION, nullptr ); EndAction(); } } diff --git a/sw/source/core/edit/ednumber.cxx b/sw/source/core/edit/ednumber.cxx index ef503f3187f4..d5c58b022cef 100644 --- a/sw/source/core/edit/ednumber.cxx +++ b/sw/source/core/edit/ednumber.cxx @@ -167,7 +167,7 @@ bool SwEditShell::SelectionHasNumber() const } for (sal_uInt32 nPos = nStt; nPos<=nEnd; nPos++) { - pTextNd = mpDoc->GetNodes()[nPos]->GetTextNode(); + pTextNd = mxDoc->GetNodes()[nPos]->GetTextNode(); if (pTextNd && pTextNd->Len()!=0) { bResult = pTextNd->HasNumber(); @@ -213,7 +213,7 @@ bool SwEditShell::SelectionHasBullet() const } for (sal_uInt32 nPos = nStt; nPos<=nEnd; nPos++) { - pTextNd = mpDoc->GetNodes()[nPos]->GetTextNode(); + pTextNd = mxDoc->GetNodes()[nPos]->GetTextNode(); if (pTextNd && pTextNd->Len()!=0) { bResult = pTextNd->HasBullet(); diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx index ec4b672bf7a0..f6919179af0f 100644 --- a/sw/source/core/edit/edtox.cxx +++ b/sw/source/core/edit/edtox.cxx @@ -85,7 +85,7 @@ void SwEditShell::DeleteTOXMark( SwTOXMark const * pMark ) SET_CURR_SHELL( this ); StartAllAction(); - mpDoc->DeleteTOXMark( pMark ); + mxDoc->DeleteTOXMark( pMark ); EndAllAction(); } @@ -136,7 +136,7 @@ void SwEditShell::InsertTableOf( const SwTOXBase& rTOX, const SfxItemSet* pSet ) ::SetProgressText( STR_STATSTR_TOX_INSERT, pDocSh ); // Insert listing - const SwTOXBaseSection* pTOX = mpDoc->InsertTableOf( + const SwTOXBaseSection* pTOX = mxDoc->InsertTableOf( *GetCursor()->GetPoint(), rTOX, pSet, true ); OSL_ENSURE(pTOX, "No current TOx"); @@ -210,7 +210,7 @@ bool SwEditShell::DeleteTOX( const SwTOXBase& rTOXBase, bool bDelNodes ) const SwTOXType* SwEditShell::GetTOXType(TOXTypes eTyp, sal_uInt16 nId) const { - return mpDoc->GetTOXType(eTyp, nId); + return mxDoc->GetTOXType(eTyp, nId); } // manage keys for the alphabetical index diff --git a/sw/source/core/edit/edws.cxx b/sw/source/core/edit/edws.cxx index 6e0b62b7950f..c19d373a8bfb 100644 --- a/sw/source/core/edit/edws.cxx +++ b/sw/source/core/edit/edws.cxx @@ -187,12 +187,12 @@ SwFrameFormat *SwEditShell::GetTableFormat() // fastest test on a table // TODO: Why is this called 3x for a new document? sal_uInt16 SwEditShell::GetTOXTypeCount(TOXTypes eTyp) const { - return mpDoc->GetTOXTypeCount(eTyp); + return mxDoc->GetTOXTypeCount(eTyp); } void SwEditShell::InsertTOXType(const SwTOXType& rTyp) { - mpDoc->InsertTOXType(rTyp); + mxDoc->InsertTOXType(rTyp); } void SwEditShell::DoUndo( bool bOn ) diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx index 4e015c1df804..b6840d96460f 100644 --- a/sw/source/core/frmedt/fecopy.cxx +++ b/sw/source/core/frmedt/fecopy.cxx @@ -464,10 +464,10 @@ bool SwFEShell::Copy( SwFEShell* pDestShell, const Point& rSttPt, pDestShell->GetDoc()->getIDocumentFieldsAccess().LockExpFields(); // Shift references - bool bCopyIsMove = mpDoc->IsCopyIsMove(); + bool bCopyIsMove = mxDoc->IsCopyIsMove(); if( bIsMove ) // set a flag in Doc, handled in TextNodes - mpDoc->SetCopyIsMove( true ); + mxDoc->SetCopyIsMove( true ); RedlineFlags eOldRedlMode = pDestShell->GetDoc()->getIDocumentRedlineAccess().GetRedlineFlags(); pDestShell->GetDoc()->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOldRedlMode | RedlineFlags::DeleteRedlines ); @@ -652,7 +652,7 @@ bool SwFEShell::Copy( SwFEShell* pDestShell, const Point& rSttPt, } pDestShell->GetDoc()->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOldRedlMode ); - mpDoc->SetCopyIsMove( bCopyIsMove ); + mxDoc->SetCopyIsMove( bCopyIsMove ); // have new table formulas been inserted? if( pTableFieldTyp->HasWriterListeners() ) @@ -1392,7 +1392,7 @@ void SwFEShell::Paste( SvStream& rStrm, SwPasteSdr nAction, const Point* pPt ) if( dynamic_cast<const SwVirtFlyDrawObj*>( pOldObj) != nullptr ) { // store attributes, then set SdrObject - SfxItemSet aFrameSet( mpDoc->GetAttrPool(), + SfxItemSet aFrameSet( mxDoc->GetAttrPool(), svl::Items<RES_SURROUND, RES_ANCHOR>{} ); aFrameSet.Set( pFormat->GetAttrSet() ); diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx index 067194ca14ff..8130b7df7bbb 100644 --- a/sw/source/core/frmedt/fefly1.cxx +++ b/sw/source/core/frmedt/fefly1.cxx @@ -888,7 +888,7 @@ void SwFEShell::InsertDrawObj( SdrObject& rDrawObj, rDrawObj.SetLayer( getIDocumentDrawModelAccess().GetHeavenId() ); // find anchor position - SwPaM aPam( mpDoc->GetNodes() ); + SwPaM aPam( mxDoc->GetNodes() ); { SwCursorMoveState aState( MV_SETONLYTEXT ); Point aTmpPt( rInsertPosition ); @@ -924,7 +924,7 @@ void SwFEShell::GetPageObjs( std::vector<SwFrameFormat*>& rFillArr ) { rFillArr.clear(); - for( auto pFormat : *mpDoc->GetSpzFrameFormats() ) + for( auto pFormat : *mxDoc->GetSpzFrameFormats() ) { if (RndStdIds::FLY_AT_PAGE == pFormat->GetAnchor().GetAnchorId()) { @@ -947,7 +947,7 @@ void SwFEShell::SetPageObjsNewPage( std::vector<SwFrameFormat*>& rFillArr ) bool bTmpAssert = false; for( auto pFormat : rFillArr ) { - if (mpDoc->GetSpzFrameFormats()->IsAlive(pFormat)) + if (mxDoc->GetSpzFrameFormats()->IsAlive(pFormat)) { // FlyFormat is still valid, therefore process @@ -967,7 +967,7 @@ void SwFEShell::SetPageObjsNewPage( std::vector<SwFrameFormat*>& rFillArr ) bTmpAssert = true; } aNewAnchor.SetPageNum( sal_uInt16(nNewPage) ); - mpDoc->SetAttr( aNewAnchor, *pFormat ); + mxDoc->SetAttr( aNewAnchor, *pFormat ); } } @@ -1379,11 +1379,11 @@ SwFrameFormat* SwFEShell::WizardGetFly() { // do not search the Fly via the layout. Now we can delete a frame // without a valid layout. ( e.g. for the wizards ) - SwFrameFormats& rSpzArr = *mpDoc->GetSpzFrameFormats(); + SwFrameFormats& rSpzArr = *mxDoc->GetSpzFrameFormats(); if( !rSpzArr.empty() ) { SwNodeIndex& rCursorNd = GetCursor()->GetPoint()->nNode; - if( rCursorNd.GetIndex() > mpDoc->GetNodes().GetEndOfExtras().GetIndex() ) + if( rCursorNd.GetIndex() > mxDoc->GetNodes().GetEndOfExtras().GetIndex() ) // Cursor is in the body area! return nullptr; @@ -1739,7 +1739,7 @@ bool SwFEShell::ReplaceSdrObj( const OUString& rGrfName, const Graphic* pGrf ) SwFrameFormat *pFormat = FindFrameFormat( pObj ); // store attributes, then set the graphic - SfxItemSet aFrameSet( mpDoc->GetAttrPool(), + SfxItemSet aFrameSet( mxDoc->GetAttrPool(), pFormat->GetAttrSet().GetRanges() ); aFrameSet.Set( pFormat->GetAttrSet() ); @@ -1813,21 +1813,21 @@ void SwFEShell::GetConnectableFrameFormats(SwFrameFormat & rFormat, SwFrameFormat * pOldChainPrev = static_cast<SwFrameFormat *>(rChain.GetPrev()); if (pOldChainNext) - mpDoc->Unchain(rFormat); + mxDoc->Unchain(rFormat); if (pOldChainPrev) - mpDoc->Unchain(*pOldChainPrev); + mxDoc->Unchain(*pOldChainPrev); - const size_t nCnt = mpDoc->GetFlyCount(FLYCNTTYPE_FRM); + const size_t nCnt = mxDoc->GetFlyCount(FLYCNTTYPE_FRM); /* potential successors resp. predecessors */ std::vector< const SwFrameFormat * > aTmpSpzArray; - mpDoc->FindFlyByName(rReference); + mxDoc->FindFlyByName(rReference); for (size_t n = 0; n < nCnt; ++n) { - const SwFrameFormat & rFormat1 = *(mpDoc->GetFlyNum(n, FLYCNTTYPE_FRM)); + const SwFrameFormat & rFormat1 = *(mxDoc->GetFlyNum(n, FLYCNTTYPE_FRM)); /* pFormat is a potential successor of rFormat if it is chainable after @@ -1840,9 +1840,9 @@ void SwFEShell::GetConnectableFrameFormats(SwFrameFormat & rFormat, SwChainRet nChainState; if (bSuccessors) - nChainState = mpDoc->Chainable(rFormat, rFormat1); + nChainState = mxDoc->Chainable(rFormat, rFormat1); else - nChainState = mpDoc->Chainable(rFormat1, rFormat); + nChainState = mxDoc->Chainable(rFormat1, rFormat); if (nChainState == SwChainRet::OK) { @@ -1889,10 +1889,10 @@ void SwFEShell::GetConnectableFrameFormats(SwFrameFormat & rFormat, } if (pOldChainNext) - mpDoc->Chain(rFormat, *pOldChainNext); + mxDoc->Chain(rFormat, *pOldChainNext); if (pOldChainPrev) - mpDoc->Chain(*pOldChainPrev, rFormat); + mxDoc->Chain(*pOldChainPrev, rFormat); EndAction(); } diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx index a44468719a36..5ed4bdae28a8 100644 --- a/sw/source/core/frmedt/feshview.cxx +++ b/sw/source/core/frmedt/feshview.cxx @@ -2459,7 +2459,7 @@ bool SwFEShell::GotoFly( const OUString& rName, FlyCntType eType, bool bSelFrame /* FLYCNTTYPE_OLE */ SwNodeType::Ole }; - const SwFlyFrameFormat* pFlyFormat = mpDoc->FindFlyByName( rName, aChkArr[ eType]); + const SwFlyFrameFormat* pFlyFormat = mxDoc->FindFlyByName( rName, aChkArr[ eType]); if( pFlyFormat ) { SET_CURR_SHELL( this ); @@ -2566,7 +2566,7 @@ FlyProtectFlags SwFEShell::IsSelObjProtected( FlyProtectFlags eType ) const // set FlyProtectFlags::Pos if it is a Math object anchored 'as char' and baseline alignment is activated const bool bProtectMathPos = SotExchange::IsMath( xObj->getClassID() ) && RndStdIds::FLY_AS_CHAR == pFly->GetFormat()->GetAnchor().GetAnchorId() - && mpDoc->GetDocumentSettingManager().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT ); + && mxDoc->GetDocumentSettingManager().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT ); if ((FlyProtectFlags::Pos & eType) && bProtectMathPos) nChk |= FlyProtectFlags::Pos; } diff --git a/sw/source/core/frmedt/fews.cxx b/sw/source/core/frmedt/fews.cxx index 38b194f414ff..9208fea97229 100644 --- a/sw/source/core/frmedt/fews.cxx +++ b/sw/source/core/frmedt/fews.cxx @@ -565,7 +565,7 @@ bool SwFEShell::Sort(const SwSortOptions& rOpt) } // call sorting on document - bRet = mpDoc->SortTable(aBoxes, rOpt); + bRet = mxDoc->SortTable(aBoxes, rOpt); } else { @@ -582,7 +582,7 @@ bool SwFEShell::Sort(const SwSortOptions& rOpt) const sal_Int32 nCntStt = pStart->nContent.GetIndex(); // Sorting - bRet = mpDoc->SortText(*pPam, rOpt); + bRet = mxDoc->SortText(*pPam, rOpt); // put selection again pPam->DeleteMark(); diff --git a/sw/source/core/inc/SwXMLTextBlocks.hxx b/sw/source/core/inc/SwXMLTextBlocks.hxx index e4305c071c20..d164d5249554 100644 --- a/sw/source/core/inc/SwXMLTextBlocks.hxx +++ b/sw/source/core/inc/SwXMLTextBlocks.hxx @@ -88,7 +88,7 @@ public: virtual bool PutMuchEntries( bool bOn ) override; public: - SwDoc* GetDoc() const { return m_pDoc; } + SwDoc* GetDoc() const { return m_xDoc.get(); } //void SetDoc( SwDoc * pNewDoc); ErrCode StartPutBlock( const OUString& rShort, const OUString& rPackageName ); ErrCode PutBlock(); diff --git a/sw/source/core/inc/swblocks.hxx b/sw/source/core/inc/swblocks.hxx index d4fdf25a9ad9..77098f9c08aa 100644 --- a/sw/source/core/inc/swblocks.hxx +++ b/sw/source/core/inc/swblocks.hxx @@ -60,7 +60,7 @@ protected: SwBlockNames m_aNames; // List of all Blocks Date m_aDateModified; // For aligning the Actions tools::Time m_aTimeModified; - SwDoc* m_pDoc; // Document to be switched + rtl::Reference<SwDoc> m_xDoc; // Document to be switched sal_uInt16 m_nCurrentIndex; // Current Index bool m_bReadOnly : 1; bool m_bInPutMuchBlocks : 1; // Put several block entries diff --git a/sw/source/core/swg/SwXMLTextBlocks.cxx b/sw/source/core/swg/SwXMLTextBlocks.cxx index 108c8473d309..87fdb2b3c40a 100644 --- a/sw/source/core/swg/SwXMLTextBlocks.cxx +++ b/sw/source/core/swg/SwXMLTextBlocks.cxx @@ -63,11 +63,10 @@ SwXMLTextBlocks::SwXMLTextBlocks( const OUString& rFile ) if( !pDocSh->DoInitNew() ) return; m_bReadOnly = true; - m_pDoc = pDocSh->GetDoc(); + m_xDoc = pDocSh->GetDoc(); xDocShellRef = pDocSh; - m_pDoc->SetOle2Link( Link<bool,void>() ); - m_pDoc->GetIDocumentUndoRedo().DoUndo(false); - m_pDoc->acquire(); + m_xDoc->SetOle2Link( Link<bool,void>() ); + m_xDoc->GetIDocumentUndoRedo().DoUndo(false); uno::Reference< embed::XStorage > refStg; if( !m_aDateModified.GetDate() || !m_aTimeModified.GetTime() ) Touch(); // If it's created anew -> get a new timestamp @@ -106,11 +105,10 @@ SwXMLTextBlocks::SwXMLTextBlocks( const uno::Reference < embed::XStorage >& rStg if( !pDocSh->DoInitNew() ) return; m_bReadOnly = false; - m_pDoc = pDocSh->GetDoc(); + m_xDoc = pDocSh->GetDoc(); xDocShellRef = pDocSh; - m_pDoc->SetOle2Link( Link<bool,void>() ); - m_pDoc->GetIDocumentUndoRedo().DoUndo(false); - m_pDoc->acquire(); + m_xDoc->SetOle2Link( Link<bool,void>() ); + m_xDoc->GetIDocumentUndoRedo().DoUndo(false); InitBlockMode ( rStg ); ReadInfo(); @@ -125,17 +123,15 @@ SwXMLTextBlocks::~SwXMLTextBlocks() if(xDocShellRef.is()) xDocShellRef->DoClose(); xDocShellRef = nullptr; - if( m_pDoc && !m_pDoc->release() ) - delete m_pDoc; } void SwXMLTextBlocks::ClearDoc() { - SwDocShell * pDocShell = m_pDoc->GetDocShell(); + SwDocShell * pDocShell = m_xDoc->GetDocShell(); pDocShell->InvalidateModel(); pDocShell->ReactivateModel(); - m_pDoc->ClearDoc(); + m_xDoc->ClearDoc(); pDocShell->ClearEmbeddedObjects(); } @@ -322,13 +318,13 @@ ErrCode SwXMLTextBlocks::PutBlock() WriterRef xWrt; ::GetXMLWriter ( OUString(), GetBaseURL(), xWrt); - SwWriter aWriter (xRoot, *m_pDoc ); + SwWriter aWriter (xRoot, *m_xDoc ); xWrt->bBlock = true; nRes = aWriter.Write ( xWrt ); xWrt->bBlock = false; // Save OLE objects if there are some - SwDocShell *pDocSh = m_pDoc->GetDocShell(); + SwDocShell *pDocSh = m_xDoc->GetDocShell(); bool bHasChildren = pDocSh && pDocSh->GetEmbeddedObjectContainer().HasEmbeddedObjects(); if( !nRes && bHasChildren ) @@ -562,10 +558,10 @@ ErrCode SwXMLTextBlocks::PutText( const OUString& rShort, const OUString& rName, void SwXMLTextBlocks::MakeBlockText( const OUString& rText ) { - SwTextNode* pTextNode = m_pDoc->GetNodes()[ m_pDoc->GetNodes().GetEndOfContent(). + SwTextNode* pTextNode = m_xDoc->GetNodes()[ m_xDoc->GetNodes().GetEndOfContent(). GetIndex() - 1 ]->GetTextNode(); - if( pTextNode->GetTextColl() == m_pDoc->GetDfltTextFormatColl() ) - pTextNode->ChgFormatColl( m_pDoc->getIDocumentStylePoolAccess().GetTextCollFromPool( RES_POOLCOLL_STANDARD )); + if( pTextNode->GetTextColl() == m_xDoc->GetDfltTextFormatColl() ) + pTextNode->ChgFormatColl( m_xDoc->getIDocumentStylePoolAccess().GetTextCollFromPool( RES_POOLCOLL_STANDARD )); sal_Int32 nPos = 0; do diff --git a/sw/source/core/swg/SwXMLTextBlocks1.cxx b/sw/source/core/swg/SwXMLTextBlocks1.cxx index c0315483159d..867a98129381 100644 --- a/sw/source/core/swg/SwXMLTextBlocks1.cxx +++ b/sw/source/core/swg/SwXMLTextBlocks1.cxx @@ -64,7 +64,7 @@ ErrCode SwXMLTextBlocks::GetDoc( sal_uInt16 nIdx ) { xRoot = xBlkRoot->openStorageElement( aFolderName, embed::ElementModes::READ ); xMedium = new SfxMedium( xRoot, GetBaseURL(), OUString( "writer8" ) ); - SwReader aReader( *xMedium, aFolderName, m_pDoc ); + SwReader aReader( *xMedium, aFolderName, m_xDoc.get() ); ReadXML->SetBlockMode( true ); aReader.Read( *ReadXML ); ReadXML->SetBlockMode( false ); @@ -73,7 +73,7 @@ ErrCode SwXMLTextBlocks::GetDoc( sal_uInt16 nIdx ) OUString sObjReplacements( "ObjectReplacements" ); if ( xRoot->hasByName( sObjReplacements ) ) { - uno::Reference< document::XStorageBasedDocument > xDocStor( m_pDoc->GetDocShell()->GetModel(), uno::UNO_QUERY_THROW ); + uno::Reference< document::XStorageBasedDocument > xDocStor( m_xDoc->GetDocShell()->GetModel(), uno::UNO_QUERY_THROW ); uno::Reference< embed::XStorage > xStr( xDocStor->getDocumentStorage() ); if ( xStr.is() ) { @@ -513,7 +513,7 @@ ErrCode SwXMLTextBlocks::SetMacroTable( // Get model uno::Reference< lang::XComponent > xModelComp( - m_pDoc->GetDocShell()->GetModel(), UNO_QUERY ); + m_xDoc->GetDocShell()->GetModel(), UNO_QUERY ); OSL_ENSURE( xModelComp.is(), "XMLWriter::Write: got no model" ); if( !xModelComp.is() ) return ERR_SWG_WRITE_ERROR; diff --git a/sw/source/core/swg/swblocks.cxx b/sw/source/core/swg/swblocks.cxx index a0c3da4b8a04..079984ed9635 100644 --- a/sw/source/core/swg/swblocks.cxx +++ b/sw/source/core/swg/swblocks.cxx @@ -90,7 +90,7 @@ SwImpBlocks::SwImpBlocks( const OUString& rFile ) : m_aFile( rFile ), m_aDateModified( Date::EMPTY ), m_aTimeModified( tools::Time::EMPTY ), - m_pDoc( nullptr ), m_nCurrentIndex( USHRT_MAX ), + m_nCurrentIndex( USHRT_MAX ), m_bReadOnly( true ), m_bInPutMuchBlocks( false ), m_bInfoChanged(false) { @@ -111,7 +111,7 @@ SwImpBlocks::~SwImpBlocks() */ void SwImpBlocks::ClearDoc() { - m_pDoc->ClearDoc(); + m_xDoc->ClearDoc(); } /** @@ -119,7 +119,7 @@ void SwImpBlocks::ClearDoc() */ SwPaM* SwImpBlocks::MakePaM() { - SwPaM* pPam = new SwPaM( m_pDoc->GetNodes().GetEndOfContent() ); + SwPaM* pPam = new SwPaM( m_xDoc->GetNodes().GetEndOfContent() ); pPam->Move( fnMoveBackward, GoInDoc ); pPam->SetMark(); pPam->Move( fnMoveForward, GoInDoc ); @@ -512,7 +512,7 @@ sal_uInt16 SwTextBlocks::PutText( const OUString& rShort, const OUString& rName, SwDoc* SwTextBlocks::GetDoc() { if( pImp ) - return pImp->m_pDoc; + return pImp->m_xDoc.get(); return nullptr; } diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index af10689e027f..951f8e04da57 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -2060,7 +2060,7 @@ OutputDevice& SwViewShell::GetRefDev() const const SwNodes& SwViewShell::GetNodes() const { - return mpDoc->GetNodes(); + return mxDoc->GetNodes(); } void SwViewShell::DrawSelChanged() @@ -2133,7 +2133,7 @@ void SwViewShell::ImplApplyViewOptions( const SwViewOption &rOpt ) if( mpOpt->IsShowHiddenField() != rOpt.IsShowHiddenField() ) { - static_cast<SwHiddenTextFieldType*>(mpDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::HiddenText ))-> + static_cast<SwHiddenTextFieldType*>(mxDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::HiddenText ))-> SetHiddenFlag( !rOpt.IsShowHiddenField() ); bReformat = true; } @@ -2225,13 +2225,13 @@ void SwViewShell::ImplApplyViewOptions( const SwViewOption &rOpt ) *mpOpt = rOpt; // First the options are taken. mpOpt->SetUIOptions(rOpt); - mpDoc->GetDocumentSettingManager().set(DocumentSettingId::HTML_MODE, 0 != ::GetHtmlMode(mpDoc->GetDocShell())); + mxDoc->GetDocumentSettingManager().set(DocumentSettingId::HTML_MODE, 0 != ::GetHtmlMode(mxDoc->GetDocShell())); if( bBrowseModeChanged || bHideWhitespaceModeChanged ) { // #i44963# Good occasion to check if page sizes in // page descriptions are still set to (LONG_MAX, LONG_MAX) (html import) - mpDoc->CheckDefaultPageFormat(); + mxDoc->CheckDefaultPageFormat(); InvalidateLayout( true ); } @@ -2360,7 +2360,7 @@ uno::Reference< css::accessibility::XAccessible > SwViewShell::CreateAccessible( OSL_ENSURE( mpLayout, "no layout, no access" ); OSL_ENSURE( GetWin(), "no window, no access" ); - if( mpDoc->getIDocumentLayoutAccess().GetCurrentViewShell() && GetWin() ) + if( mxDoc->getIDocumentLayoutAccess().GetCurrentViewShell() && GetWin() ) xAcc = Imp()->GetAccessibleMap().GetDocumentView(); return xAcc; @@ -2556,36 +2556,36 @@ SwPostItMgr* SwViewShell::GetPostItMgr() /* * Document Interface Access */ -const IDocumentSettingAccess& SwViewShell::getIDocumentSettingAccess() const { return mpDoc->GetDocumentSettingManager(); } -IDocumentSettingAccess& SwViewShell::getIDocumentSettingAccess() { return mpDoc->GetDocumentSettingManager(); } -const IDocumentDeviceAccess& SwViewShell::getIDocumentDeviceAccess() const { return mpDoc->getIDocumentDeviceAccess(); } -IDocumentDeviceAccess& SwViewShell::getIDocumentDeviceAccess() { return mpDoc->getIDocumentDeviceAccess(); } -const IDocumentMarkAccess* SwViewShell::getIDocumentMarkAccess() const { return mpDoc->getIDocumentMarkAccess(); } -IDocumentMarkAccess* SwViewShell::getIDocumentMarkAccess() { return mpDoc->getIDocumentMarkAccess(); } -const IDocumentDrawModelAccess& SwViewShell::getIDocumentDrawModelAccess() const { return mpDoc->getIDocumentDrawModelAccess(); } -IDocumentDrawModelAccess& SwViewShell::getIDocumentDrawModelAccess() { return mpDoc->getIDocumentDrawModelAccess(); } -const IDocumentRedlineAccess& SwViewShell::getIDocumentRedlineAccess() const { return mpDoc->getIDocumentRedlineAccess(); } -IDocumentRedlineAccess& SwViewShell::getIDocumentRedlineAccess() { return mpDoc->getIDocumentRedlineAccess(); } -const IDocumentLayoutAccess& SwViewShell::getIDocumentLayoutAccess() const { return mpDoc->getIDocumentLayoutAccess(); } -IDocumentLayoutAccess& SwViewShell::getIDocumentLayoutAccess() { return mpDoc->getIDocumentLayoutAccess(); } -IDocumentContentOperations& SwViewShell::getIDocumentContentOperations() { return mpDoc->getIDocumentContentOperations(); } -IDocumentStylePoolAccess& SwViewShell::getIDocumentStylePoolAccess() { return mpDoc->getIDocumentStylePoolAccess(); } -const IDocumentStatistics& SwViewShell::getIDocumentStatistics() const { return mpDoc->getIDocumentStatistics(); } +const IDocumentSettingAccess& SwViewShell::getIDocumentSettingAccess() const { return mxDoc->GetDocumentSettingManager(); } +IDocumentSettingAccess& SwViewShell::getIDocumentSettingAccess() { return mxDoc->GetDocumentSettingManager(); } +const IDocumentDeviceAccess& SwViewShell::getIDocumentDeviceAccess() const { return mxDoc->getIDocumentDeviceAccess(); } +IDocumentDeviceAccess& SwViewShell::getIDocumentDeviceAccess() { return mxDoc->getIDocumentDeviceAccess(); } +const IDocumentMarkAccess* SwViewShell::getIDocumentMarkAccess() const { return mxDoc->getIDocumentMarkAccess(); } +IDocumentMarkAccess* SwViewShell::getIDocumentMarkAccess() { return mxDoc->getIDocumentMarkAccess(); } +const IDocumentDrawModelAccess& SwViewShell::getIDocumentDrawModelAccess() const { return mxDoc->getIDocumentDrawModelAccess(); } +IDocumentDrawModelAccess& SwViewShell::getIDocumentDrawModelAccess() { return mxDoc->getIDocumentDrawModelAccess(); } +const IDocumentRedlineAccess& SwViewShell::getIDocumentRedlineAccess() const { return mxDoc->getIDocumentRedlineAccess(); } +IDocumentRedlineAccess& SwViewShell::getIDocumentRedlineAccess() { return mxDoc->getIDocumentRedlineAccess(); } +const IDocumentLayoutAccess& SwViewShell::getIDocumentLayoutAccess() const { return mxDoc->getIDocumentLayoutAccess(); } +IDocumentLayoutAccess& SwViewShell::getIDocumentLayoutAccess() { return mxDoc->getIDocumentLayoutAccess(); } +IDocumentContentOperations& SwViewShell::getIDocumentContentOperations() { return mxDoc->getIDocumentContentOperations(); } +IDocumentStylePoolAccess& SwViewShell::getIDocumentStylePoolAccess() { return mxDoc->getIDocumentStylePoolAccess(); } +const IDocumentStatistics& SwViewShell::getIDocumentStatistics() const { return mxDoc->getIDocumentStatistics(); } IDocumentUndoRedo & SwViewShell::GetIDocumentUndoRedo() -{ return mpDoc->GetIDocumentUndoRedo(); } +{ return mxDoc->GetIDocumentUndoRedo(); } IDocumentUndoRedo const& SwViewShell::GetIDocumentUndoRedo() const -{ return mpDoc->GetIDocumentUndoRedo(); } +{ return mxDoc->GetIDocumentUndoRedo(); } // --> OD 2007-11-14 #i83479# const IDocumentListItems* SwViewShell::getIDocumentListItemsAccess() const { - return &mpDoc->getIDocumentListItems(); + return &mxDoc->getIDocumentListItems(); } const IDocumentOutlineNodes* SwViewShell::getIDocumentOutlineNodesAccess() const { - return &mpDoc->getIDocumentOutlineNodes(); + return &mxDoc->getIDocumentOutlineNodes(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx index c8755a246d39..2998ffb131f8 100644 --- a/sw/source/core/view/vnew.cxx +++ b/sw/source/core/view/vnew.cxx @@ -73,8 +73,8 @@ void SwViewShell::Init( const SwViewOption *pNewOpt ) } } - SwDocShell* pDShell = mpDoc->GetDocShell(); - mpDoc->GetDocumentSettingManager().set(DocumentSettingId::HTML_MODE, 0 != ::GetHtmlMode( pDShell ) ); + SwDocShell* pDShell = mxDoc->GetDocShell(); + mxDoc->GetDocumentSettingManager().set(DocumentSettingId::HTML_MODE, 0 != ::GetHtmlMode( pDShell ) ); // set readonly flag at ViewOptions before creating layout. Otherwise, // one would have to reformat again. @@ -96,7 +96,7 @@ void SwViewShell::Init( const SwViewOption *pNewOpt ) // page descriptions are still set to (LONG_MAX, LONG_MAX) (html import) if ( !bBrowseMode ) { - mpDoc->CheckDefaultPageFormat(); + mxDoc->CheckDefaultPageFormat(); } SAL_INFO( "sw.core", "View::Init - after InitPrt" ); @@ -121,9 +121,9 @@ void SwViewShell::Init( const SwViewOption *pNewOpt ) if( !mpLayout ) { // switched to two step construction because creating the layout in SwRootFrame needs a valid pLayout set - mpLayout = SwRootFramePtr(new SwRootFrame(mpDoc->GetDfltFrameFormat(), this), + mpLayout = SwRootFramePtr(new SwRootFrame(mxDoc->GetDfltFrameFormat(), this), &SwFrame::DestroyFrame); - mpLayout->Init( mpDoc->GetDfltFrameFormat() ); + mpLayout->Init( mxDoc->GetDfltFrameFormat() ); } } SizeChgNotify(); @@ -158,7 +158,7 @@ SwViewShell::SwViewShell( SwDoc& rDocument, vcl::Window *pWindow, mbHeaderFooterEdit( false ), mpTargetPaintWindow(nullptr), mpBufferedOut(nullptr), - mpDoc( &rDocument ), + mxDoc( &rDocument ), mnStartAction( 0 ), mnLockPaint( 0 ), mbSelectAll(false), @@ -177,8 +177,7 @@ SwViewShell::SwViewShell( SwDoc& rDocument, vcl::Window *pWindow, // i#38810 Do not reset modified state of document, // if it's already been modified. - const bool bIsDocModified( mpDoc->getIDocumentState().IsModified() ); - mpDoc->acquire(); + const bool bIsDocModified( mxDoc->getIDocumentState().IsModified() ); pOutput = mpOut; Init( pNewOpt ); // may change the Outdev (InitPrt()) mpOut = pOutput; @@ -193,14 +192,14 @@ SwViewShell::SwViewShell( SwDoc& rDocument, vcl::Window *pWindow, SET_CURR_SHELL( this ); - static_cast<SwHiddenTextFieldType*>(mpDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::HiddenText ))-> + static_cast<SwHiddenTextFieldType*>(mxDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::HiddenText ))-> SetHiddenFlag( !mpOpt->IsShowHiddenField() ); // In Init a standard FrameFormat is created. - if ( !mpDoc->GetIDocumentUndoRedo().IsUndoNoResetModified() + if ( !mxDoc->GetIDocumentUndoRedo().IsUndoNoResetModified() && !bIsDocModified ) { - mpDoc->getIDocumentState().ResetModified(); + mxDoc->getIDocumentState().ResetModified(); } // extend format cache. @@ -231,7 +230,7 @@ SwViewShell::SwViewShell( SwViewShell& rShell, vcl::Window *pWindow, mbHeaderFooterEdit( false ), mpTargetPaintWindow(nullptr), mpBufferedOut(nullptr), - mpDoc( rShell.GetDoc() ), + mxDoc( rShell.GetDoc() ), mnStartAction( 0 ), mnLockPaint( 0 ), mbSelectAll(false), @@ -253,8 +252,7 @@ SwViewShell::SwViewShell( SwViewShell& rShell, vcl::Window *pWindow, SET_CURR_SHELL( this ); - mpDoc->acquire(); - bool bModified = mpDoc->getIDocumentState().IsModified(); + bool bModified = mxDoc->getIDocumentState().IsModified(); pOutput = mpOut; Init( rShell.GetViewOptions() ); // might change Outdev (InitPrt()) @@ -263,13 +261,13 @@ SwViewShell::SwViewShell( SwViewShell& rShell, vcl::Window *pWindow, if ( mbPreview ) mpImp->InitPagePreviewLayout(); - static_cast<SwHiddenTextFieldType*>(mpDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::HiddenText ))-> + static_cast<SwHiddenTextFieldType*>(mxDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::HiddenText ))-> SetHiddenFlag( !mpOpt->IsShowHiddenField() ); // In Init a standard FrameFormat is created. - if( !bModified && !mpDoc->GetIDocumentUndoRedo().IsUndoNoResetModified() ) + if( !bModified && !mxDoc->GetIDocumentUndoRedo().IsUndoNoResetModified() ) { - mpDoc->getIDocumentState().ResetModified(); + mxDoc->getIDocumentState().ResetModified(); } // extend format cache. @@ -284,6 +282,8 @@ SwViewShell::SwViewShell( SwViewShell& rShell, vcl::Window *pWindow, SwViewShell::~SwViewShell() { + IDocumentLayoutAccess * const pLayoutAccess = mxDoc.get() ? &mxDoc->getIDocumentLayoutAccess() : nullptr; + { SET_CURR_SHELL( this ); mbPaintWorks = false; @@ -291,9 +291,9 @@ SwViewShell::~SwViewShell() // i#9684 Stopping the animated graphics is not // necessary during printing or pdf export, because the animation // has not been started in this case. - if( mpDoc && GetWin() ) + if( mxDoc.get() && GetWin() ) { - SwNodes& rNds = mpDoc->GetNodes(); + SwNodes& rNds = mxDoc->GetNodes(); SwStartNode *pStNd; SwNodeIndex aIdx( *rNds.GetEndOfAutotext().StartOfSectionNode(), 1 ); @@ -322,14 +322,11 @@ SwViewShell::~SwViewShell() delete mpImp; // Delete first, so that the LayoutViews are destroyed. mpImp = nullptr; // Set to zero, because ~SwFrame relies on it. - if ( mpDoc ) + if ( mxDoc.get() ) { - if( !mpDoc->release() ) - { - delete mpDoc; - mpDoc = nullptr; - } - else + auto x = mxDoc->getReferenceCount(); + mxDoc.clear(); + if( x > 1 ) GetLayout()->ResetNewLayout(); } @@ -345,18 +342,17 @@ SwViewShell::~SwViewShell() OSL_ENSURE( !mnStartAction, "EndAction() pending." ); } - if ( mpDoc ) + if ( pLayoutAccess ) { GetLayout()->DeRegisterShell( this ); - auto& rLayoutAccess(mpDoc->getIDocumentLayoutAccess()); - if(rLayoutAccess.GetCurrentViewShell()==this) + if(pLayoutAccess->GetCurrentViewShell()==this) { - rLayoutAccess.SetCurrentViewShell(nullptr); + pLayoutAccess->SetCurrentViewShell(nullptr); for(SwViewShell& rShell : GetRingContainer()) { if(&rShell != this) { - rLayoutAccess.SetCurrentViewShell(&rShell); + pLayoutAccess->SetCurrentViewShell(&rShell); break; } } diff --git a/sw/source/core/view/vprint.cxx b/sw/source/core/view/vprint.cxx index 73dead50d7c1..06163ce864cf 100644 --- a/sw/source/core/view/vprint.cxx +++ b/sw/source/core/view/vprint.cxx @@ -625,10 +625,10 @@ void SwViewShell::PrtOle2( SwDoc *pDoc, const SwViewOption *pOpt, const SwPrintD bool SwViewShell::IsAnyFieldInDoc() const { const SfxPoolItem* pItem; - sal_uInt32 nMaxItems = mpDoc->GetAttrPool().GetItemCount2( RES_TXTATR_FIELD ); + sal_uInt32 nMaxItems = mxDoc->GetAttrPool().GetItemCount2( RES_TXTATR_FIELD ); for( sal_uInt32 n = 0; n < nMaxItems; ++n ) { - if( nullptr != (pItem = mpDoc->GetAttrPool().GetItem2( RES_TXTATR_FIELD, n ))) + if( nullptr != (pItem = mxDoc->GetAttrPool().GetItem2( RES_TXTATR_FIELD, n ))) { const SwFormatField* pFormatField = static_cast<const SwFormatField*>(pItem); const SwTextField* pTextField = pFormatField->GetTextField(); @@ -639,10 +639,10 @@ bool SwViewShell::IsAnyFieldInDoc() const } } - nMaxItems = mpDoc->GetAttrPool().GetItemCount2( RES_TXTATR_INPUTFIELD ); + nMaxItems = mxDoc->GetAttrPool().GetItemCount2( RES_TXTATR_INPUTFIELD ); for( sal_uInt32 n = 0; n < nMaxItems; ++n ) { - if( nullptr != (pItem = mpDoc->GetAttrPool().GetItem2( RES_TXTATR_INPUTFIELD, n ))) + if( nullptr != (pItem = mxDoc->GetAttrPool().GetItem2( RES_TXTATR_INPUTFIELD, n ))) { const SwFormatField* pFormatField = static_cast<const SwFormatField*>(pItem); const SwTextField* pTextField = pFormatField->GetTextField(); diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index 2c947e3db384..94e5ba298b4e 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -211,7 +211,7 @@ ErrCode HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, co } // so nobody steals the document! - rDoc.acquire(); + rtl::Reference<SwDoc> aHoldRef(&rDoc); ErrCode nRet = ERRCODE_NONE; tools::SvRef<SwHTMLParser> xParser = new SwHTMLParser( &rDoc, rPam, *pStrm, rName, rBaseURL, !bInsertMode, pMedium, diff --git a/sw/source/filter/xml/swxml.cxx b/sw/source/filter/xml/swxml.cxx index bd37e18b2634..bb42dffa51e6 100644 --- a/sw/source/filter/xml/swxml.cxx +++ b/sw/source/filter/xml/swxml.cxx @@ -739,7 +739,7 @@ ErrCode XMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, con } } - (void)rDoc.acquire(); // prevent deletion + rtl::Reference<SwDoc> aHoldRef(&rDoc); // prevent deletion ErrCode nRet = ERRCODE_NONE; // save redline mode into import info property set @@ -894,7 +894,7 @@ ErrCode XMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, con if( pObjectHelper ) SvXMLEmbeddedObjectHelper::Destroy( pObjectHelper ); xObjectResolver = nullptr; - (void)rDoc.release(); + aHoldRef.clear(); if ( !bOASIS ) { diff --git a/sw/source/uibase/app/docsh.cxx b/sw/source/uibase/app/docsh.cxx index 82c3c8390f35..61ea3efbc2d9 100644 --- a/sw/source/uibase/app/docsh.cxx +++ b/sw/source/uibase/app/docsh.cxx @@ -192,7 +192,7 @@ Reader* SwDocShell::StartConvertFrom(SfxMedium& rMedium, SwReader** ppRdr, *ppRdr = pPaM ? new SwReader( rMedium, aFileName, *pPaM ) : pCursorShell ? new SwReader( rMedium, aFileName, *pCursorShell->GetCursor() ) - : new SwReader( rMedium, aFileName, m_pDoc ); + : new SwReader( rMedium, aFileName, m_xDoc.get() ); } else return nullptr; @@ -230,7 +230,7 @@ bool SwDocShell::ConvertFrom( SfxMedium& rMedium ) return false; // #129881# return if no reader is found tools::SvRef<SotStorage> pStg=pRead->getSotStorageRef(); // #i45333# save sot storage ref in case of recursive calls - m_pDoc->setDocAccTitle(OUString()); + m_xDoc->setDocAccTitle(OUString()); SfxViewFrame* pFrame1 = SfxViewFrame::GetFirst( this ); if (pFrame1) { @@ -253,24 +253,24 @@ bool SwDocShell::ConvertFrom( SfxMedium& rMedium ) pRdr->GetDoc()->getIDocumentSettingAccess().set(DocumentSettingId::HTML_MODE, dynamic_cast< const SwWebDocShell *>( this ) != nullptr); // Restore the pool default if reading a saved document. - m_pDoc->RemoveAllFormatLanguageDependencies(); + m_xDoc->RemoveAllFormatLanguageDependencies(); ErrCode nErr = pRdr->Read( *pRead ); // Maybe put away one old Doc - if (m_pDoc != pRdr->GetDoc()) + if (m_xDoc.get() != pRdr->GetDoc()) { RemoveLink(); - m_pDoc = pRdr->GetDoc(); + m_xDoc = pRdr->GetDoc(); AddLink(); if (!m_xBasePool.is()) - m_xBasePool = new SwDocStyleSheetPool( *m_pDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); + m_xBasePool = new SwDocStyleSheetPool( *m_xDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); } UpdateFontList(); - InitDrawModelAndDocShell(this, m_pDoc ? m_pDoc->getIDocumentDrawModelAccess().GetDrawModel() : nullptr); + InitDrawModelAndDocShell(this, m_xDoc ? m_xDoc->getIDocumentDrawModelAccess().GetDrawModel() : nullptr); delete pRdr; @@ -279,7 +279,7 @@ bool SwDocShell::ConvertFrom( SfxMedium& rMedium ) SetError(nErr); bool bOk = !nErr.IsError(); - if (bOk && !m_pDoc->IsInLoadAsynchron()) + if (bOk && !m_xDoc->IsInLoadAsynchron()) { LoadingFinished(); } @@ -300,11 +300,11 @@ bool SwDocShell::Save() CalcLayoutForOLEObjects(); // format for OLE objects // #i62875# // reset compatibility flag <DoNotCaptureDrawObjsOnPage>, if possible - if (m_pWrtShell && m_pDoc && - m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && - docfunc::AllDrawObjsOnPage(*m_pDoc)) + if (m_pWrtShell && m_xDoc.get() && + m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && + docfunc::AllDrawObjsOnPage(*m_xDoc)) { - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false); + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false); } ErrCode nErr = ERR_SWG_WRITE_ERROR, nVBWarning = ERRCODE_NONE; @@ -321,7 +321,7 @@ bool SwDocShell::Save() WriterRef xWrt; ::GetXMLWriter( aEmptyOUStr, GetMedium()->GetBaseURL( true ), xWrt ); xWrt->SetOrganizerMode( true ); - SwWriter aWrt( *GetMedium(), *m_pDoc ); + SwWriter aWrt( *GetMedium(), *m_xDoc ); nErr = aWrt.Write( xWrt ); xWrt->SetOrganizerMode( false ); } @@ -335,11 +335,11 @@ bool SwDocShell::Save() case SfxObjectCreateMode::STANDARD: default: { - if (m_pDoc->ContainsMSVBasic()) + if (m_xDoc->ContainsMSVBasic()) { if( SvtFilterOptions::Get().IsLoadWordBasicStorage() ) nVBWarning = GetSaveWarningOfMSVBAStorage( static_cast<SfxObjectShell&>(*this) ); - m_pDoc->SetContainsMSVBasic( false ); + m_xDoc->SetContainsMSVBasic( false ); } // End TableBox Edit! @@ -356,7 +356,7 @@ bool SwDocShell::Save() m_pWrtShell->LockView( true ); //lock visible section } - SwWriter aWrt( *GetMedium(), *m_pDoc ); + SwWriter aWrt( *GetMedium(), *m_xDoc ); nErr = aWrt.Write( xWrt ); if (m_pWrtShell) @@ -393,8 +393,8 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) m_pView->GetPostItMgr()->UpdateDataOnActiveSidebarWin(); } - if (m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT) && - !m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT_SAVE_LINKS)) + if (m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT) && + !m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT_SAVE_LINKS)) RemoveOLEObjects(); { @@ -420,7 +420,7 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) CalcLayoutForOLEObjects(); // format for OLE objects bool bURLChanged = !GetMedium() || GetMedium()->GetURLObject() != rMedium.GetURLObject(); - if (!m_pDoc->GetDBManager()->getEmbeddedName().isEmpty() && bURLChanged) + if (!m_xDoc->GetDBManager()->getEmbeddedName().isEmpty() && bURLChanged) { // We have an embedded data source definition, need to re-store it, // otherwise relative references will break when the new file is in a @@ -430,20 +430,20 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) const INetURLObject& rOldURLObject = GetMedium()->GetURLObject(); OUString aURL = "vnd.sun.star.pkg://"; aURL += INetURLObject::encode(rOldURLObject.GetMainURL(INetURLObject::DecodeMechanism::WithCharset), INetURLObject::PART_AUTHORITY, INetURLObject::EncodeMechanism::All); - aURL += "/" + INetURLObject::encode(m_pDoc->GetDBManager()->getEmbeddedName(), INetURLObject::PART_FPATH, INetURLObject::EncodeMechanism::All); + aURL += "/" + INetURLObject::encode(m_xDoc->GetDBManager()->getEmbeddedName(), INetURLObject::PART_FPATH, INetURLObject::EncodeMechanism::All); uno::Reference<sdb::XDocumentDataSource> xDataSource(xDatabaseContext->getByName(aURL), uno::UNO_QUERY); uno::Reference<frame::XStorable> xStorable(xDataSource->getDatabaseDocument(), uno::UNO_QUERY); - SwDBManager::StoreEmbeddedDataSource(xStorable, rMedium.GetOutputStorage(), m_pDoc->GetDBManager()->getEmbeddedName(), rMedium.GetName()); + SwDBManager::StoreEmbeddedDataSource(xStorable, rMedium.GetOutputStorage(), m_xDoc->GetDBManager()->getEmbeddedName(), rMedium.GetName()); } // #i62875# // reset compatibility flag <DoNotCaptureDrawObjsOnPage>, if possible if (m_pWrtShell && - m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && - docfunc::AllDrawObjsOnPage(*m_pDoc)) + m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && + docfunc::AllDrawObjsOnPage(*m_xDoc)) { - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false); + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false); } ErrCode nErr = ERR_SWG_WRITE_ERROR, nVBWarning = ERRCODE_NONE; @@ -460,11 +460,11 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) xDocSh->DoClose(); } - if (m_pDoc->ContainsMSVBasic()) + if (m_xDoc->ContainsMSVBasic()) { if( SvtFilterOptions::Get().IsLoadWordBasicStorage() ) nVBWarning = GetSaveWarningOfMSVBAStorage( static_cast<SfxObjectShell&>(*this) ); - m_pDoc->SetContainsMSVBasic( false ); + m_xDoc->SetContainsMSVBasic( false ); } // End TableBox Edit! @@ -473,10 +473,10 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) // Remember and preserve Modified-Flag without calling the Link // (for OLE; after Statement from MM) - const bool bIsModified = m_pDoc->getIDocumentState().IsModified(); - m_pDoc->GetIDocumentUndoRedo().LockUndoNoModifiedPosition(); - Link<bool,void> aOldOLELnk( m_pDoc->GetOle2Link() ); - m_pDoc->SetOle2Link( Link<bool,void>() ); + const bool bIsModified = m_xDoc->getIDocumentState().IsModified(); + m_xDoc->GetIDocumentUndoRedo().LockUndoNoModifiedPosition(); + Link<bool,void> aOldOLELnk( m_xDoc->GetOle2Link() ); + m_xDoc->SetOle2Link( Link<bool,void>() ); // Suppress SfxProgress when we are Embedded SW_MOD()->SetEmbeddedLoadSave( @@ -492,7 +492,7 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) m_pWrtShell->LockView( true ); //lock visible section } - SwWriter aWrt( rMedium, *m_pDoc ); + SwWriter aWrt( rMedium, *m_xDoc ); nErr = aWrt.Write( xWrt ); if (m_pWrtShell) @@ -500,17 +500,17 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium ) if( bIsModified ) { - m_pDoc->getIDocumentState().SetModified(); - m_pDoc->GetIDocumentUndoRedo().UnLockUndoNoModifiedPosition(); + m_xDoc->getIDocumentState().SetModified(); + m_xDoc->GetIDocumentUndoRedo().UnLockUndoNoModifiedPosition(); } - m_pDoc->SetOle2Link( aOldOLELnk ); + m_xDoc->SetOle2Link( aOldOLELnk ); SW_MOD()->SetEmbeddedLoadSave( false ); // Increase RSID - m_pDoc->setRsid( m_pDoc->getRsid() ); + m_xDoc->setRsid( m_xDoc->getRsid() ); - m_pDoc->cleanupUnoCursorTable(); + m_xDoc->cleanupUnoCursorTable(); } SetError(nErr ? nErr : nVBWarning); @@ -554,7 +554,7 @@ bool SwDocShell::ConvertTo( SfxMedium& rMedium ) ErrCode nVBWarning = ERRCODE_NONE; - if (m_pDoc->ContainsMSVBasic()) + if (m_xDoc->ContainsMSVBasic()) { bool bSave = pFlt->GetUserData() == "CWW8" && SvtFilterOptions::Get().IsLoadWordBasicStorage(); @@ -567,7 +567,7 @@ bool SwDocShell::ConvertTo( SfxMedium& rMedium ) { nVBWarning = SaveOrDelMSVBAStorage( static_cast<SfxObjectShell&>(*this), *xStg, bSave, "Macros" ); xStg->Commit(); - m_pDoc->SetContainsMSVBasic( true ); + m_xDoc->SetContainsMSVBasic( true ); } } } @@ -606,16 +606,16 @@ bool SwDocShell::ConvertTo( SfxMedium& rMedium ) // #i76360# Update document statistics if ( !rMedium.IsSkipImages() ) - m_pDoc->getIDocumentStatistics().UpdateDocStat( false, true ); + m_xDoc->getIDocumentStatistics().UpdateDocStat( false, true ); CalcLayoutForOLEObjects(); // format for OLE objects // #i62875# // reset compatibility flag <DoNotCaptureDrawObjsOnPage>, if possible if (m_pWrtShell && - m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && - docfunc::AllDrawObjsOnPage(*m_pDoc)) + m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE) && + docfunc::AllDrawObjsOnPage(*m_xDoc)) { - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false); + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false); } if( xWriter->IsStgWriter() && @@ -745,7 +745,7 @@ bool SwDocShell::ConvertTo( SfxMedium& rMedium ) } else { - SwWriter aWrt( rMedium, *m_pDoc ); + SwWriter aWrt( rMedium, *m_xDoc ); nErrno = aWrt.Write( xWriter, &aFileName ); } } @@ -767,9 +767,9 @@ bool SwDocShell::SaveCompleted( const uno::Reference < embed::XStorage >& xStor { // Do not decide until here, whether Saving was successful or not if( IsModified() ) - m_pDoc->getIDocumentState().SetModified(); + m_xDoc->getIDocumentState().SetModified(); else - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); } if (m_pOLEChildList) @@ -810,10 +810,10 @@ void SwDocShell::Draw( OutputDevice* pDev, const JobSetup& rSetup, JobSetup *pOrig = nullptr; if ( !rSetup.GetPrinterName().isEmpty() && ASPECT_THUMBNAIL != nAspect ) { - pOrig = const_cast<JobSetup*>(m_pDoc->getIDocumentDeviceAccess().getJobsetup()); + pOrig = const_cast<JobSetup*>(m_xDoc->getIDocumentDeviceAccess().getJobsetup()); if( pOrig ) // then we copy that pOrig = new JobSetup( *pOrig ); - m_pDoc->getIDocumentDeviceAccess().setJobsetup( rSetup ); + m_xDoc->getIDocumentDeviceAccess().setJobsetup( rSetup ); } tools::Rectangle aRect( nAspect == ASPECT_THUMBNAIL ? @@ -825,12 +825,12 @@ void SwDocShell::Draw( OutputDevice* pDev, const JobSetup& rSetup, pDev->SetBackground(); const bool bWeb = dynamic_cast< const SwWebDocShell *>( this ) != nullptr; SwPrintData aOpts; - SwViewShell::PrtOle2(m_pDoc, SW_MOD()->GetUsrPref(bWeb), aOpts, *pDev, aRect); + SwViewShell::PrtOle2(m_xDoc.get(), SW_MOD()->GetUsrPref(bWeb), aOpts, *pDev, aRect); pDev->Pop(); if( pOrig ) { - m_pDoc->getIDocumentDeviceAccess().setJobsetup( *pOrig ); + m_xDoc->getIDocumentDeviceAccess().setJobsetup( *pOrig ); delete pOrig; } if ( bResetModified ) @@ -866,8 +866,8 @@ tools::Rectangle SwDocShell::GetVisArea( sal_uInt16 nAspect ) const if ( nAspect == ASPECT_THUMBNAIL ) { // Preview: set VisArea to the first page. - SwNodeIndex aIdx( m_pDoc->GetNodes().GetEndOfExtras(), 1 ); - SwContentNode* pNd = m_pDoc->GetNodes().GoNext( &aIdx ); + SwNodeIndex aIdx( m_xDoc->GetNodes().GetEndOfExtras(), 1 ); + SwContentNode* pNd = m_xDoc->GetNodes().GoNext( &aIdx ); const SwRect aPageRect = pNd->FindPageFrameRect(); tools::Rectangle aRect(aPageRect.SVRect()); @@ -886,12 +886,12 @@ tools::Rectangle SwDocShell::GetVisArea( sal_uInt16 nAspect ) const Printer *SwDocShell::GetDocumentPrinter() { - return m_pDoc->getIDocumentDeviceAccess().getPrinter( false ); + return m_xDoc->getIDocumentDeviceAccess().getPrinter( false ); } OutputDevice* SwDocShell::GetDocumentRefDev() { - return m_pDoc->getIDocumentDeviceAccess().getReferenceDevice( false ); + return m_xDoc->getIDocumentDeviceAccess().getReferenceDevice( false ); } void SwDocShell::OnDocumentPrinterChanged( Printer * pNewPrinter ) @@ -1029,7 +1029,7 @@ void SwDocShell::GetState(SfxItemSet& rSet) case SID_ATTR_YEAR2000: { - const SvNumberFormatter* pFormatr = m_pDoc->GetNumberFormatter(false); + const SvNumberFormatter* pFormatr = m_xDoc->GetNumberFormatter(false); rSet.Put( SfxUInt16Item( nWhich, static_cast< sal_uInt16 >( pFormatr ? pFormatr->GetYear2000() @@ -1044,8 +1044,8 @@ void SwDocShell::GetState(SfxItemSet& rSet) case SID_MAIL_PREPAREEXPORT: { //check if linked content or possibly hidden content is available - //m_pDoc->UpdateFields( NULL, false ); - sfx2::LinkManager& rLnkMgr = m_pDoc->getIDocumentLinksAdministration().GetLinkManager(); + //m_xDoc->UpdateFields( NULL, false ); + sfx2::LinkManager& rLnkMgr = m_xDoc->getIDocumentLinksAdministration().GetLinkManager(); const ::sfx2::SvBaseLinks& rLnks = rLnkMgr.GetLinks(); bool bRet = false; if( !rLnks.empty() ) @@ -1053,7 +1053,7 @@ void SwDocShell::GetState(SfxItemSet& rSet) else { //sections with hidden flag, hidden character attribute, hidden paragraph/text or conditional text fields - bRet = m_pDoc->HasInvisibleContent(); + bRet = m_xDoc->HasInvisibleContent(); } rSet.Put( SfxBoolItem( nWhich, bRet ) ); } @@ -1126,7 +1126,7 @@ void SwDocShell::LoadingFinished() // enables the document modification again. // Thus, manual modify the document, if it's modified and its links are updated // before <FinishedLoading(..)> is called. - const bool bHasDocToStayModified( m_pDoc->getIDocumentState().IsModified() && m_pDoc->getIDocumentLinksAdministration().LinksUpdated() ); + const bool bHasDocToStayModified( m_xDoc->getIDocumentState().IsModified() && m_xDoc->getIDocumentLinksAdministration().LinksUpdated() ); FinishedLoading(); SfxViewFrame* pVFrame = SfxViewFrame::GetFirst(this); @@ -1138,9 +1138,9 @@ void SwDocShell::LoadingFinished() } // #i38810# - if ( bHasDocToStayModified && !m_pDoc->getIDocumentState().IsModified() ) + if ( bHasDocToStayModified && !m_xDoc->getIDocumentState().IsModified() ) { - m_pDoc->getIDocumentState().SetModified(); + m_xDoc->getIDocumentState().SetModified(); } } @@ -1162,7 +1162,7 @@ void SwDocShell::SetFormatSpecificCompatibilityOptions( const OUString& rFilterT void SwDocShell::CancelTransfers() { // Cancel all links from LinkManager - m_pDoc->getIDocumentLinksAdministration().GetLinkManager().CancelTransfers(); + m_xDoc->getIDocumentLinksAdministration().GetLinkManager().CancelTransfers(); SfxObjectShell::CancelTransfers(); } @@ -1178,7 +1178,7 @@ SwFEShell* SwDocShell::GetFEShell() void SwDocShell::RemoveOLEObjects() { - SwIterator<SwContentNode,SwFormatColl> aIter( *m_pDoc->GetDfltGrfFormatColl() ); + SwIterator<SwContentNode,SwFormatColl> aIter( *m_xDoc->GetDfltGrfFormatColl() ); for( SwContentNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) { SwOLENode* pOLENd = pNd->GetOLENode(); @@ -1206,7 +1206,7 @@ void SwDocShell::CalcLayoutForOLEObjects() if (!m_pWrtShell) return; - SwIterator<SwContentNode,SwFormatColl> aIter( *m_pDoc->GetDfltGrfFormatColl() ); + SwIterator<SwContentNode,SwFormatColl> aIter( *m_xDoc->GetDfltGrfFormatColl() ); for( SwContentNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) { SwOLENode* pOLENd = pNd->GetOLENode(); @@ -1278,7 +1278,7 @@ OUString SwDocShell::GetEventName( sal_Int32 nIndex ) const ::sfx2::IXmlIdRegistry* SwDocShell::GetXmlIdRegistry() const { - return m_pDoc ? &m_pDoc->GetXmlIdRegistry() : nullptr; + return m_xDoc.get() ? &m_xDoc->GetXmlIdRegistry() : nullptr; } bool SwDocShell::IsChangeRecording() const diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx index 3deb35e4690d..9e3f51b03c0f 100644 --- a/sw/source/uibase/app/docsh2.cxx +++ b/sw/source/uibase/app/docsh2.cxx @@ -195,7 +195,7 @@ void SwDocShell::ToggleLayoutMode(SwView* pView) // update text fields on document properties changes void SwDocShell::DoFlushDocInfo() { - if (!m_pDoc) return; + if (!m_xDoc.get()) return; bool bUnlockView(true); if (m_pWrtShell) @@ -205,7 +205,7 @@ void SwDocShell::DoFlushDocInfo() m_pWrtShell->StartAllAction(); } - m_pDoc->getIDocumentStatistics().DocInfoChgd(IsEnableSetModified()); + m_xDoc->getIDocumentStatistics().DocInfoChgd(IsEnableSetModified()); if (m_pWrtShell) { @@ -239,13 +239,13 @@ static void lcl_processCompatibleSfxHint( const uno::Reference< script::vba::XVB // Notification on DocInfo changes void SwDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) { - if (!m_pDoc) + if (!m_xDoc.get()) { return ; } uno::Reference< script::vba::XVBAEventProcessor > const xVbaEvents = - m_pDoc->GetVbaEventProcessor(); + m_xDoc->GetVbaEventProcessor(); if( xVbaEvents.is() ) lcl_processCompatibleSfxHint( xVbaEvents, rHint ); @@ -278,7 +278,7 @@ void SwDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) switch( nAction ) { case 2: - m_pDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::Filename )->UpdateFields(); + m_xDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::Filename )->UpdateFields(); break; // #i38126# - own action for event LOADFINISHED // in order to avoid a modified document. @@ -291,14 +291,14 @@ void SwDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) if ( bResetModified ) EnableSetModified( false ); // #i41679# - const bool bIsDocModified = m_pDoc->getIDocumentState().IsModified(); + const bool bIsDocModified = m_xDoc->getIDocumentState().IsModified(); // TODO: is the ResetModified() below because of only the direct call from DocInfoChgd, or does UpdateFields() set it too? - m_pDoc->getIDocumentStatistics().DocInfoChgd(false); + m_xDoc->getIDocumentStatistics().DocInfoChgd(false); // #i41679# if ( !bIsDocModified ) - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); if ( bResetModified ) EnableSetModified(); } @@ -322,10 +322,10 @@ bool SwDocShell::PrepareClose( bool bUI ) if( bRet ) EndListening( *this ); - if (m_pDoc && IsInPrepareClose()) + if (m_xDoc && IsInPrepareClose()) { uno::Reference< script::vba::XVBAEventProcessor > const xVbaEvents = - m_pDoc->GetVbaEventProcessor(); + m_xDoc->GetVbaEventProcessor(); if( xVbaEvents.is() ) { using namespace com::sun::star::script::vba::VBAEventId; @@ -709,7 +709,7 @@ void SwDocShell::Execute(SfxRequest& rReq) xDocSh->DoInitNew(); bool bImpress = FN_ABSTRACT_STARIMPRESS == nWhich; - m_pDoc->Summary( pSmryDoc, nLevel, nPara, bImpress ); + m_xDoc->Summary( pSmryDoc, nLevel, nPara, bImpress ); if( bImpress ) { WriterRef xWrt; @@ -835,12 +835,12 @@ void SwDocShell::Execute(SfxRequest& rReq) //pWrtShell is not set in page preview if (m_pWrtShell) m_pWrtShell->StartAllAction(); - m_pDoc->getIDocumentFieldsAccess().UpdateFields( false ); - m_pDoc->getIDocumentLinksAdministration().EmbedAllLinks(); + m_xDoc->getIDocumentFieldsAccess().UpdateFields( false ); + m_xDoc->getIDocumentLinksAdministration().EmbedAllLinks(); m_IsRemovedInvisibleContent = officecfg::Office::Security::HiddenContent::RemoveHiddenContent::get(); if (m_IsRemovedInvisibleContent) - m_pDoc->RemoveInvisibleContent(); + m_xDoc->RemoveInvisibleContent(); if (m_pWrtShell) m_pWrtShell->EndAllAction(); } @@ -852,7 +852,7 @@ void SwDocShell::Execute(SfxRequest& rReq) m_pWrtShell->StartAllAction(); //try to undo the removal of invisible content if (m_IsRemovedInvisibleContent) - m_pDoc->RestoreInvisibleContent(); + m_xDoc->RestoreInvisibleContent(); if (m_pWrtShell) m_pWrtShell->EndAllAction(); } @@ -962,7 +962,7 @@ void SwDocShell::Execute(SfxRequest& rReq) uno::Reference<XFilePickerControlAccess> xCtrlAcc(xFP, UNO_QUERY); bool bOutline[MAXLEVEL] = {false}; - const SwOutlineNodes& rOutlNds = m_pDoc->GetNodes().GetOutLineNds(); + const SwOutlineNodes& rOutlNds = m_xDoc->GetNodes().GetOutLineNds(); if( !rOutlNds.empty() ) { for( size_t n = 0; n < rOutlNds.size(); ++n ) @@ -975,7 +975,7 @@ void SwDocShell::Execute(SfxRequest& rReq) } } - const sal_uInt16 nStyleCount = m_pDoc->GetTextFormatColls()->size(); + const sal_uInt16 nStyleCount = m_xDoc->GetTextFormatColls()->size(); Sequence<OUString> aListBoxEntries( MAXLEVEL + nStyleCount); OUString* pEntries = aListBoxEntries.getArray(); sal_Int32 nIdx = 0 ; @@ -990,7 +990,7 @@ void SwDocShell::Execute(SfxRequest& rReq) OUString sStyle( SwResId(STR_FDLG_STYLE) ); for(sal_uInt16 i = 0; i < nStyleCount; ++i) { - SwTextFormatColl &rTextColl = *(*m_pDoc->GetTextFormatColls())[ i ]; + SwTextFormatColl &rTextColl = *(*m_xDoc->GetTextFormatColls())[ i ]; if( !rTextColl.IsDefault() && rTextColl.IsAtDocNodeSet() ) { pEntries[nIdx++] = sStyle + rTextColl.GetName(); @@ -1060,17 +1060,17 @@ void SwDocShell::Execute(SfxRequest& rReq) if ( bCreateByOutlineLevel ) { bDone = bCreateHtml - ? m_pDoc->GenerateHTMLDoc( aFileName, nTemplateOutlineLevel ) - : m_pDoc->GenerateGlobalDoc( aFileName, nTemplateOutlineLevel ); + ? m_xDoc->GenerateHTMLDoc( aFileName, nTemplateOutlineLevel ) + : m_xDoc->GenerateGlobalDoc( aFileName, nTemplateOutlineLevel ); } else { const SwTextFormatColl* pSplitColl = nullptr; if ( !aTemplateName.isEmpty() ) - pSplitColl = m_pDoc->FindTextFormatCollByName(aTemplateName); + pSplitColl = m_xDoc->FindTextFormatCollByName(aTemplateName); bDone = bCreateHtml - ? m_pDoc->GenerateHTMLDoc( aFileName, pSplitColl ) - : m_pDoc->GenerateGlobalDoc( aFileName, pSplitColl ); + ? m_xDoc->GenerateHTMLDoc( aFileName, pSplitColl ) + : m_xDoc->GenerateGlobalDoc( aFileName, pSplitColl ); } if( bDone ) { @@ -1126,7 +1126,7 @@ void SwDocShell::Execute(SfxRequest& rReq) pViewShell = pVFrame ? pVFrame->GetViewShell() : nullptr; pCurrView = dynamic_cast<SwView*>( pViewShell ); } - m_pDoc->GetNumberFormatter()->SetYear2000(nYear2K); + m_xDoc->GetNumberFormatter()->SetYear2000(nYear2K); } break; case FN_OPEN_FILE: @@ -1250,27 +1250,27 @@ void SwDocShell::Execute(SfxRequest& rReq) bool SwDocShell::DdeGetData( const OUString& rItem, const OUString& rMimeType, uno::Any & rValue ) { - return m_pDoc->getIDocumentLinksAdministration().GetData( rItem, rMimeType, rValue ); + return m_xDoc->getIDocumentLinksAdministration().GetData( rItem, rMimeType, rValue ); } bool SwDocShell::DdeSetData( const OUString& rItem, const OUString& rMimeType, const uno::Any & rValue ) { - return m_pDoc->getIDocumentLinksAdministration().SetData( rItem, rMimeType, rValue ); + return m_xDoc->getIDocumentLinksAdministration().SetData( rItem, rMimeType, rValue ); } #endif ::sfx2::SvLinkSource* SwDocShell::DdeCreateLinkSource( const OUString& rItem ) { - return m_pDoc->getIDocumentLinksAdministration().CreateLinkSource( rItem ); + return m_xDoc->getIDocumentLinksAdministration().CreateLinkSource( rItem ); } void SwDocShell::ReconnectDdeLink(SfxObjectShell& rServer) { - if (m_pDoc) + if (m_xDoc) { - ::sfx2::LinkManager& rLinkManager = m_pDoc->getIDocumentLinksAdministration().GetLinkManager(); + ::sfx2::LinkManager& rLinkManager = m_xDoc->getIDocumentLinksAdministration().GetLinkManager(); rLinkManager.ReconnectDdeLink(rServer); } } @@ -1297,7 +1297,7 @@ void SwDocShell::FillClass( SvGlobalName * pClassName, } // #FIXME check with new Event handling #if 0 - uno::Reference< document::XVbaEventsHelper > xVbaEventsHelper = m_pDoc->GetVbaEventsHelper(); + uno::Reference< document::XVbaEventsHelper > xVbaEventsHelper = m_xDoc->GetVbaEventsHelper(); if( xVbaEventsHelper.is() ) lcl_processCompatibleSfxHint( xVbaEventsHelper, rHint ); #endif @@ -1312,20 +1312,20 @@ void SwDocShell::SetModified( bool bSet ) SfxObjectShell::SetModified( bSet ); if( IsEnableSetModified()) { - if (!m_pDoc->getIDocumentState().IsInCallModified()) + if (!m_xDoc->getIDocumentState().IsInCallModified()) { EnableSetModified( false ); if( bSet ) { - bool const bOld = m_pDoc->getIDocumentState().IsModified(); - m_pDoc->getIDocumentState().SetModified(); + bool const bOld = m_xDoc->getIDocumentState().IsModified(); + m_xDoc->getIDocumentState().SetModified(); if( !bOld ) { - m_pDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); + m_xDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); } } else - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); EnableSetModified(); } @@ -1416,7 +1416,7 @@ void SwDocShell::ReloadFromHtml( const OUString& rStreamName, SwSrcView* pSrcVie } } #endif - bool bWasBrowseMode = m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::BROWSE_MODE); + bool bWasBrowseMode = m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::BROWSE_MODE); RemoveLink(); // now also the UNO-Model has to be informed about the new Doc #51535# @@ -1427,7 +1427,7 @@ void SwDocShell::ReloadFromHtml( const OUString& rStreamName, SwSrcView* pSrcVie AddLink(); //#116402# update font list when new document is created UpdateFontList(); - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::BROWSE_MODE, bWasBrowseMode); + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::BROWSE_MODE, bWasBrowseMode); pSrcView->SetPool(&GetPool()); const OUString& rMedname = GetMedium()->GetName(); @@ -1447,7 +1447,7 @@ void SwDocShell::ReloadFromHtml( const OUString& rStreamName, SwSrcView* pSrcVie // the base URL has to be set to the filename of the document <rMedname> // and not to the base URL of the temporary file <aMed> in order to get // the URLs of the linked graphics correctly resolved. - SwReloadFromHtmlReader aReader( aMed, rMedname, m_pDoc ); + SwReloadFromHtmlReader aReader( aMed, rMedname, m_xDoc.get() ); aReader.Read( *ReadHTML ); @@ -1469,7 +1469,7 @@ void SwDocShell::ReloadFromHtml( const OUString& rStreamName, SwSrcView* pSrcVie if(bModified && !IsReadOnly()) SetModified(); else - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); } ErrCode SwDocShell::LoadStylesFromFile( const OUString& rURL, @@ -1525,7 +1525,7 @@ ErrCode SwDocShell::LoadStylesFromFile( const OUString& rURL, // insert the styles! if( bUnoCall ) { - SwNodeIndex aIdx( m_pDoc->GetNodes().GetEndOfContent(), -1 ); + SwNodeIndex aIdx( m_xDoc->GetNodes().GetEndOfContent(), -1 ); pPam.reset(new SwPaM( aIdx )); pReader.reset(new SwReader( aMed, rURL, *pPam )); } @@ -1542,7 +1542,7 @@ ErrCode SwDocShell::LoadStylesFromFile( const OUString& rURL, if( bUnoCall ) { - UnoActionContext aAction( m_pDoc ); + UnoActionContext aAction( m_xDoc.get() ); nErr = pReader->Read( *pRead ); } else diff --git a/sw/source/uibase/app/docshini.cxx b/sw/source/uibase/app/docshini.cxx index 844dcdc0bde1..983a8a8bc633 100644 --- a/sw/source/uibase/app/docshini.cxx +++ b/sw/source/uibase/app/docshini.cxx @@ -108,7 +108,7 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) bool bHTMLTemplSet = false; if( bRet ) { - AddLink(); // create m_pDoc / pIo if applicable + AddLink(); // create m_xDoc / pIo if applicable bool bWeb = dynamic_cast< const SwWebDocShell *>( this ) != nullptr; if ( bWeb ) @@ -132,13 +132,13 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) ForbiddenCharacters aForbidden; aAsian.GetStartEndChars( pLocales[i], aForbidden.beginLine, aForbidden.endLine); LanguageType eLang = LanguageTag::convertToLanguageType(pLocales[i]); - m_pDoc->getIDocumentSettingAccess().setForbiddenCharacters( eLang, aForbidden); + m_xDoc->getIDocumentSettingAccess().setForbiddenCharacters( eLang, aForbidden); } } - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::KERN_ASIAN_PUNCTUATION, + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::KERN_ASIAN_PUNCTUATION, !aAsian.IsKerningWesternTextOnly()); - m_pDoc->getIDocumentSettingAccess().setCharacterCompressionType(aAsian.GetCharDistanceCompression()); - m_pDoc->getIDocumentDeviceAccess().setPrintData(*SW_MOD()->GetPrtOptions(bWeb)); + m_xDoc->getIDocumentSettingAccess().setCharacterCompressionType(aAsian.GetCharDistanceCompression()); + m_xDoc->getIDocumentDeviceAccess().setPrintData(*SW_MOD()->GetPrtOptions(bWeb)); } SubInitNew(); @@ -146,7 +146,7 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) // for all SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig(); - SfxPrinter* pPrt = m_pDoc->getIDocumentDeviceAccess().getPrinter( false ); + SfxPrinter* pPrt = m_xDoc->getIDocumentDeviceAccess().getPrinter( false ); OUString sEntry; static const sal_uInt16 aFontWhich[] = @@ -184,7 +184,7 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) sal_uInt16 nFontWhich = aFontWhich[i]; sal_uInt16 nFontId = aFontIds[i]; std::unique_ptr<SvxFontItem> pFontItem; - const SvxLanguageItem& rLang = static_cast<const SvxLanguageItem&>(m_pDoc->GetDefault( aLangTypes[i] )); + const SvxLanguageItem& rLang = static_cast<const SvxLanguageItem&>(m_xDoc->GetDefault( aLangTypes[i] )); LanguageType eLanguage = rLang.GetLanguage(); if(!pStdFont->IsFontDefault(nFontId)) { @@ -216,20 +216,20 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) pFontItem.reset(new SvxFontItem(aLangDefFont.GetFamilyType(), aLangDefFont.GetFamilyName(), aEmptyOUStr, aLangDefFont.GetPitch(), aLangDefFont.GetCharSet(), nFontWhich)); } - m_pDoc->SetDefault(*pFontItem); + m_xDoc->SetDefault(*pFontItem); if( !bHTMLTemplSet ) { - SwTextFormatColl *pColl = m_pDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(RES_POOLCOLL_STANDARD); + SwTextFormatColl *pColl = m_xDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(RES_POOLCOLL_STANDARD); pColl->ResetFormatAttr(nFontWhich); } pFontItem.reset(); sal_Int32 nFontHeight = pStdFont->GetFontHeight( FONT_STANDARD, i, eLanguage ); if(nFontHeight <= 0) nFontHeight = SwStdFontConfig::GetDefaultHeightFor( nFontId, eLanguage ); - m_pDoc->SetDefault(SvxFontHeightItem( nFontHeight, 100, aFontHeightWhich[i] )); + m_xDoc->SetDefault(SvxFontHeightItem( nFontHeight, 100, aFontHeightWhich[i] )); if( !bHTMLTemplSet ) { - SwTextFormatColl *pColl = m_pDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(RES_POOLCOLL_STANDARD); + SwTextFormatColl *pColl = m_xDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(RES_POOLCOLL_STANDARD); pColl->ResetFormatAttr(aFontHeightWhich[i]); } @@ -252,20 +252,20 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) sal_uInt16 nFontWhich = RES_CHRATR_FONT; sal_uInt16 nFontHeightWhich = RES_CHRATR_FONTSIZE; - LanguageType eLanguage = static_cast<const SvxLanguageItem&>(m_pDoc->GetDefault( RES_CHRATR_LANGUAGE )).GetLanguage(); + LanguageType eLanguage = static_cast<const SvxLanguageItem&>(m_xDoc->GetDefault( RES_CHRATR_LANGUAGE )).GetLanguage(); for(sal_uInt8 nIdx = 0; nIdx < 24; nIdx += 2) { if(nIdx == 8) { nFontWhich = RES_CHRATR_CJK_FONT; nFontHeightWhich = RES_CHRATR_CJK_FONTSIZE; - eLanguage = static_cast<const SvxLanguageItem&>(m_pDoc->GetDefault( RES_CHRATR_CJK_LANGUAGE )).GetLanguage(); + eLanguage = static_cast<const SvxLanguageItem&>(m_xDoc->GetDefault( RES_CHRATR_CJK_LANGUAGE )).GetLanguage(); } else if(nIdx == 16) { nFontWhich = RES_CHRATR_CTL_FONT; nFontHeightWhich = RES_CHRATR_CTL_FONTSIZE; - eLanguage = static_cast<const SvxLanguageItem&>(m_pDoc->GetDefault( RES_CHRATR_CTL_LANGUAGE )).GetLanguage(); + eLanguage = static_cast<const SvxLanguageItem&>(m_xDoc->GetDefault( RES_CHRATR_CTL_LANGUAGE )).GetLanguage(); } SwTextFormatColl *pColl = nullptr; if(!pStdFont->IsFontDefault(aFontIdPoolId[nIdx])) @@ -276,7 +276,7 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) if( pPrt ) aFont = pPrt->GetFontMetric( aFont ); - pColl = m_pDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(aFontIdPoolId[nIdx + 1]); + pColl = m_xDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(aFontIdPoolId[nIdx + 1]); if( !bHTMLTemplSet || SfxItemState::SET != pColl->GetAttrSet().GetItemState( nFontWhich, false ) ) @@ -289,7 +289,7 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) if(nFontHeight <= 0) nFontHeight = SwStdFontConfig::GetDefaultHeightFor( aFontIdPoolId[nIdx], eLanguage ); if(!pColl) - pColl = m_pDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(aFontIdPoolId[nIdx + 1]); + pColl = m_xDoc->getIDocumentStylePoolAccess().GetTextCollFromPool(aFontIdPoolId[nIdx + 1]); SvxFontHeightItem aFontHeight( static_cast<const SvxFontHeightItem&>(pColl->GetFormatAttr( nFontHeightWhich ))); if(aFontHeight.GetHeight() != sal::static_int_cast<sal_uInt32, sal_Int32>(nFontHeight)) { @@ -301,7 +301,7 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) // the default for documents created via 'File/New' should be 'on' // (old documents, where this property was not yet implemented, will get the // value 'false' in the SwDoc c-tor) - m_pDoc->getIDocumentSettingAccess().set( DocumentSettingId::MATH_BASELINE_ALIGNMENT, + m_xDoc->getIDocumentSettingAccess().set( DocumentSettingId::MATH_BASELINE_ALIGNMENT, SW_MOD()->GetUsrPref( bWeb )->IsAlignMathObjectsToBaseline() ); } @@ -310,20 +310,20 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) if( !bHTMLTemplSet && SvxFrameDirection::Horizontal_RL_TB == GetDefaultFrameDirection(GetAppLanguage()) ) { - m_pDoc->SetDefault( SvxAdjustItem(SvxAdjust::Right, RES_PARATR_ADJUST ) ); + m_xDoc->SetDefault( SvxAdjustItem(SvxAdjust::Right, RES_PARATR_ADJUST ) ); } // #i29550# - m_pDoc->SetDefault( SfxBoolItem( RES_COLLAPSING_BORDERS, true ) ); + m_xDoc->SetDefault( SfxBoolItem( RES_COLLAPSING_BORDERS, true ) ); // <-- collapsing //#i16874# AutoKerning as default for new documents - m_pDoc->SetDefault( SvxAutoKernItem( true, RES_CHRATR_AUTOKERN ) ); + m_xDoc->SetDefault( SvxAutoKernItem( true, RES_CHRATR_AUTOKERN ) ); // #i42080# - Due to the several calls of method <SetDefault(..)> // at the document instance, the document is modified. Thus, reset this // status here. Note: In method <SubInitNew()> this is also done. - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); return bRet; } @@ -331,7 +331,6 @@ bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) // Ctor with SfxCreateMode ????? SwDocShell::SwDocShell( SfxObjectCreateMode const eMode ) : SfxObjectShell(eMode) - , m_pDoc(nullptr) , m_pFontList(nullptr) , m_IsInUpdateFontList(false) , m_pStyleManager(new svx::CommonStyleManager(*this)) @@ -348,7 +347,6 @@ SwDocShell::SwDocShell( SfxObjectCreateMode const eMode ) // Ctor / Dtor SwDocShell::SwDocShell( const SfxModelFlags i_nSfxCreationFlags ) : SfxObjectShell ( i_nSfxCreationFlags ) - , m_pDoc(nullptr) , m_pFontList(nullptr) , m_IsInUpdateFontList(false) , m_pStyleManager(new svx::CommonStyleManager(*this)) @@ -365,7 +363,7 @@ SwDocShell::SwDocShell( const SfxModelFlags i_nSfxCreationFlags ) // Ctor / Dtor SwDocShell::SwDocShell( SwDoc *const pD, SfxObjectCreateMode const eMode ) : SfxObjectShell(eMode) - , m_pDoc(pD) + , m_xDoc(pD) , m_pFontList(nullptr) , m_IsInUpdateFontList(false) , m_pStyleManager(new svx::CommonStyleManager(*this)) @@ -383,10 +381,10 @@ SwDocShell::SwDocShell( SwDoc *const pD, SfxObjectCreateMode const eMode ) SwDocShell::~SwDocShell() { // disable chart related objects now because in ~SwDoc it may be to late for this - if (m_pDoc) + if (m_xDoc.get()) { - m_pDoc->getIDocumentChartDataProviderAccess().GetChartControllerHelper().Disconnect(); - SwChartDataProvider *pPCD = m_pDoc->getIDocumentChartDataProviderAccess().GetChartDataProvider(); + m_xDoc->getIDocumentChartDataProviderAccess().GetChartControllerHelper().Disconnect(); + SwChartDataProvider *pPCD = m_xDoc->getIDocumentChartDataProviderAccess().GetChartDataProvider(); if (pPCD) pPCD->dispose(); } @@ -417,23 +415,20 @@ void SwDocShell::Init_Impl() void SwDocShell::AddLink() { - if (!m_pDoc) + if (!m_xDoc.get()) { SwDocFac aFactory; - m_pDoc = aFactory.GetDoc(); - m_pDoc->acquire(); - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::HTML_MODE, dynamic_cast< const SwWebDocShell *>( this ) != nullptr ); + m_xDoc = aFactory.GetDoc(); + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::HTML_MODE, dynamic_cast< const SwWebDocShell *>( this ) != nullptr ); } - else - m_pDoc->acquire(); - m_pDoc->SetDocShell( this ); // set the DocShell-Pointer for Doc + m_xDoc->SetDocShell( this ); // set the DocShell-Pointer for Doc uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY); static_cast<SwXTextDocument*>(xDoc.get())->Reactivate(this); - SetPool(&m_pDoc->GetAttrPool()); + SetPool(&m_xDoc->GetAttrPool()); // most suitably not until a sdbcx::View is created!!! - m_pDoc->SetOle2Link(LINK(this, SwDocShell, Ole2ModifiedHdl)); + m_xDoc->SetOle2Link(LINK(this, SwDocShell, Ole2ModifiedHdl)); } // create new FontList Change Printer @@ -442,11 +437,11 @@ void SwDocShell::UpdateFontList() if (!m_IsInUpdateFontList) { m_IsInUpdateFontList = true; - OSL_ENSURE(m_pDoc, "No Doc no FontList"); - if (m_pDoc) + OSL_ENSURE(m_xDoc.get(), "No Doc no FontList"); + if (m_xDoc.get()) { delete m_pFontList; - m_pFontList = new FontList( m_pDoc->getIDocumentDeviceAccess().getReferenceDevice(true) ); + m_pFontList = new FontList( m_xDoc->getIDocumentDeviceAccess().getReferenceDevice(true) ); PutItem( SvxFontListItem( m_pFontList, SID_ATTR_CHAR_FONTLIST ) ); } m_IsInUpdateFontList = false; @@ -458,19 +453,16 @@ void SwDocShell::RemoveLink() // disconnect Uno-Object uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY); static_cast<SwXTextDocument*>(xDoc.get())->Invalidate(); - if (m_pDoc) + if (m_xDoc.get()) { if (m_xBasePool.is()) { static_cast<SwDocStyleSheetPool*>(m_xBasePool.get())->dispose(); m_xBasePool.clear(); } - sal_Int8 nRefCt = static_cast< sal_Int8 >(m_pDoc->release()); - m_pDoc->SetOle2Link(Link<bool,void>()); - m_pDoc->SetDocShell( nullptr ); - if( !nRefCt ) - delete m_pDoc; - m_pDoc = nullptr; // we don't have the Doc anymore!! + m_xDoc->SetOle2Link(Link<bool,void>()); + m_xDoc->SetDocShell( nullptr ); + m_xDoc.clear(); // we don't have the Doc anymore!! } } void SwDocShell::InvalidateModel() @@ -495,8 +487,8 @@ bool SwDocShell::Load( SfxMedium& rMedium ) // for tdf#99729 (if required, it will be overridden in *::ReadUserDataSequence()) if (IsOwnStorageFormat(rMedium)) { - if (m_pDoc && m_pDoc->getIDocumentDrawModelAccess().GetDrawModel()) - m_pDoc->getIDocumentDrawModelAccess().GetDrawModel()->SetAnchoredTextOverflowLegacy(true); + if (m_xDoc.get() && m_xDoc->getIDocumentDrawModelAccess().GetDrawModel()) + m_xDoc->getIDocumentDrawModelAccess().GetDrawModel()->SetAnchoredTextOverflowLegacy(true); } if (SfxObjectShell::Load(rMedium)) @@ -505,7 +497,7 @@ bool SwDocShell::Load( SfxMedium& rMedium ) rEmbeddedObjectContainer.setUserAllowsLinkUpdate(false); SAL_INFO( "sw.ui", "after SfxInPlaceObject::Load" ); - if (m_pDoc) // for last version!! + if (m_xDoc.get()) // for last version!! RemoveLink(); // release the existing AddLink(); // set Link and update Data!! @@ -513,7 +505,7 @@ bool SwDocShell::Load( SfxMedium& rMedium ) // Loading // for MD OSL_ENSURE( !m_xBasePool.is(), "who hasn't destroyed their Pool?" ); - m_xBasePool = new SwDocStyleSheetPool( *m_pDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); + m_xBasePool = new SwDocStyleSheetPool( *m_xDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); if(GetCreateMode() != SfxObjectCreateMode::ORGANIZER) { const SfxUInt16Item* pUpdateDocItem = SfxItemSet::GetItem<SfxUInt16Item>(rMedium.GetItemSet(), SID_UPDATEDOCMODE, false); @@ -529,7 +521,7 @@ bool SwDocShell::Load( SfxMedium& rMedium ) if( ReadXML ) { ReadXML->SetOrganizerMode( true ); - SwReader aRdr( rMedium, aEmptyOUStr, m_pDoc ); + SwReader aRdr( rMedium, aEmptyOUStr, m_xDoc.get() ); nErr = aRdr.Read( *ReadXML ); ReadXML->SetOrganizerMode( false ); } @@ -552,7 +544,7 @@ bool SwDocShell::Load( SfxMedium& rMedium ) { // set Doc's DocInfo at DocShell-Medium SAL_INFO( "sw.ui", "before ReadDocInfo" ); - SwReader aRdr( rMedium, aEmptyOUStr, m_pDoc ); + SwReader aRdr( rMedium, aEmptyOUStr, m_xDoc.get() ); SAL_INFO( "sw.ui", "before Read" ); nErr = aRdr.Read( *pReader ); SAL_INFO( "sw.ui", "after Read" ); @@ -561,13 +553,13 @@ bool SwDocShell::Load( SfxMedium& rMedium ) // by this formats. if( dynamic_cast< const SwWebDocShell *>( this ) != nullptr ) { - if (!m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE)) - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::HTML_MODE, true); + if (!m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE)) + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::HTML_MODE, true); } if( dynamic_cast< const SwGlobalDocShell *>( this ) != nullptr ) { - if (!m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT)) - m_pDoc->getIDocumentSettingAccess().set(DocumentSettingId::GLOBAL_DOCUMENT, true); + if (!m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT)) + m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::GLOBAL_DOCUMENT, true); } } } @@ -578,12 +570,12 @@ bool SwDocShell::Load( SfxMedium& rMedium ) } UpdateFontList(); - InitDrawModelAndDocShell(this, m_pDoc ? m_pDoc->getIDocumentDrawModelAccess().GetDrawModel() : nullptr); + InitDrawModelAndDocShell(this, m_xDoc.get() ? m_xDoc->getIDocumentDrawModelAccess().GetDrawModel() : nullptr); SetError(nErr); bRet = !nErr.IsError(); - if (bRet && !m_pDoc->IsInLoadAsynchron() && + if (bRet && !m_xDoc->IsInLoadAsynchron() && GetCreateMode() == SfxObjectCreateMode::STANDARD) { LoadingFinished(); @@ -599,7 +591,7 @@ bool SwDocShell::Load( SfxMedium& rMedium ) bool SwDocShell::LoadFrom( SfxMedium& rMedium ) { bool bRet = false; - if (m_pDoc) + if (m_xDoc.get()) RemoveLink(); AddLink(); // set Link and update Data!! @@ -614,11 +606,11 @@ bool SwDocShell::LoadFrom( SfxMedium& rMedium ) SwWait aWait( *this, true ); { OSL_ENSURE( !m_xBasePool.is(), "who hasn't destroyed their Pool?" ); - m_xBasePool = new SwDocStyleSheetPool( *m_pDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); + m_xBasePool = new SwDocStyleSheetPool( *m_xDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); if( ReadXML ) { ReadXML->SetOrganizerMode( true ); - SwReader aRdr( rMedium, aEmptyOUStr, m_pDoc ); + SwReader aRdr( rMedium, aEmptyOUStr, m_xDoc.get() ); nErr = aRdr.Read( *ReadXML ); ReadXML->SetOrganizerMode( false ); } @@ -635,19 +627,19 @@ bool SwDocShell::LoadFrom( SfxMedium& rMedium ) } while( false ); SfxObjectShell::LoadFrom( rMedium ); - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); return bRet; } void SwDocShell::SubInitNew() { OSL_ENSURE( !m_xBasePool.is(), "who hasn't destroyed their Pool?" ); - m_xBasePool = new SwDocStyleSheetPool( *m_pDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); + m_xBasePool = new SwDocStyleSheetPool( *m_xDoc, SfxObjectCreateMode::ORGANIZER == GetCreateMode() ); UpdateFontList(); - InitDrawModelAndDocShell(this, m_pDoc ? m_pDoc->getIDocumentDrawModelAccess().GetDrawModel() : nullptr); + InitDrawModelAndDocShell(this, m_xDoc ? m_xDoc->getIDocumentDrawModelAccess().GetDrawModel() : nullptr); - m_pDoc->getIDocumentSettingAccess().setLinkUpdateMode( GLOBALSETTING ); - m_pDoc->getIDocumentSettingAccess().setFieldUpdateFlags( AUTOUPD_GLOBALSETTING ); + m_xDoc->getIDocumentSettingAccess().setLinkUpdateMode( GLOBALSETTING ); + m_xDoc->getIDocumentSettingAccess().setFieldUpdateFlags( AUTOUPD_GLOBALSETTING ); bool bWeb = dynamic_cast< const SwWebDocShell *>( this ) != nullptr; @@ -663,7 +655,7 @@ void SwDocShell::SubInitNew() nRange[ SAL_N_ELEMENTS(nRange) - 3 ] = RES_PARATR_TABSTOP; nRange[ SAL_N_ELEMENTS(nRange) - 2 ] = RES_PARATR_HYPHENZONE; } - SfxItemSet aDfltSet( m_pDoc->GetAttrPool(), nRange ); + SfxItemSet aDfltSet( m_xDoc->GetAttrPool(), nRange ); //! get lingu options without loading lingu DLL SvtLinguOptions aLinguOpt; @@ -680,7 +672,7 @@ void SwDocShell::SubInitNew() if(!bWeb) { - SvxHyphenZoneItem aHyp( static_cast<const SvxHyphenZoneItem&>( m_pDoc->GetDefault( + SvxHyphenZoneItem aHyp( static_cast<const SvxHyphenZoneItem&>( m_xDoc->GetDefault( RES_PARATR_HYPHENZONE) ) ); aHyp.GetMinLead() = static_cast< sal_uInt8 >(aLinguOpt.nHyphMinLeading); aHyp.GetMinTrail() = static_cast< sal_uInt8 >(aLinguOpt.nHyphMinTrailing); @@ -694,23 +686,23 @@ void SwDocShell::SubInitNew() } aDfltSet.Put( SvxColorItem( Color( COL_AUTO ), RES_CHRATR_COLOR ) ); - m_pDoc->SetDefault( aDfltSet ); + m_xDoc->SetDefault( aDfltSet ); //default page mode for text grid if(!bWeb) { bool bSquaredPageMode = SW_MOD()->GetUsrPref(false)->IsSquaredPageMode(); - m_pDoc->SetDefaultPageMode( bSquaredPageMode ); + m_xDoc->SetDefaultPageMode( bSquaredPageMode ); // only set Widow/Orphan defaults on a new, non-web document - not an opened one if( GetMedium() && GetMedium()->GetOrigURL().isEmpty() ) { - m_pDoc->SetDefault( SvxWidowsItem( (sal_uInt8) 2, RES_PARATR_WIDOWS) ); - m_pDoc->SetDefault( SvxOrphansItem( (sal_uInt8) 2, RES_PARATR_ORPHANS) ); + m_xDoc->SetDefault( SvxWidowsItem( (sal_uInt8) 2, RES_PARATR_WIDOWS) ); + m_xDoc->SetDefault( SvxOrphansItem( (sal_uInt8) 2, RES_PARATR_ORPHANS) ); } } - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); } /* @@ -718,12 +710,12 @@ void SwDocShell::SubInitNew() */ IDocumentDeviceAccess& SwDocShell::getIDocumentDeviceAccess() { - return m_pDoc->getIDocumentDeviceAccess(); + return m_xDoc->getIDocumentDeviceAccess(); } IDocumentChartDataProviderAccess& SwDocShell::getIDocumentChartDataProviderAccess() { - return m_pDoc->getIDocumentChartDataProviderAccess(); + return m_xDoc->getIDocumentChartDataProviderAccess(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx index d6ef4503e661..cfc899eced44 100644 --- a/sw/source/uibase/app/docst.cxx +++ b/sw/source/uibase/app/docst.cxx @@ -165,7 +165,7 @@ void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh) SfxTemplateItem aItem(nWhich, aName); sal_uInt16 nMask = 0; - if (m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE)) + if (m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE)) nMask = SWSTYLEBIT_HTML; else { @@ -191,7 +191,7 @@ void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh) case SID_STYLE_FAMILY3: - if (m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE)) + if (m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE)) rSet.DisableItem( nWhich ); else { @@ -207,7 +207,7 @@ void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh) case SID_STYLE_FAMILY4: { SvxHtmlOptions& rHtmlOpt = SvxHtmlOptions::Get(); - if (m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) && !rHtmlOpt.IsPrintLayoutExtension()) + if (m_xDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) && !rHtmlOpt.IsPrintLayoutExtension()) rSet.DisableItem( nWhich ); else { @@ -671,7 +671,7 @@ sal_uInt16 SwDocShell::Edit( SfxStyleSheetBase *pStyle = nullptr; sal_uInt16 nRet = nMask; - bool bModified = m_pDoc->getIDocumentState().IsModified(); + bool bModified = m_xDoc->getIDocumentState().IsModified(); SwUndoId nNewStyleUndoId(SwUndoId::EMPTY); @@ -862,11 +862,11 @@ sal_uInt16 SwDocShell::Edit( if( bNew ) { GetWrtShell()->Undo(); - m_pDoc->GetIDocumentUndoRedo().ClearRedo(); + m_xDoc->GetIDocumentUndoRedo().ClearRedo(); } if( !bModified ) - m_pDoc->getIDocumentState().ResetModified(); + m_xDoc->getIDocumentState().ResetModified(); } nRet = aApplyStyleHelper.getRet(); @@ -900,10 +900,10 @@ sal_uInt16 SwDocShell::Edit( if( bNew ) m_xBasePool->Broadcast( SfxStyleSheetHint( SfxHintId::StyleSheetCreated, *xTmp.get() ) ); - m_pDoc->getIDocumentState().SetModified(); + m_xDoc->getIDocumentState().SetModified(); if( !bModified ) // Bug 57028 { - m_pDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); + m_xDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); } GetWrtShell()->EndAllAction(); } @@ -1332,7 +1332,7 @@ SfxStyleFamily SwDocShell::MakeByExample( const OUString &rName, SfxStyleFamily std::set<Color> SwDocShell::GetDocColors() { - return m_pDoc->GetDocColors(); + return m_xDoc->GetDocColors(); } void SwDocShell::LoadStyles( SfxObjectShell& rSource ) @@ -1363,7 +1363,7 @@ void SwDocShell::LoadStyles_( SfxObjectShell& rSource, bool bPreserveCurrentDocu // of the template, update all the Source's // FixFields once. if(!bPreserveCurrentDocument) - static_cast<SwDocShell&>(rSource).m_pDoc->getIDocumentFieldsAccess().SetFixFields(nullptr); + static_cast<SwDocShell&>(rSource).m_xDoc->getIDocumentFieldsAccess().SetFixFields(nullptr); if (m_pWrtShell) { // rhbz#818557, fdo#58893: EndAllAction will call SelectShell(), @@ -1372,18 +1372,18 @@ void SwDocShell::LoadStyles_( SfxObjectShell& rSource, bool bPreserveCurrentDocu // setting g_bNoInterrupt appears to avoid the problem. ::comphelper::FlagRestorationGuard g(g_bNoInterrupt, true); m_pWrtShell->StartAllAction(); - m_pDoc->ReplaceStyles( *static_cast<SwDocShell&>(rSource).m_pDoc ); + m_xDoc->ReplaceStyles( *static_cast<SwDocShell&>(rSource).m_xDoc ); m_pWrtShell->EndAllAction(); } else { - bool bModified = m_pDoc->getIDocumentState().IsModified(); - m_pDoc->ReplaceStyles( *static_cast<SwDocShell&>(rSource).m_pDoc ); - if (!bModified && m_pDoc->getIDocumentState().IsModified() && !m_pView) + bool bModified = m_xDoc->getIDocumentState().IsModified(); + m_xDoc->ReplaceStyles( *static_cast<SwDocShell&>(rSource).m_xDoc ); + if (!bModified && m_xDoc->getIDocumentState().IsModified() && !m_pView) { // the View is created later, but overwrites the Modify-Flag. // Undo doesn't work anymore anyways. - m_pDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); + m_xDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); } } } diff --git a/sw/source/uibase/wrtsh/wrtsh1.cxx b/sw/source/uibase/wrtsh/wrtsh1.cxx index 28e6fbe79f04..a2de94eb2c04 100644 --- a/sw/source/uibase/wrtsh/wrtsh1.cxx +++ b/sw/source/uibase/wrtsh/wrtsh1.cxx @@ -459,7 +459,7 @@ bool SwWrtShell::InsertOleObject( const svt::EmbeddedObjectRef& xRef, SwFlyFrame // set parent to get correct VisArea(in case of object needing parent printer) uno::Reference < container::XChild > xChild( xRef.GetObject(), uno::UNO_QUERY ); if ( xChild.is() ) - xChild->setParent( mpDoc->GetDocShell()->GetModel() ); + xChild->setParent( mxDoc->GetDocShell()->GetModel() ); SvGlobalName aCLSID( xRef->getClassID() ); bStarMath = ( SotExchange::IsMath( aCLSID ) != 0 ); @@ -515,7 +515,7 @@ bool SwWrtShell::InsertOleObject( const svt::EmbeddedObjectRef& xRef, SwFlyFrame SwFlyFrameFormat *pFormat = SwFEShell::InsertObject( xRef, &aFrameMgr.GetAttrSet() ); // --> #i972# - if ( bStarMath && mpDoc->getIDocumentSettingAccess().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT ) ) + if ( bStarMath && mxDoc->getIDocumentSettingAccess().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT ) ) AlignFormulaToBaseline( xRef.GetObject() ); if (pFlyFrameFormat) @@ -997,7 +997,7 @@ void SwWrtShell::NumOrBulletOn(bool bNum) { // retrieve numbering rule at paragraph // style, which is found at current cursor position in the document. - SwNumRule* pCollRule = mpDoc->FindNumRulePtr(pColl->GetNumRule().GetValue()); + SwNumRule* pCollRule = mxDoc->FindNumRulePtr(pColl->GetNumRule().GetValue()); // #125993# - The outline numbering rule isn't allowed // to be derived from a parent paragraph style to a derived one. // Thus check, if the found outline numbering rule is directly @@ -1005,7 +1005,7 @@ void SwWrtShell::NumOrBulletOn(bool bNum) if ( pCollRule && pCollRule == GetDoc()->GetOutlineNumRule() ) { const SwNumRule* pDirectCollRule = - mpDoc->FindNumRulePtr(pColl->GetNumRule( false ).GetValue()); + mxDoc->FindNumRulePtr(pColl->GetNumRule( false ).GetValue()); if ( !pDirectCollRule ) { pCollRule = nullptr; @@ -1561,7 +1561,7 @@ void SwWrtShell::AutoUpdatePara(SwTextFormatColl* pColl, const SfxItemSet& rStyl ResetAttr( std::set<sal_uInt16>(), pCursor ); SetAttrSet(aCoreSet, SetAttrMode::DEFAULT, pCursor); } - mpDoc->ChgFormat(*pColl, rStyleSet ); + mxDoc->ChgFormat(*pColl, rStyleSet ); EndAction(); } @@ -1729,7 +1729,7 @@ OUString SwWrtShell::GetSelDescr() const } break; default: - if (nullptr != mpDoc) + if (mxDoc.get()) aResult = GetCursorDescr(); } |