summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-01-19 11:29:32 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-01-19 13:06:47 +0200
commita754294ac7a902fe96fbbd6b8b6824a360d6b248 (patch)
tree23ead80aa960366395713f2e4d032d9ca868d9a0 /sw
parent071c74dfe24940b4222ed9576e2357d012b86617 (diff)
use rtl::Reference in SwDocFac
instead of manual acquire/release Change-Id: I40b4f6d2893fe0d4113032f638bce1793fc47cd7
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/docfac.hxx3
-rw-r--r--sw/source/filter/basflt/docfact.cxx13
-rw-r--r--sw/source/filter/basflt/shellio.cxx126
3 files changed, 69 insertions, 73 deletions
diff --git a/sw/inc/docfac.hxx b/sw/inc/docfac.hxx
index cf073a9398ba..8cf4a7320a21 100644
--- a/sw/inc/docfac.hxx
+++ b/sw/inc/docfac.hxx
@@ -20,13 +20,14 @@
#define INCLUDED_SW_INC_DOCFAC_HXX
#include <tools/solar.h>
+#include <rtl/ref.hxx>
class SwDoc;
class SW_DLLPUBLIC SwDocFac
{
protected:
- SwDoc* pDoc;
+ rtl::Reference<SwDoc> mxDoc;
public:
SwDocFac( SwDoc *pDoc = nullptr );
diff --git a/sw/source/filter/basflt/docfact.cxx b/sw/source/filter/basflt/docfact.cxx
index c8c87c0a1afd..a7269de0a9cb 100644
--- a/sw/source/filter/basflt/docfact.cxx
+++ b/sw/source/filter/basflt/docfact.cxx
@@ -25,28 +25,23 @@
SwDocFac::SwDocFac( SwDoc *pDc )
- : pDoc( pDc )
+ : mxDoc( pDc )
{
- if( pDoc )
- pDoc->acquire();
}
SwDocFac::~SwDocFac()
{
- if( pDoc && !pDoc->release() )
- delete pDoc;
}
SwDoc *SwDocFac::GetDoc()
{
- if( !pDoc )
+ if( !mxDoc.is() )
{
- pDoc = new SwDoc;
- pDoc->acquire();
+ mxDoc = new SwDoc;
}
- return pDoc;
+ return mxDoc.get();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/basflt/shellio.cxx b/sw/source/filter/basflt/shellio.cxx
index 0522a8c195a6..de743ce1620f 100644
--- a/sw/source/filter/basflt/shellio.cxx
+++ b/sw/source/filter/basflt/shellio.cxx
@@ -88,11 +88,11 @@ sal_uLong SwReader::Read( const Reader& rOptions )
GetDoc();
// while reading, do not call OLE-Modified
- Link<bool,void> aOLELink( pDoc->GetOle2Link() );
- pDoc->SetOle2Link( Link<bool,void>() );
+ Link<bool,void> aOLELink( mxDoc->GetOle2Link() );
+ mxDoc->SetOle2Link( Link<bool,void>() );
- pDoc->SetInReading( true );
- pDoc->SetInXMLImport( dynamic_cast< XMLReader* >(po) != nullptr );
+ mxDoc->SetInReading( true );
+ mxDoc->SetInXMLImport( dynamic_cast< XMLReader* >(po) != nullptr );
SwPaM *pPam;
if( pCursor )
@@ -100,13 +100,13 @@ sal_uLong SwReader::Read( const Reader& rOptions )
else
{
// if the Reader was not called by a Shell, create a PaM ourselves
- SwNodeIndex nNode( pDoc->GetNodes().GetEndOfContent(), -1 );
+ SwNodeIndex nNode( mxDoc->GetNodes().GetEndOfContent(), -1 );
pPam = new SwPaM( nNode );
// For Web documents the default template was set already by InitNew,
// unless the filter is not HTML,
// or a SetTemplateName was called in ConvertFrom.
- if( !pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) || ReadHTML != po || !po->mxTemplate.is() )
- po->SetTemplate( *pDoc );
+ if( !mxDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) || ReadHTML != po || !po->mxTemplate.is() )
+ po->SetTemplate( *mxDoc );
}
// Pams are connected like rings; stop when we return to the 1st element
@@ -114,7 +114,7 @@ sal_uLong SwReader::Read( const Reader& rOptions )
SwUndoInsDoc* pUndo = nullptr;
bool bReadPageDescs = false;
- bool const bDocUndo = pDoc->GetIDocumentUndoRedo().DoesUndo();
+ bool const bDocUndo = mxDoc->GetIDocumentUndoRedo().DoesUndo();
bool bSaveUndo = bDocUndo && pCursor;
if( bSaveUndo )
{
@@ -123,19 +123,19 @@ sal_uLong SwReader::Read( const Reader& rOptions )
if( bReadPageDescs )
{
bSaveUndo = false;
- pDoc->GetIDocumentUndoRedo().DelAllUndoObj();
+ mxDoc->GetIDocumentUndoRedo().DelAllUndoObj();
}
else
{
- pDoc->GetIDocumentUndoRedo().ClearRedo();
- pDoc->GetIDocumentUndoRedo().StartUndo( UNDO_INSDOKUMENT, nullptr );
+ mxDoc->GetIDocumentUndoRedo().ClearRedo();
+ mxDoc->GetIDocumentUndoRedo().StartUndo( UNDO_INSDOKUMENT, nullptr );
}
}
- pDoc->GetIDocumentUndoRedo().DoUndo(false);
+ mxDoc->GetIDocumentUndoRedo().DoUndo(false);
- SwNodeIndex aSplitIdx( pDoc->GetNodes() );
+ SwNodeIndex aSplitIdx( mxDoc->GetNodes() );
- RedlineFlags eOld = pDoc->getIDocumentRedlineAccess().GetRedlineFlags();
+ RedlineFlags eOld = mxDoc->getIDocumentRedlineAccess().GetRedlineFlags();
RedlineFlags ePostReadRedlineFlags( RedlineFlags::Ignore );
// Array of FlyFormats
@@ -148,7 +148,7 @@ sal_uLong SwReader::Read( const Reader& rOptions )
if( bSaveUndo )
pUndo = new SwUndoInsDoc( *pPam );
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
SwPaM* pUndoPam = nullptr;
if( bDocUndo || pCursor )
@@ -161,8 +161,8 @@ sal_uLong SwReader::Read( const Reader& rOptions )
// store for now all Fly's
if( pCursor )
{
- std::copy(pDoc->GetSpzFrameFormats()->begin(),
- pDoc->GetSpzFrameFormats()->end(), std::back_inserter(aFlyFrameArr));
+ std::copy(mxDoc->GetSpzFrameFormats()->begin(),
+ mxDoc->GetSpzFrameFormats()->end(), std::back_inserter(aFlyFrameArr));
}
const sal_Int32 nSttContent = pPam->GetPoint()->nContent.GetIndex();
@@ -172,21 +172,21 @@ sal_uLong SwReader::Read( const Reader& rOptions )
sal_Int32 nEndContent = pCNd ? pCNd->Len() - nSttContent : 0;
SwNodeIndex aEndPos( pPam->GetPoint()->nNode, 1 );
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
- nError = po->Read( *pDoc, sBaseURL, *pPam, aFileName );
+ nError = po->Read( *mxDoc, sBaseURL, *pPam, aFileName );
// an ODF document may contain redline mode in settings.xml; save it!
- ePostReadRedlineFlags = pDoc->getIDocumentRedlineAccess().GetRedlineFlags();
+ ePostReadRedlineFlags = mxDoc->getIDocumentRedlineAccess().GetRedlineFlags();
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
if( !IsError( nError )) // set the End position already
{
--aEndPos;
pCNd = aEndPos.GetNode().GetContentNode();
if( !pCNd && nullptr == ( pCNd = SwNodes::GoPrevious( &aEndPos ) ))
- pCNd = pDoc->GetNodes().GoNext( &aEndPos );
+ pCNd = mxDoc->GetNodes().GoNext( &aEndPos );
pPam->GetPoint()->nNode = aEndPos;
const sal_Int32 nLen = pCNd->Len();
@@ -202,7 +202,7 @@ sal_uLong SwReader::Read( const Reader& rOptions )
SwTableBox* pBox = pTableBoxStart->GetTableBox();
if ( pBox )
{
- pDoc->ChkBoxNumFormat( *pBox, true );
+ mxDoc->ChkBoxNumFormat( *pBox, true );
}
}
}
@@ -222,9 +222,9 @@ sal_uLong SwReader::Read( const Reader& rOptions )
rNd.FindFooterStartNode();
// search all new Fly's, and store them as individual Undo Objects
- for( SwFrameFormats::size_type n = 0; n < pDoc->GetSpzFrameFormats()->size(); ++n )
+ for( SwFrameFormats::size_type n = 0; n < mxDoc->GetSpzFrameFormats()->size(); ++n )
{
- SwFrameFormat* pFrameFormat = (*pDoc->GetSpzFrameFormats())[ n ];
+ SwFrameFormat* pFrameFormat = (*mxDoc->GetSpzFrameFormats())[ n ];
const SwFormatAnchor& rAnchor = pFrameFormat->GetAnchor();
if( !aFlyFrameArr.Contains( pFrameFormat) )
{
@@ -245,7 +245,7 @@ sal_uLong SwReader::Read( const Reader& rOptions )
*pFrameAnchor,
*pUndoPam->GetPoint(),
*pUndoPam->GetMark(),
- pDoc)
+ mxDoc.get())
)
)
)
@@ -257,20 +257,20 @@ sal_uLong SwReader::Read( const Reader& rOptions )
{
// DrawObjects are not allowed in Headers/Footers!
pFrameFormat->DelFrames();
- pDoc->DelFrameFormat( pFrameFormat );
+ mxDoc->DelFrameFormat( pFrameFormat );
--n;
}
else
{
if( bSaveUndo )
{
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
// UGLY: temp. enable undo
- pDoc->GetIDocumentUndoRedo().DoUndo(true);
- pDoc->GetIDocumentUndoRedo().AppendUndo(
+ mxDoc->GetIDocumentUndoRedo().DoUndo(true);
+ mxDoc->GetIDocumentUndoRedo().AppendUndo(
new SwUndoInsLayFormat( pFrameFormat,0,0 ) );
- pDoc->GetIDocumentUndoRedo().DoUndo(false);
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
+ mxDoc->GetIDocumentUndoRedo().DoUndo(false);
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
}
if( pFrameFormat->HasWriterListeners() )
{
@@ -286,7 +286,7 @@ sal_uLong SwReader::Read( const Reader& rOptions )
}
else if( pCursor )
{
- pDoc->SetContainsAtPageObjWithContentAnchor( true );
+ mxDoc->SetContainsAtPageObjWithContentAnchor( true );
}
}
else
@@ -298,22 +298,22 @@ sal_uLong SwReader::Read( const Reader& rOptions )
if( !aFlyFrameArr.empty() )
aFlyFrameArr.clear();
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
- if( pDoc->getIDocumentRedlineAccess().IsRedlineOn() )
- pDoc->getIDocumentRedlineAccess().AppendRedline( new SwRangeRedline( nsRedlineType_t::REDLINE_INSERT, *pUndoPam ), true);
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
+ if( mxDoc->getIDocumentRedlineAccess().IsRedlineOn() )
+ mxDoc->getIDocumentRedlineAccess().AppendRedline( new SwRangeRedline( nsRedlineType_t::REDLINE_INSERT, *pUndoPam ), true);
else
- pDoc->getIDocumentRedlineAccess().SplitRedline( *pUndoPam );
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
+ mxDoc->getIDocumentRedlineAccess().SplitRedline( *pUndoPam );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
}
if( bSaveUndo )
{
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
pUndo->SetInsertRange( *pUndoPam, false );
// UGLY: temp. enable undo
- pDoc->GetIDocumentUndoRedo().DoUndo(true);
- pDoc->GetIDocumentUndoRedo().AppendUndo( pUndo );
- pDoc->GetIDocumentUndoRedo().DoUndo(false);
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
+ mxDoc->GetIDocumentUndoRedo().DoUndo(true);
+ mxDoc->GetIDocumentUndoRedo().AppendUndo( pUndo );
+ mxDoc->GetIDocumentUndoRedo().DoUndo(false);
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
}
delete pUndoPam;
@@ -338,25 +338,25 @@ sal_uLong SwReader::Read( const Reader& rOptions )
}
}
- pDoc->SetInReading( false );
- pDoc->SetInXMLImport( false );
+ mxDoc->SetInReading( false );
+ mxDoc->SetInXMLImport( false );
- pDoc->InvalidateNumRules();
- pDoc->UpdateNumRule();
- pDoc->ChkCondColls();
- pDoc->SetAllUniqueFlyNames();
- pDoc->getIDocumentState().SetLoaded();
+ mxDoc->InvalidateNumRules();
+ mxDoc->UpdateNumRule();
+ mxDoc->ChkCondColls();
+ mxDoc->SetAllUniqueFlyNames();
+ mxDoc->getIDocumentState().SetLoaded();
// Clear unassigned cell styles, because they aren't needed anymore.
- pDoc->GetCellStyles().clear();
+ mxDoc->GetCellStyles().clear();
- pDoc->GetIDocumentUndoRedo().DoUndo(bDocUndo);
+ mxDoc->GetIDocumentUndoRedo().DoUndo(bDocUndo);
if (!bReadPageDescs)
{
if( bSaveUndo )
{
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
- pDoc->GetIDocumentUndoRedo().EndUndo( UNDO_INSDOKUMENT, nullptr );
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
+ mxDoc->GetIDocumentUndoRedo().EndUndo( UNDO_INSDOKUMENT, nullptr );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( RedlineFlags::Ignore );
}
}
@@ -368,26 +368,26 @@ sal_uLong SwReader::Read( const Reader& rOptions )
// #i42634# Moved common code of SwReader::Read() and
// SwDocShell::UpdateLinks() to new SwDoc::UpdateLinks():
// ATM still with Update
- pDoc->getIDocumentLinksAdministration().UpdateLinks();
+ mxDoc->getIDocumentLinksAdministration().UpdateLinks();
// not insert: set the redline mode read from settings.xml
eOld = ePostReadRedlineFlags & ~RedlineFlags::Ignore;
- pDoc->getIDocumentFieldsAccess().SetFieldsDirty(false, nullptr, 0);
+ mxDoc->getIDocumentFieldsAccess().SetFieldsDirty(false, nullptr, 0);
}
- pDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
- pDoc->SetOle2Link( aOLELink );
+ mxDoc->getIDocumentRedlineAccess().SetRedlineFlags_intern( eOld );
+ mxDoc->SetOle2Link( aOLELink );
if( pCursor ) // das Doc ist jetzt modifiziert
- pDoc->getIDocumentState().SetModified();
+ mxDoc->getIDocumentState().SetModified();
// #i38810# - If links have been updated, the document
// have to be modified. During update of links the OLE link at the document
// isn't set. Thus, the document's modified state has to be set again after
- // the OLE link is restored - see above <pDoc->SetOle2Link( aOLELink )>.
- if ( pDoc->getIDocumentLinksAdministration().LinksUpdated() )
+ // the OLE link is restored - see above <mxDoc->SetOle2Link( aOLELink )>.
+ if ( mxDoc->getIDocumentLinksAdministration().LinksUpdated() )
{
- pDoc->getIDocumentState().SetModified();
+ mxDoc->getIDocumentState().SetModified();
}
po->SetReadUTF8( false );