[Libreoffice-commits] core.git: 2 commits - compilerplugins/clang editeng/source emfio/inc emfio/source filter/source include/editeng include/svx include/vcl oox/source reportdesign/source sc/source sd/inc sd/source sfx2/inc sfx2/source svx/source sw/source vcl/inc vcl/source
Noel Grandin
noel.grandin at collabora.co.uk
Mon Jul 2 06:48:12 UTC 2018
compilerplugins/clang/unusedfields.cxx | 16 +-
compilerplugins/clang/unusedfields.only-used-in-constructor.results | 44 +++---
compilerplugins/clang/unusedfields.readonly.results | 66 ++--------
compilerplugins/clang/unusedfields.untouched.results | 54 ++++++--
compilerplugins/clang/unusedfields.writeonly.results | 50 ++++---
editeng/source/outliner/outliner.cxx | 11 -
editeng/source/outliner/outlobj.cxx | 5
editeng/source/outliner/overflowingtxt.cxx | 18 +-
editeng/source/uno/unoforou.cxx | 3
emfio/inc/wmfreader.hxx | 1
emfio/source/reader/wmfreader.cxx | 3
filter/source/msfilter/msdffimp.cxx | 8 -
filter/source/msfilter/svdfppt.cxx | 6
include/editeng/outliner.hxx | 4
include/editeng/outlobj.hxx | 1
include/editeng/overflowingtxt.hxx | 16 +-
include/svx/colorbox.hxx | 2
include/svx/fntctrl.hxx | 2
include/svx/svdoashp.hxx | 2
include/svx/svdobj.hxx | 4
include/svx/svdomeas.hxx | 2
include/svx/svdotable.hxx | 2
include/svx/svdotext.hxx | 6
include/svx/svdtext.hxx | 2
include/vcl/window.hxx | 3
oox/source/export/drawingml.cxx | 2
oox/source/export/vmlexport.cxx | 2
reportdesign/source/core/sdr/ReportDrawPage.cxx | 1
sc/source/core/data/postit.cxx | 7 -
sc/source/filter/excel/xiescher.cxx | 5
sc/source/ui/unoobj/editsrc.cxx | 4
sd/inc/textapi.hxx | 2
sd/source/core/drawdoc4.cxx | 6
sd/source/core/sdpage.cxx | 8 -
sd/source/core/text/textapi.cxx | 8 -
sd/source/filter/xml/sdtransform.cxx | 1
sd/source/filter/xml/sdxmlwrp.cxx | 1
sd/source/ui/annotations/annotationwindow.cxx | 4
sd/source/ui/dlg/headerfooterdlg.cxx | 1
sd/source/ui/docshell/docshel4.cxx | 5
sd/source/ui/func/fuexpand.cxx | 11 -
sd/source/ui/func/fuinsert.cxx | 1
sd/source/ui/func/fuinsfil.cxx | 5
sd/source/ui/func/fumorph.cxx | 1
sd/source/ui/slidesorter/controller/SlsSlotManager.cxx | 3
sd/source/ui/slidesorter/view/SlideSorterView.cxx | 2
sd/source/ui/view/DocumentRenderer.cxx | 9 -
sd/source/ui/view/drviews2.cxx | 4
sd/source/ui/view/drviews7.cxx | 3
sd/source/ui/view/drviews8.cxx | 1
sd/source/ui/view/drviews9.cxx | 1
sd/source/ui/view/drviewse.cxx | 5
sd/source/ui/view/outlnvsh.cxx | 17 +-
sd/source/ui/view/outlview.cxx | 3
sd/source/ui/view/sdview.cxx | 1
sd/source/ui/view/sdview4.cxx | 1
sd/source/ui/view/viewshe2.cxx | 1
sfx2/inc/bitset.hxx | 1
sfx2/source/bastyp/bitset.cxx | 3
svx/source/accessibility/AccessibleShape.cxx | 2
svx/source/customshapes/EnhancedCustomShapeEngine.cxx | 3
svx/source/dialog/fntctrl.cxx | 6
svx/source/inc/cell.hxx | 4
svx/source/sdr/primitive2d/sdrattributecreator.cxx | 3
svx/source/sdr/properties/textproperties.cxx | 16 +-
svx/source/svdraw/svdedtv2.cxx | 6
svx/source/svdraw/svdedxv.cxx | 4
svx/source/svdraw/svdoashp.cxx | 6
svx/source/svdraw/svdobj.cxx | 6
svx/source/svdraw/svdomeas.cxx | 4
svx/source/svdraw/svdoole2.cxx | 3
svx/source/svdraw/svdotext.cxx | 28 ++--
svx/source/svdraw/svdotxat.cxx | 4
svx/source/svdraw/svdotxed.cxx | 12 -
svx/source/svdraw/svdtext.cxx | 26 +--
svx/source/svdraw/svdundo.cxx | 22 +--
svx/source/svdraw/textchainflow.cxx | 22 +--
svx/source/table/accessiblecell.cxx | 2
svx/source/table/cell.cxx | 25 +--
svx/source/table/svdotable.cxx | 10 -
svx/source/table/tablertfexporter.cxx | 2
svx/source/table/tableundo.cxx | 3
svx/source/tbxctrls/tbcontrl.cxx | 24 ---
svx/source/unodraw/unoshtxt.cxx | 4
sw/source/core/fields/docufld.cxx | 1
sw/source/core/fields/textapi.cxx | 3
sw/source/core/inc/textapi.hxx | 4
sw/source/core/layout/fly.cxx | 1
sw/source/core/unocore/unofield.cxx | 3
sw/source/filter/ww8/rtfsdrexport.cxx | 2
sw/source/filter/ww8/wrtw8esh.cxx | 2
sw/source/filter/ww8/ww8graf.cxx | 7 -
sw/source/filter/ww8/ww8par.cxx | 1
sw/source/uibase/docvw/AnnotationWin.cxx | 4
vcl/inc/window.h | 1
vcl/source/window/dndeventdispatcher.cxx | 16 --
vcl/source/window/window.cxx | 1
vcl/source/window/window2.cxx | 13 -
98 files changed, 362 insertions(+), 405 deletions(-)
New commits:
commit 50c63e5c2f7962e8893e2d04b0e958209432f4c9
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Fri Jun 29 15:38:29 2018 +0200
pass OutlinerParaObject around by std::unique_ptr
SdrText::SetOutlinerParaObject was modified to not check for
self-assign, and instead assert because
the existing check was no longer possible.
Fix bug in SdrUndoObjSetText::Undo(), where it was calling
SdrText::SetOutlinerParaObject unnecessarily,
because NbcSetOutlinerParaObjectForText already does that.
Optimise Outliner::GetEmptyParaObject by creating a new constructor for
OutlinerParaObject,
so we don't need to copy the new object we get back from
GetEmptyTextObject, unnecessarily.
Change-Id: I57c475583d6c31658c154e24992b3d587bad9841
Reviewed-on: https://gerrit.libreoffice.org/56730
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
index 344ece6b82ff..d595486c2fdb 100644
--- a/editeng/source/outliner/outliner.cxx
+++ b/editeng/source/outliner/outliner.cxx
@@ -369,7 +369,7 @@ void Outliner::SetHoriAlignIgnoreTrailingWhitespace(bool bEnabled)
pEditEngine->SetHoriAlignIgnoreTrailingWhitespace( bEnabled );
}
-OutlinerParaObject* Outliner::CreateParaObject( sal_Int32 nStartPara, sal_Int32 nCount ) const
+std::unique_ptr<OutlinerParaObject> Outliner::CreateParaObject( sal_Int32 nStartPara, sal_Int32 nCount ) const
{
if ( static_cast<sal_uLong>(nStartPara) + nCount >
static_cast<sal_uLong>(pParaList->GetParagraphCount()) )
@@ -393,7 +393,7 @@ OutlinerParaObject* Outliner::CreateParaObject( sal_Int32 nStartPara, sal_Int32
aParagraphDataVector[nPara-nStartPara] = *GetParagraph(nPara);
}
- OutlinerParaObject* pPObj = new OutlinerParaObject(*pText, aParagraphDataVector, bIsEditDoc);
+ std::unique_ptr<OutlinerParaObject> pPObj(new OutlinerParaObject(*pText, aParagraphDataVector, bIsEditDoc));
pPObj->SetOutlinerMode(GetMode());
return pPObj;
@@ -401,9 +401,8 @@ OutlinerParaObject* Outliner::CreateParaObject( sal_Int32 nStartPara, sal_Int32
void Outliner::SetToEmptyText()
{
- OutlinerParaObject *pEmptyTxt = GetEmptyParaObject();
+ std::unique_ptr<OutlinerParaObject> pEmptyTxt = GetEmptyParaObject();
SetText(*pEmptyTxt);
- delete pEmptyTxt;
}
void Outliner::SetText( const OUString& rText, Paragraph* pPara )
@@ -2115,10 +2114,10 @@ NonOverflowingText *Outliner::GetNonOverflowingText() const
}
}
-OutlinerParaObject *Outliner::GetEmptyParaObject() const
+std::unique_ptr<OutlinerParaObject> Outliner::GetEmptyParaObject() const
{
std::unique_ptr<EditTextObject> pEmptyText = pEditEngine->GetEmptyTextObject();
- OutlinerParaObject* pPObj = new OutlinerParaObject( *pEmptyText );
+ std::unique_ptr<OutlinerParaObject> pPObj( new OutlinerParaObject( std::move(pEmptyText) ));
pPObj->SetOutlinerMode(GetMode());
return pPObj;
}
diff --git a/editeng/source/outliner/outlobj.cxx b/editeng/source/outliner/outlobj.cxx
index 04688bb06728..8002419cc37d 100644
--- a/editeng/source/outliner/outlobj.cxx
+++ b/editeng/source/outliner/outlobj.cxx
@@ -77,6 +77,11 @@ OutlinerParaObject::OutlinerParaObject( const EditTextObject& rTextObj ) :
{
}
+OutlinerParaObject::OutlinerParaObject( std::unique_ptr<EditTextObject> pTextObj ) :
+ mpImpl(OutlinerParaObjData(std::move(pTextObj), ParagraphDataVector(), true))
+{
+}
+
OutlinerParaObject::OutlinerParaObject( const OutlinerParaObject& r ) :
mpImpl(r.mpImpl)
{
diff --git a/editeng/source/outliner/overflowingtxt.cxx b/editeng/source/outliner/overflowingtxt.cxx
index 5577104b7f7e..e5bc3097e82b 100644
--- a/editeng/source/outliner/overflowingtxt.cxx
+++ b/editeng/source/outliner/overflowingtxt.cxx
@@ -31,7 +31,7 @@
#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
-OutlinerParaObject *TextChainingUtils::JuxtaposeParaObject(
+std::unique_ptr<OutlinerParaObject> TextChainingUtils::JuxtaposeParaObject(
css::uno::Reference< css::datatransfer::XTransferable > const & xOverflowingContent,
Outliner *pOutl,
OutlinerParaObject const *pNextPObj)
@@ -66,7 +66,7 @@ OutlinerParaObject *TextChainingUtils::JuxtaposeParaObject(
return pOutl->CreateParaObject();
}
-OutlinerParaObject *TextChainingUtils::DeeplyMergeParaObject(
+std::unique_ptr<OutlinerParaObject> TextChainingUtils::DeeplyMergeParaObject(
css::uno::Reference< css::datatransfer::XTransferable > const & xOverflowingContent,
Outliner *pOutl,
OutlinerParaObject const *pNextPObj)
@@ -125,7 +125,7 @@ bool NonOverflowingText::IsLastParaInterrupted() const
}
-OutlinerParaObject *NonOverflowingText::RemoveOverflowingText(Outliner *pOutliner) const
+std::unique_ptr<OutlinerParaObject> NonOverflowingText::RemoveOverflowingText(Outliner *pOutliner) const
{
pOutliner->QuickDelete(maContentSel);
SAL_INFO("editeng.chaining", "Deleting selection from (Para: " << maContentSel.nStartPara
@@ -144,12 +144,12 @@ ESelection NonOverflowingText::GetOverflowPointSel() const
// The equivalent of ToParaObject for OverflowingText. Here we are prepending the overflowing text to the old dest box's text
// XXX: In a sense a better name for OverflowingText and NonOverflowingText are respectively DestLinkText and SourceLinkText
-OutlinerParaObject *OverflowingText::JuxtaposeParaObject(Outliner *pOutl, OutlinerParaObject const *pNextPObj)
+std::unique_ptr<OutlinerParaObject> OverflowingText::JuxtaposeParaObject(Outliner *pOutl, OutlinerParaObject const *pNextPObj)
{
return TextChainingUtils::JuxtaposeParaObject(mxOverflowingContent, pOutl, pNextPObj);
}
-OutlinerParaObject *OverflowingText::DeeplyMergeParaObject(Outliner *pOutl, OutlinerParaObject const *pNextPObj)
+std::unique_ptr<OutlinerParaObject> OverflowingText::DeeplyMergeParaObject(Outliner *pOutl, OutlinerParaObject const *pNextPObj)
{
return TextChainingUtils::DeeplyMergeParaObject(mxOverflowingContent, pOutl, pNextPObj);
}
@@ -174,7 +174,7 @@ ESelection OFlowChainedText::GetOverflowPointSel() const
return mpNonOverflowingTxt->GetOverflowPointSel();
}
-OutlinerParaObject *OFlowChainedText::InsertOverflowingText(Outliner *pOutliner, OutlinerParaObject const *pTextToBeMerged)
+std::unique_ptr<OutlinerParaObject> OFlowChainedText::InsertOverflowingText(Outliner *pOutliner, OutlinerParaObject const *pTextToBeMerged)
{
// Just return the roughly merged paras for now
if (mpOverflowingTxt == nullptr)
@@ -190,7 +190,7 @@ OutlinerParaObject *OFlowChainedText::InsertOverflowingText(Outliner *pOutliner,
}
-OutlinerParaObject *OFlowChainedText::RemoveOverflowingText(Outliner *pOutliner)
+std::unique_ptr<OutlinerParaObject> OFlowChainedText::RemoveOverflowingText(Outliner *pOutliner)
{
if (mpNonOverflowingTxt == nullptr)
return nullptr;
@@ -212,9 +212,9 @@ UFlowChainedText::UFlowChainedText(Outliner const *pOutl, bool bIsDeepMerge)
mbIsDeepMerge = bIsDeepMerge;
}
-OutlinerParaObject *UFlowChainedText::CreateMergedUnderflowParaObject(Outliner *pOutl, OutlinerParaObject const *pNextLinkWholeText)
+std::unique_ptr<OutlinerParaObject> UFlowChainedText::CreateMergedUnderflowParaObject(Outliner *pOutl, OutlinerParaObject const *pNextLinkWholeText)
{
- OutlinerParaObject *pNewText = nullptr;
+ std::unique_ptr<OutlinerParaObject> pNewText;
if (mbIsDeepMerge) {
SAL_INFO("editeng.chaining", "[TEXTCHAINFLOW - UF] Deep merging paras" );
diff --git a/editeng/source/uno/unoforou.cxx b/editeng/source/uno/unoforou.cxx
index fa8e08ed16d7..c53d610b97c1 100644
--- a/editeng/source/uno/unoforou.cxx
+++ b/editeng/source/uno/unoforou.cxx
@@ -544,9 +544,8 @@ void SvxOutlinerForwarder::CopyText(const SvxTextForwarder& rSource)
const SvxOutlinerForwarder* pSourceForwarder = dynamic_cast< const SvxOutlinerForwarder* >( &rSource );
if( !pSourceForwarder )
return;
- OutlinerParaObject* pNewOutlinerParaObject = pSourceForwarder->rOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pNewOutlinerParaObject = pSourceForwarder->rOutliner.CreateParaObject();
rOutliner.SetText( *pNewOutlinerParaObject );
- delete pNewOutlinerParaObject;
}
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 7d7e5e385390..29741fa2fc3b 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -3660,10 +3660,10 @@ void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj )
rOutliner.QuickSetAttribs( aParagraphAttribs, aSelection );
nParaIndex++;
}
- OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pNewText = rOutliner.CreateParaObject();
rOutliner.Clear();
rOutliner.SetUpdateMode( bOldUpdateMode );
- pText->SetOutlinerParaObject( pNewText );
+ pText->SetOutlinerParaObject( std::move(pNewText) );
}
}
@@ -4496,9 +4496,9 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
}
if ( bCreateNewParaObject )
{
- OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pNewText = rOutliner.CreateParaObject();
rOutliner.Init( OutlinerMode::TextObject );
- static_cast<SdrObjCustomShape*>(pRet)->NbcSetOutlinerParaObject( pNewText );
+ static_cast<SdrObjCustomShape*>(pRet)->NbcSetOutlinerParaObject( std::move(pNewText) );
}
}
rOutliner.Clear();
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 0f36b690634b..09590554ddd3 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -2350,10 +2350,10 @@ SdrObject* SdrPowerPointImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj*
rOutliner.QuickSetAttribs( aParagraphAttribs, aSelection );
}
}
- OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pNewText = rOutliner.CreateParaObject();
rOutliner.Clear();
rOutliner.SetUpdateMode( bOldUpdateMode );
- pText->SetOutlinerParaObject( pNewText );
+ pText->SetOutlinerParaObject( std::move(pNewText) );
}
return pText;
}
@@ -7634,7 +7634,7 @@ SdrObject* SdrPowerPointImport::CreateTable( SdrObject* pGroup, const sal_uInt32
{
SdrText* pSdrText = pTable->getText( nTableIndex );
if ( pSdrText )
- pSdrText->SetOutlinerParaObject(new OutlinerParaObject(*pParaObject) );
+ pSdrText->SetOutlinerParaObject(o3tl::make_unique<OutlinerParaObject>(*pParaObject) );
}
}
}
diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx
index 03743cd362ee..c0d4a9a82437 100644
--- a/include/editeng/outliner.hxx
+++ b/include/editeng/outliner.hxx
@@ -705,7 +705,7 @@ public:
void SetToEmptyText();
- OutlinerParaObject* CreateParaObject( sal_Int32 nStartPara = 0, sal_Int32 nParaCount = EE_PARA_ALL ) const;
+ std::unique_ptr<OutlinerParaObject> CreateParaObject( sal_Int32 nStartPara = 0, sal_Int32 nParaCount = EE_PARA_ALL ) const;
const SfxItemSet& GetEmptyItemSet() const;
@@ -759,7 +759,7 @@ public:
void ClearOverflowingParaNum();
bool IsPageOverflow();
- OutlinerParaObject *GetEmptyParaObject() const;
+ std::unique_ptr<OutlinerParaObject> GetEmptyParaObject() const;
void DepthChangedHdl(Paragraph*, ParaFlag nPrevFlags);
diff --git a/include/editeng/outlobj.hxx b/include/editeng/outlobj.hxx
index 0186ce72af16..b7ddc4c59403 100644
--- a/include/editeng/outlobj.hxx
+++ b/include/editeng/outlobj.hxx
@@ -66,6 +66,7 @@ public:
// constructors/destructor
OutlinerParaObject( const EditTextObject&, const ParagraphDataVector&, bool bIsEditDoc);
OutlinerParaObject( const EditTextObject&);
+ OutlinerParaObject( std::unique_ptr<EditTextObject> );
OutlinerParaObject( const OutlinerParaObject&);
~OutlinerParaObject();
diff --git a/include/editeng/overflowingtxt.hxx b/include/editeng/overflowingtxt.hxx
index 19bf287995d5..66d4527648c8 100644
--- a/include/editeng/overflowingtxt.hxx
+++ b/include/editeng/overflowingtxt.hxx
@@ -51,11 +51,11 @@ class TextChainingUtils
public:
static css::uno::Reference< css::datatransfer::XTransferable> CreateTransferableFromText(Outliner const *);
- static OutlinerParaObject *JuxtaposeParaObject(
+ static std::unique_ptr<OutlinerParaObject> JuxtaposeParaObject(
css::uno::Reference< css::datatransfer::XTransferable > const & xOverflowingContent,
Outliner *,
OutlinerParaObject const *);
- static OutlinerParaObject *DeeplyMergeParaObject(
+ static std::unique_ptr<OutlinerParaObject> DeeplyMergeParaObject(
css::uno::Reference< css::datatransfer::XTransferable > const & xOverflowingContent,
Outliner *,
OutlinerParaObject const *);
@@ -70,8 +70,8 @@ public:
class OverflowingText
{
public:
- OutlinerParaObject *JuxtaposeParaObject(Outliner *, OutlinerParaObject const *);
- OutlinerParaObject *DeeplyMergeParaObject(Outliner *, OutlinerParaObject const *);
+ std::unique_ptr<OutlinerParaObject> JuxtaposeParaObject(Outliner *, OutlinerParaObject const *);
+ std::unique_ptr<OutlinerParaObject> DeeplyMergeParaObject(Outliner *, OutlinerParaObject const *);
private:
friend class Outliner;
@@ -83,7 +83,7 @@ private:
class NonOverflowingText
{
public:
- OutlinerParaObject *RemoveOverflowingText(Outliner *) const;
+ std::unique_ptr<OutlinerParaObject> RemoveOverflowingText(Outliner *) const;
ESelection GetOverflowPointSel() const;
bool IsLastParaInterrupted() const;
@@ -108,8 +108,8 @@ public:
OFlowChainedText(Outliner const *, bool );
~OFlowChainedText();
- OutlinerParaObject *InsertOverflowingText(Outliner *, OutlinerParaObject const *);
- OutlinerParaObject *RemoveOverflowingText(Outliner *);
+ std::unique_ptr<OutlinerParaObject> InsertOverflowingText(Outliner *, OutlinerParaObject const *);
+ std::unique_ptr<OutlinerParaObject> RemoveOverflowingText(Outliner *);
ESelection GetOverflowPointSel() const;
@@ -127,7 +127,7 @@ class EDITENG_DLLPUBLIC UFlowChainedText
{
public:
UFlowChainedText(Outliner const *, bool);
- OutlinerParaObject *CreateMergedUnderflowParaObject(Outliner *, OutlinerParaObject const *);
+ std::unique_ptr<OutlinerParaObject> CreateMergedUnderflowParaObject(Outliner *, OutlinerParaObject const *);
private:
css::uno::Reference< css::datatransfer::XTransferable > mxUnderflowingTxt;
diff --git a/include/svx/svdoashp.hxx b/include/svx/svdoashp.hxx
index e82e5018d137..8247b9b5fcce 100644
--- a/include/svx/svdoashp.hxx
+++ b/include/svx/svdoashp.hxx
@@ -220,7 +220,7 @@ public:
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override;
virtual basegfx::B2DPolyPolygon TakeContour() const override;
- virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject) override;
+ virtual void NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject) override;
virtual SdrObject* DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 21529b482147..d97edb022e4c 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -680,8 +680,8 @@ public:
// keep text in outliner's format
// SetOutlinerParaObject: transfer ownership of *pTextObject!
- void SetOutlinerParaObject(OutlinerParaObject* pTextObject);
- virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
+ void SetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject);
+ virtual void NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject);
virtual OutlinerParaObject* GetOutlinerParaObject() const;
virtual void NbcReformatText();
virtual void ReformatText();
diff --git a/include/svx/svdomeas.hxx b/include/svx/svdomeas.hxx
index 72abb9abefcd..0e30251dcab5 100644
--- a/include/svx/svdomeas.hxx
+++ b/include/svx/svdomeas.hxx
@@ -136,7 +136,7 @@ public:
virtual void TakeTextAnchorRect(tools::Rectangle& rAnchorRect) const override;
virtual void TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, tools::Rectangle* pViewInit, tools::Rectangle* pViewMin) const override;
virtual EEAnchorMode GetOutlinerViewAnchorMode() const override;
- virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject) override;
+ virtual void NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject) override;
virtual OutlinerParaObject* GetOutlinerParaObject() const override;
virtual bool CalcFieldValue(const SvxFieldItem& rField, sal_Int32 nPara, sal_uInt16 nPos,
diff --git a/include/svx/svdotable.hxx b/include/svx/svdotable.hxx
index 1119c8c9fc59..ad42885a124f 100644
--- a/include/svx/svdotable.hxx
+++ b/include/svx/svdotable.hxx
@@ -237,7 +237,7 @@ public:
void TakeTextEditArea(const sdr::table::CellPos& rPos, Size* pPaperMin, Size* pPaperMax, tools::Rectangle* pViewInit, tools::Rectangle* pViewMin) const;
virtual EEAnchorMode GetOutlinerViewAnchorMode() const override;
- virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject) override;
+ virtual void NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject) override;
virtual OutlinerParaObject* GetOutlinerParaObject() const override;
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index 7be26b52d40f..3b0e307246ba 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -488,10 +488,10 @@ public:
virtual void EndTextEdit(SdrOutliner& rOutl);
virtual EEAnchorMode GetOutlinerViewAnchorMode() const;
- virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject) override;
- void NbcSetOutlinerParaObjectForText( OutlinerParaObject* pTextObject, SdrText* pText );
+ virtual void NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject) override;
+ void NbcSetOutlinerParaObjectForText( std::unique_ptr<OutlinerParaObject> pTextObject, SdrText* pText );
virtual OutlinerParaObject* GetOutlinerParaObject() const override;
- OutlinerParaObject* GetEditOutlinerParaObject() const;
+ std::unique_ptr<OutlinerParaObject> GetEditOutlinerParaObject() const;
virtual void NbcReformatText() override;
virtual void ReformatText() override;
diff --git a/include/svx/svdtext.hxx b/include/svx/svdtext.hxx
index 11b91f028fb8..18f8d0bc7e00 100644
--- a/include/svx/svdtext.hxx
+++ b/include/svx/svdtext.hxx
@@ -49,7 +49,7 @@ public:
void ForceOutlinerParaObject( OutlinerMode nOutlMode );
- virtual void SetOutlinerParaObject( OutlinerParaObject* pTextObject );
+ virtual void SetOutlinerParaObject( std::unique_ptr<OutlinerParaObject> pTextObject );
OutlinerParaObject* GetOutlinerParaObject() const;
void CheckPortionInfo( SdrOutliner& rOutliner );
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index dfb59f2db363..c9c390970440 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2481,7 +2481,7 @@ void DrawingML::WriteText( const Reference< XInterface >& rXIface, const OUStrin
*/
if (pTxtObj->IsTextEditActive())
{
- pParaObj = pTxtObj->GetEditOutlinerParaObject();
+ pParaObj = pTxtObj->GetEditOutlinerParaObject().release();
bOwnParaObj = true;
}
else
diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index 2ec6992381a6..a655c77f9318 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -1346,7 +1346,7 @@ sal_Int32 VMLExport::StartShape()
*/
if (pTxtObj->IsTextEditActive())
{
- pParaObj = pTxtObj->GetEditOutlinerParaObject();
+ pParaObj = pTxtObj->GetEditOutlinerParaObject().release();
bOwnParaObj = true;
}
else
diff --git a/reportdesign/source/core/sdr/ReportDrawPage.cxx b/reportdesign/source/core/sdr/ReportDrawPage.cxx
index cf73d9c04c4b..d5226c1935d3 100644
--- a/reportdesign/source/core/sdr/ReportDrawPage.cxx
+++ b/reportdesign/source/core/sdr/ReportDrawPage.cxx
@@ -25,6 +25,7 @@
#include <comphelper/classids.hxx>
#include <comphelper/embeddedobjectcontainer.hxx>
#include <comphelper/documentconstants.hxx>
+#include <editeng/outlobj.hxx>
#include <svx/svdmodel.hxx>
#include <com/sun/star/beans/NamedValue.hpp>
diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx
index 4629bbdc052b..56020cfe3afa 100644
--- a/sc/source/core/data/postit.cxx
+++ b/sc/source/core/data/postit.cxx
@@ -48,6 +48,7 @@
#include <userdat.hxx>
#include <detfunc.hxx>
#include <editutil.hxx>
+#include <o3tl/make_unique.hxx>
#include <utility>
@@ -713,7 +714,7 @@ void ScPostIt::CreateCaptionFromInitData( const ScAddress& rPos ) const
OSL_ENSURE( rInitData.mxOutlinerObj.get() || !rInitData.maSimpleText.isEmpty(),
"ScPostIt::CreateCaptionFromInitData - need either outliner para object or simple text" );
if( rInitData.mxOutlinerObj.get() )
- maNoteData.m_pCaption->SetOutlinerParaObject( rInitData.mxOutlinerObj.release() );
+ maNoteData.m_pCaption->SetOutlinerParaObject( std::move(rInitData.mxOutlinerObj) );
else
maNoteData.m_pCaption->SetText( rInitData.maSimpleText );
@@ -772,7 +773,7 @@ void ScPostIt::CreateCaption( const ScAddress& rPos, const std::shared_ptr< SdrC
{
// copy edit text object (object must be inserted into page already)
if( OutlinerParaObject* pOPO = pCaption->GetOutlinerParaObject() )
- maNoteData.m_pCaption->SetOutlinerParaObject( new OutlinerParaObject( *pOPO ) );
+ maNoteData.m_pCaption->SetOutlinerParaObject( o3tl::make_unique<OutlinerParaObject>( *pOPO ) );
// copy formatting items (after text has been copied to apply font formatting)
maNoteData.m_pCaption->SetMergedItemSetAndBroadcast( pCaption->GetMergedItemSet() );
// move textbox position relative to new cell, copy textbox size
@@ -850,7 +851,7 @@ std::shared_ptr< SdrCaptionObj > ScNoteUtil::CreateTempCaption(
if( pNoteCaption && rUserText.isEmpty() )
{
if( OutlinerParaObject* pOPO = pNoteCaption->GetOutlinerParaObject() )
- pCaption->SetOutlinerParaObject( new OutlinerParaObject( *pOPO ) );
+ pCaption->SetOutlinerParaObject( o3tl::make_unique<OutlinerParaObject>( *pOPO ) );
// set formatting (must be done after setting text) and resize the box to fit the text
pCaption->SetMergedItemSetAndBroadcast( pNoteCaption->GetMergedItemSet() );
tools::Rectangle aCaptRect( pCaption->GetLogicRect().TopLeft(), pNoteCaption->GetLogicRect().GetSize() );
diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx
index 72343c7797eb..00433e17c7bb 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -1469,10 +1469,9 @@ void XclImpTextObj::DoPreProcessSdrObj( XclImpDffConverter& rDffConv, SdrObject&
// rich text
std::unique_ptr< EditTextObject > xEditObj(
XclImpStringHelper::CreateTextObject( GetRoot(), *maTextData.mxString ) );
- OutlinerParaObject* pOutlineObj = new OutlinerParaObject( *xEditObj );
+ std::unique_ptr<OutlinerParaObject> pOutlineObj(new OutlinerParaObject( *xEditObj ));
pOutlineObj->SetOutlinerMode( OutlinerMode::TextObject );
- // text object takes ownership of the outliner object
- pTextObj->NbcSetOutlinerParaObject( pOutlineObj );
+ pTextObj->NbcSetOutlinerParaObject( std::move(pOutlineObj) );
}
else
{
diff --git a/sc/source/ui/unoobj/editsrc.cxx b/sc/source/ui/unoobj/editsrc.cxx
index 1b604a517949..86c44fc08b38 100644
--- a/sc/source/ui/unoobj/editsrc.cxx
+++ b/sc/source/ui/unoobj/editsrc.cxx
@@ -179,10 +179,10 @@ void ScAnnotationEditSource::UpdateData()
if( SdrObject* pObj = GetCaptionObj() )
{
std::unique_ptr<EditTextObject> pEditObj = pEditEngine->CreateTextObject();
- OutlinerParaObject* pOPO = new OutlinerParaObject( *pEditObj );
+ std::unique_ptr<OutlinerParaObject> pOPO( new OutlinerParaObject( *pEditObj ) );
pEditObj.reset();
pOPO->SetOutlinerMode( OutlinerMode::TextObject );
- pObj->NbcSetOutlinerParaObject( pOPO );
+ pObj->NbcSetOutlinerParaObject( std::move(pOPO) );
pObj->ActionChanged();
}
diff --git a/sd/inc/textapi.hxx b/sd/inc/textapi.hxx
index d81ecf4b4ce2..00a60d13791d 100644
--- a/sd/inc/textapi.hxx
+++ b/sd/inc/textapi.hxx
@@ -40,7 +40,7 @@ public:
/// @throws css::uno::RuntimeException
void dispose();
- OutlinerParaObject* CreateText();
+ std::unique_ptr<OutlinerParaObject> CreateText();
void SetText( OutlinerParaObject const & rText );
OUString GetText();
diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx
index b938697eba50..171d2b345d63 100644
--- a/sd/source/core/drawdoc4.cxx
+++ b/sd/source/core/drawdoc4.cxx
@@ -904,7 +904,7 @@ void SdDrawDocument::SpellObject(SdrTextObj* pObj)
if (mbHasOnlineSpellErrors)
{
- OutlinerParaObject* pOPO = pOutl->CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pOPO = pOutl->CreateParaObject();
if (pOPO)
{
if (!( *pOPO == *pObj->GetOutlinerParaObject() ) ||
@@ -914,11 +914,9 @@ void SdDrawDocument::SpellObject(SdrTextObj* pObj)
// taking text from the outliner
// use non-broadcasting version to avoid O(n^2)
- pObj->NbcSetOutlinerParaObject( pOPO );
- pOPO = nullptr;
+ pObj->NbcSetOutlinerParaObject( std::move(pOPO) );
}
}
- delete pOPO;
}
}
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 539932c8e9dc..1746ea72cbd8 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -2097,8 +2097,9 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
SdOutliner* pOutl = rModel.GetInternalOutliner();
pOutl->Clear();
pOutl->SetText( *pOutlParaObj );
- pOutlParaObj = pOutl->CreateParaObject();
- pNewObj->SetOutlinerParaObject( pOutlParaObj );
+ std::unique_ptr<OutlinerParaObject> pNew = pOutl->CreateParaObject();
+ pOutlParaObj = pNew.get();
+ pNewObj->SetOutlinerParaObject( std::move(pNew) );
pOutl->Clear();
pNewObj->SetEmptyPresObj(false);
@@ -2155,8 +2156,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
SdOutliner* pOutl = rModel.GetInternalOutliner();
pOutl->Clear();
pOutl->SetText( *pOutlParaObj );
- pOutlParaObj = pOutl->CreateParaObject();
- pNewObj->SetOutlinerParaObject( pOutlParaObj );
+ pNewObj->SetOutlinerParaObject( pOutl->CreateParaObject() );
pOutl->Clear();
pNewObj->SetEmptyPresObj(false);
diff --git a/sd/source/core/text/textapi.cxx b/sd/source/core/text/textapi.cxx
index 4965b84a471b..ec968c510f6e 100644
--- a/sd/source/core/text/textapi.cxx
+++ b/sd/source/core/text/textapi.cxx
@@ -64,7 +64,7 @@ UndoTextAPIChanged::UndoTextAPIChanged(SdrModel& rModel, TextApiObject* pTextObj
void UndoTextAPIChanged::Undo()
{
if( !mpNewText )
- mpNewText.reset( mxTextObj->CreateText() );
+ mpNewText = mxTextObj->CreateText();
mxTextObj->SetText( *mpOldText );
}
@@ -99,7 +99,7 @@ public:
void Dispose();
void SetText( OutlinerParaObject const & rText );
- OutlinerParaObject* CreateText();
+ std::unique_ptr<OutlinerParaObject> CreateText();
OUString GetText();
SdDrawDocument* GetDoc() { return m_xImpl->mpDoc; }
};
@@ -150,7 +150,7 @@ void TextApiObject::dispose()
}
-OutlinerParaObject* TextApiObject::CreateText()
+std::unique_ptr<OutlinerParaObject> TextApiObject::CreateText()
{
return mpSource->CreateText();
}
@@ -247,7 +247,7 @@ void TextAPIEditSource::SetText( OutlinerParaObject const & rText )
}
}
-OutlinerParaObject* TextAPIEditSource::CreateText()
+std::unique_ptr<OutlinerParaObject> TextAPIEditSource::CreateText()
{
if (m_xImpl->mpDoc && m_xImpl->mpOutliner)
return m_xImpl->mpOutliner->CreateParaObject();
diff --git a/sd/source/filter/xml/sdtransform.cxx b/sd/source/filter/xml/sdtransform.cxx
index f496e353be0e..ca1bfb12bbb8 100644
--- a/sd/source/filter/xml/sdtransform.cxx
+++ b/sd/source/filter/xml/sdtransform.cxx
@@ -29,6 +29,7 @@
#include <editeng/eeitem.hxx>
#include <editeng/lrspitem.hxx>
#include <editeng/numitem.hxx>
+#include <editeng/outlobj.hxx>
#include <drawdoc.hxx>
#include <glob.hxx>
diff --git a/sd/source/filter/xml/sdxmlwrp.cxx b/sd/source/filter/xml/sdxmlwrp.cxx
index ddeb44fc778c..cd7d5e86abd7 100644
--- a/sd/source/filter/xml/sdxmlwrp.cxx
+++ b/sd/source/filter/xml/sdxmlwrp.cxx
@@ -25,6 +25,7 @@
#include <com/sun/star/xml/sax/SAXParseException.hpp>
#include <comphelper/processfactory.hxx>
#include <comphelper/propertysequence.hxx>
+#include <editeng/outlobj.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/docfilt.hxx>
#include <sfx2/sfxsids.hrc>
diff --git a/sd/source/ui/annotations/annotationwindow.cxx b/sd/source/ui/annotations/annotationwindow.cxx
index 186728414c66..aefa5b680a64 100644
--- a/sd/source/ui/annotations/annotationwindow.cxx
+++ b/sd/source/ui/annotations/annotationwindow.cxx
@@ -606,14 +606,14 @@ void AnnotationWindow::Deactivate()
if( pTextApi )
{
- OutlinerParaObject* pOPO = Engine()->CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pOPO = Engine()->CreateParaObject();
if( pOPO )
{
if( mpDoc->IsUndoEnabled() )
mpDoc->BegUndo( SdResId( STR_ANNOTATION_UNDO_EDIT ) );
pTextApi->SetText( *pOPO );
- delete pOPO;
+ pOPO.reset();
// set current time to changed annotation
xAnnotation->setDateTime( getCurrentDateTime() );
diff --git a/sd/source/ui/dlg/headerfooterdlg.cxx b/sd/source/ui/dlg/headerfooterdlg.cxx
index 0963fb1023c0..f876f3d54221 100644
--- a/sd/source/ui/dlg/headerfooterdlg.cxx
+++ b/sd/source/ui/dlg/headerfooterdlg.cxx
@@ -21,6 +21,7 @@
#include <editeng/eeitem.hxx>
#include <editeng/flditem.hxx>
#include <editeng/langitem.hxx>
+#include <editeng/outlobj.hxx>
#include <svx/langbox.hxx>
#include <svx/svdotext.hxx>
#include <editeng/editeng.hxx>
diff --git a/sd/source/ui/docshell/docshel4.cxx b/sd/source/ui/docshell/docshel4.cxx
index 975b9af9dd56..54efa8178a26 100644
--- a/sd/source/ui/docshell/docshel4.cxx
+++ b/sd/source/ui/docshell/docshel4.cxx
@@ -24,6 +24,7 @@
#include <DrawDocShell.hxx>
#include <com/sun/star/document/PrinterIndependentLayout.hpp>
+#include <editeng/outlobj.hxx>
#include <o3tl/make_unique.hxx>
#include <tools/urlobj.hxx>
#include <sfx2/progress.hxx>
@@ -590,8 +591,8 @@ bool DrawDocShell::SaveAs( SfxMedium& rMedium )
SdrOutliner* pOutl = mpViewShell->GetView()->GetTextEditOutliner();
if( pObj && pOutl && pOutl->IsModified() )
{
- OutlinerParaObject* pNewText = pOutl->CreateParaObject( 0, pOutl->GetParagraphCount() );
- pObj->SetOutlinerParaObject( pNewText );
+ std::unique_ptr<OutlinerParaObject> pNewText = pOutl->CreateParaObject( 0, pOutl->GetParagraphCount() );
+ pObj->SetOutlinerParaObject( std::move(pNewText) );
pOutl->ClearModifyFlag();
}
}
diff --git a/sd/source/ui/func/fuexpand.cxx b/sd/source/ui/func/fuexpand.cxx
index c0b54ec139b4..8406faf30000 100644
--- a/sd/source/ui/func/fuexpand.cxx
+++ b/sd/source/ui/func/fuexpand.cxx
@@ -185,7 +185,7 @@ void FuExpandPage::DoExecute( SfxRequest& )
if (!pTextObj)
continue;
- OutlinerParaObject* pOutlinerParaObject = pOutl->CreateParaObject( nParaPos, 1);
+ std::unique_ptr<OutlinerParaObject> pOutlinerParaObject = pOutl->CreateParaObject( nParaPos, 1);
pOutlinerParaObject->SetOutlinerMode(OutlinerMode::TitleObject);
if( pOutlinerParaObject->GetDepth(0) != -1 )
@@ -194,14 +194,14 @@ void FuExpandPage::DoExecute( SfxRequest& )
pTempOutl->SetText( *pOutlinerParaObject );
- delete pOutlinerParaObject;
+ pOutlinerParaObject.reset();
pTempOutl->SetDepth( pTempOutl->GetParagraph( 0 ), -1 );
pOutlinerParaObject = pTempOutl->CreateParaObject();
}
- pTextObj->SetOutlinerParaObject(pOutlinerParaObject);
+ pTextObj->SetOutlinerParaObject(std::move(pOutlinerParaObject));
pTextObj->SetEmptyPresObj(false);
@@ -215,7 +215,7 @@ void FuExpandPage::DoExecute( SfxRequest& )
if (pOutlineObj)
{
// create structuring text objects
- OutlinerParaObject* pOPO = pOutl->CreateParaObject(++nParaPos, nChildCount);
+ std::unique_ptr<OutlinerParaObject> pOPO = pOutl->CreateParaObject(++nParaPos, nChildCount);
std::unique_ptr<SdrOutliner> pTempOutl = SdrMakeOutliner(OutlinerMode::OutlineObject, *mpDoc);
pTempOutl->SetText( *pOPO );
@@ -229,11 +229,10 @@ void FuExpandPage::DoExecute( SfxRequest& )
pTempOutl->GetDepth( nPara ) - 1);
}
- delete pOPO;
pOPO = pTempOutl->CreateParaObject();
pTempOutl.reset();
- pOutlineObj->SetOutlinerParaObject( pOPO );
+ pOutlineObj->SetOutlinerParaObject( std::move(pOPO) );
pOutlineObj->SetEmptyPresObj(false);
// remove hard attributes (Flag to sal_True)
diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index 8743db87416e..2ba29aa2e041 100644
--- a/sd/source/ui/func/fuinsert.cxx
+++ b/sd/source/ui/func/fuinsert.cxx
@@ -21,6 +21,7 @@
#include <fuinsert.hxx>
#include <comphelper/storagehelper.hxx>
+#include <editeng/outlobj.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <svx/svxdlg.hxx>
#include <com/sun/star/embed/EmbedVerbs.hpp>
diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx
index f57a8556137a..a71502a61b45 100644
--- a/sd/source/ui/func/fuinsfil.cxx
+++ b/sd/source/ui/func/fuinsfil.cxx
@@ -493,19 +493,18 @@ void FuInsertFile::InsTextOrRTFinDrMode(SfxMedium* pMedium)
}
}
- OutlinerParaObject* pOPO = pOutliner->CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pOPO = pOutliner->CreateParaObject();
if (pOutlinerView)
{
pOutlinerView->InsertText(*pOPO);
- delete pOPO;
}
else
{
SdrRectObj* pTO = new SdrRectObj(
mpView->getSdrModelFromSdrView(),
OBJ_TEXT);
- pTO->SetOutlinerParaObject(pOPO);
+ pTO->SetOutlinerParaObject(std::move(pOPO));
const bool bUndo = mpView->IsUndoEnabled();
if( bUndo )
diff --git a/sd/source/ui/func/fumorph.cxx b/sd/source/ui/func/fumorph.cxx
index 92e7ed2d488d..45fd78f522a3 100644
--- a/sd/source/ui/func/fumorph.cxx
+++ b/sd/source/ui/func/fumorph.cxx
@@ -25,6 +25,7 @@
#include <svx/svdopath.hxx>
#include <svx/svdogrp.hxx>
#include <editeng/eeitem.hxx>
+#include <editeng/outlobj.hxx>
#include <View.hxx>
#include <ViewShell.hxx>
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 8d5b591de045..d380d2e55bef 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -553,10 +553,9 @@ void SlotManager::GetMenuState (SfxItemSet& rSet)
SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( pObj );
if( pTextObj )
{
- OutlinerParaObject* pParaObj = pTextObj->GetEditOutlinerParaObject();
+ std::unique_ptr<OutlinerParaObject> pParaObj = pTextObj->GetEditOutlinerParaObject();
if( pParaObj )
{
- delete pParaObj;
bDisable = false;
}
}
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index 184b22be9151..6c69c5e266fa 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -1066,7 +1066,7 @@ namespace {
{
public:
OutlinerPrinterPage (
- OutlinerParaObject* pParaObject,
+ std::unique_ptr<OutlinerParaObject> pParaObject,
const MapMode& rMapMode,
const OUString& rsPageString,
const Point& rPageStringOffset,
@@ -1075,15 +1075,10 @@ namespace {
const sal_uInt16 nPaperTray)
: PrinterPage(PageKind::Handout, rMapMode, false, rsPageString,
rPageStringOffset, nDrawMode, eOrientation, nPaperTray),
- mpParaObject(pParaObject)
+ mpParaObject(std::move(pParaObject))
{
}
- virtual ~OutlinerPrinterPage() override
- {
- mpParaObject.reset();
- }
-
virtual void Print (
Printer& rPrinter,
SdDrawDocument& rDocument,
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index c7bd428a3a10..af5b57298246 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -2338,7 +2338,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
OutlinerMode nOutlMode = pOutl->GetMode();
pOutl->SetStyleSheet( 0, nullptr );
pOutl->QuickInsertField( *pFieldItem, ESelection() );
- OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pOutlParaObject = pOutl->CreateParaObject();
SdrRectObj* pRectObj = new SdrRectObj(
*GetDoc(),
@@ -2360,7 +2360,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
::tools::Rectangle aLogicRect(aPos, aSize);
pRectObj->SetLogicRect(aLogicRect);
- pRectObj->SetOutlinerParaObject( pOutlParaObject );
+ pRectObj->SetOutlinerParaObject( std::move(pOutlParaObject) );
mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
pOutl->Init( nOutlMode );
}
diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index 33fdf1edf914..a6634821ad7c 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -379,10 +379,9 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( pObj );
if( pTextObj )
{
- OutlinerParaObject* pParaObj = pTextObj->GetEditOutlinerParaObject();
+ std::unique_ptr<OutlinerParaObject> pParaObj = pTextObj->GetEditOutlinerParaObject();
if( pParaObj )
{
- delete pParaObj;
bDisable = false;
}
}
diff --git a/sd/source/ui/view/drviews8.cxx b/sd/source/ui/view/drviews8.cxx
index ca2128ccd556..d21a3ad1eaa1 100644
--- a/sd/source/ui/view/drviews8.cxx
+++ b/sd/source/ui/view/drviews8.cxx
@@ -22,6 +22,7 @@
#include <ViewShellHint.hxx>
#include <com/sun/star/scanner/XScannerManager2.hpp>
+#include <editeng/outlobj.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <sfx2/dispatch.hxx>
#include <svx/svxids.hrc>
diff --git a/sd/source/ui/view/drviews9.cxx b/sd/source/ui/view/drviews9.cxx
index b253e25098ec..c6db972461c7 100644
--- a/sd/source/ui/view/drviews9.cxx
+++ b/sd/source/ui/view/drviews9.cxx
@@ -20,6 +20,7 @@
#include <config_features.h>
#include <DrawViewShell.hxx>
+#include <editeng/outlobj.hxx>
#include <vcl/wrkwin.hxx>
#include <svx/xgrad.hxx>
#include <svx/svdpagv.hxx>
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 0792f0cc281a..eaf4612ef6b9 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -31,6 +31,7 @@
#include <vcl/waitobj.hxx>
#include <svl/aeitem.hxx>
#include <editeng/editstat.hxx>
+#include <editeng/outlobj.hxx>
#include <vcl/weld.hxx>
#include <svl/urlbmk.hxx>
#include <svx/svdpagv.hxx>
@@ -1456,7 +1457,7 @@ void DrawViewShell::InsertURLField(const OUString& rURL, const OUString& rText,
aURLField.SetTargetFrame(rTarget);
SvxFieldItem aURLItem(aURLField, EE_FEATURE_FIELD);
pOutl->QuickInsertField( aURLItem, ESelection() );
- OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pOutlParaObject = pOutl->CreateParaObject();
SdrRectObj* pRectObj = new SdrRectObj(
GetView()->getSdrModelFromSdrView(),
@@ -1476,7 +1477,7 @@ void DrawViewShell::InsertURLField(const OUString& rURL, const OUString& rText,
::tools::Rectangle aLogicRect(aPos, aSize);
pRectObj->SetLogicRect(aLogicRect);
- pRectObj->SetOutlinerParaObject( pOutlParaObject );
+ pRectObj->SetOutlinerParaObject( std::move(pOutlParaObject) );
mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
pOutl->Init( nOutlMode );
}
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index 2434813299e6..e8de41e29cb1 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -971,10 +971,9 @@ void OutlineViewShell::GetMenuState( SfxItemSet &rSet )
SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( pObj );
if( pTextObj )
{
- OutlinerParaObject* pParaObj = pTextObj->GetEditOutlinerParaObject();
+ std::unique_ptr<OutlinerParaObject> pParaObj = pTextObj->GetEditOutlinerParaObject();
if( pParaObj )
{
- delete pParaObj;
bDisable = false;
}
}
@@ -1593,7 +1592,9 @@ void OutlineViewShell::UpdateTitleObject( SdPage* pPage, Paragraph const * pPara
}
// if we have a title object and a text, set the text
- OutlinerParaObject* pOPO = pTO ? rOutliner.CreateParaObject(rOutliner.GetAbsPos(pPara), 1) : nullptr;
+ std::unique_ptr<OutlinerParaObject> pOPO;
+ if (pTO)
+ pOPO = rOutliner.CreateParaObject(rOutliner.GetAbsPos(pPara), 1);
if (pOPO)
{
pOPO->SetOutlinerMode( OutlinerMode::TitleObject );
@@ -1601,7 +1602,6 @@ void OutlineViewShell::UpdateTitleObject( SdPage* pPage, Paragraph const * pPara
if( pTO->GetOutlinerParaObject() && (pOPO->GetTextObject() == pTO->GetOutlinerParaObject()->GetTextObject()) )
{
// do nothing, same text already set
- delete pOPO;
}
else
{
@@ -1609,7 +1609,7 @@ void OutlineViewShell::UpdateTitleObject( SdPage* pPage, Paragraph const * pPara
if( !bNewObject && pOlView->isRecordingUndo() )
pOlView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoObjectSetText(*pTO,0));
- pTO->SetOutlinerParaObject( pOPO );
+ pTO->SetOutlinerParaObject( std::move(pOPO) );
pTO->SetEmptyPresObj( false );
pTO->ActionChanged();
}
@@ -1654,7 +1654,7 @@ void OutlineViewShell::UpdateOutlineObject( SdPage* pPage, Paragraph* pPara )
return;
::Outliner& rOutliner = pOlView->GetOutliner();
- OutlinerParaObject* pOPO = nullptr;
+ std::unique_ptr<OutlinerParaObject> pOPO;
SdrTextObj* pTO = nullptr;
bool bNewObject = false;
@@ -1703,20 +1703,17 @@ void OutlineViewShell::UpdateOutlineObject( SdPage* pPage, Paragraph* pPara )
if( pTO->GetOutlinerParaObject() && (pOPO->GetTextObject() == pTO->GetOutlinerParaObject()->GetTextObject()) )
{
// do nothing, same text already set
- delete pOPO;
}
else
{
if( !bNewObject && pOlView->isRecordingUndo() )
pOlView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoObjectSetText(*pTO,0));
- pTO->SetOutlinerParaObject( pOPO );
+ pTO->SetOutlinerParaObject( std::move(pOPO) );
pTO->SetEmptyPresObj( false );
pTO->ActionChanged();
}
}
- else
- delete pOPO;
}
else if( pTO )
{
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index 1d04b5ecc3c1..534a484ce810 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -1339,11 +1339,10 @@ SvtScriptType OutlineView::GetScriptType() const
{
SvtScriptType nScriptType = ::sd::View::GetScriptType();
- OutlinerParaObject* pTempOPObj = mrOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pTempOPObj = mrOutliner.CreateParaObject();
if(pTempOPObj)
{
nScriptType = pTempOPObj->GetTextObject().GetScriptType();
- delete pTempOPObj;
}
return nScriptType;
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index d03cc9dfede4..ca98672ef38c 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -21,6 +21,7 @@
#include <com/sun/star/linguistic2/XSpellChecker1.hpp>
#include <View.hxx>
+#include <editeng/outlobj.hxx>
#include <editeng/unolingu.hxx>
#include <sfx2/request.hxx>
#include <svx/obj3d.hxx>
diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx
index fa9a48ea1a2c..61671f11d991 100644
--- a/sd/source/ui/view/sdview4.cxx
+++ b/sd/source/ui/view/sdview4.cxx
@@ -21,6 +21,7 @@
#include <View.hxx>
#include <osl/file.hxx>
+#include <editeng/outlobj.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/request.hxx>
#include <sfx2/docfilt.hxx>
diff --git a/sd/source/ui/view/viewshe2.cxx b/sd/source/ui/view/viewshe2.cxx
index 2b45314c419a..885422b508c5 100644
--- a/sd/source/ui/view/viewshe2.cxx
+++ b/sd/source/ui/view/viewshe2.cxx
@@ -36,6 +36,7 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/app.hxx>
#include <svx/ruler.hxx>
+#include <editeng/outlobj.hxx>
#include <editeng/outliner.hxx>
#include <svtools/ehdl.hxx>
#include <svx/svdoole2.hxx>
diff --git a/svx/source/accessibility/AccessibleShape.cxx b/svx/source/accessibility/AccessibleShape.cxx
index 19d9c2fed299..728871ed827a 100644
--- a/svx/source/accessibility/AccessibleShape.cxx
+++ b/svx/source/accessibility/AccessibleShape.cxx
@@ -161,7 +161,7 @@ void AccessibleShape::Init()
OutlinerParaObject* pOutlinerParaObject = nullptr;
if( pTextObj )
- pOutlinerParaObject = pTextObj->GetEditOutlinerParaObject(); // Get the OutlinerParaObject if text edit is active
+ pOutlinerParaObject = pTextObj->GetEditOutlinerParaObject().release(); // Get the OutlinerParaObject if text edit is active
bool bOwnParaObj = pOutlinerParaObject != nullptr;
diff --git a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
index 2a62c0ac1daf..39d1f83cde8c 100644
--- a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
@@ -53,6 +53,7 @@
#include <com/sun/star/document/XActionLockable.hpp>
#include <cppuhelper/implbase.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <o3tl/make_unique.hxx>
using namespace css;
using namespace css::uno;
@@ -194,7 +195,7 @@ SdrObject* EnhancedCustomShapeEngine::ImplForceGroupWithText(
OutlinerParaObject* pParaObj(rSdrObjCustomShape.GetOutlinerParaObject());
if( pParaObj )
- pTextObj->NbcSetOutlinerParaObject( new OutlinerParaObject(*pParaObj) );
+ pTextObj->NbcSetOutlinerParaObject( o3tl::make_unique<OutlinerParaObject>(*pParaObj) );
// copy all attributes
SfxItemSet aTargetItemSet(rSdrObjCustomShape.GetMergedItemSet());
diff --git a/svx/source/inc/cell.hxx b/svx/source/inc/cell.hxx
index 2f9a9dfec8c7..82428de96fe5 100644
--- a/svx/source/inc/cell.hxx
+++ b/svx/source/inc/cell.hxx
@@ -71,7 +71,7 @@ public:
SVX_DLLPRIVATE const ::tools::Rectangle& getCellRect() const { return maCellRect; }
SVX_DLLPRIVATE ::tools::Rectangle& getCellRect() { return maCellRect; }
- OutlinerParaObject* GetEditOutlinerParaObject() const;
+ std::unique_ptr<OutlinerParaObject> GetEditOutlinerParaObject() const;
SVX_DLLPRIVATE void SetStyleSheet( SfxStyleSheet* pStyleSheet, bool bDontRemoveHardAttr );
SVX_DLLPRIVATE virtual SfxStyleSheet* GetStyleSheet() const override;
SVX_DLLPRIVATE void TakeTextAnchorRect(tools::Rectangle& rAnchorRect) const;
@@ -168,7 +168,7 @@ public:
// XEventListener
SVX_DLLPRIVATE virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override;
- SVX_DLLPRIVATE virtual void SetOutlinerParaObject( OutlinerParaObject* pTextObject ) override;
+ SVX_DLLPRIVATE virtual void SetOutlinerParaObject( std::unique_ptr<OutlinerParaObject> pTextObject ) override;
SVX_DLLPRIVATE void AddUndo();
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index 452971758bbc..4ee872eb681e 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -545,12 +545,11 @@ namespace drawinglayer
if(bInEditMode)
{
- OutlinerParaObject* pTempObj = rTextObj.GetEditOutlinerParaObject();
+ std::unique_ptr<OutlinerParaObject> pTempObj = rTextObj.GetEditOutlinerParaObject();
if(pTempObj)
{
aOutlinerParaObject = *pTempObj;
- delete pTempObj;
}
else
{
diff --git a/svx/source/sdr/properties/textproperties.cxx b/svx/source/sdr/properties/textproperties.cxx
index 503872cb4ba6..1ca04d65a628 100644
--- a/svx/source/sdr/properties/textproperties.cxx
+++ b/svx/source/sdr/properties/textproperties.cxx
@@ -128,10 +128,10 @@ namespace sdr
mpItemSet->Put(aNewSet);
}
- OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = pOutliner->CreateParaObject(0, nParaCount);
pOutliner->Clear();
- rObj.NbcSetOutlinerParaObjectForText(pTemp,pText);
+ rObj.NbcSetOutlinerParaObjectForText(std::move(pTemp),pText);
}
}
}
@@ -187,10 +187,10 @@ namespace sdr
ESelection aSelection( 0, 0, EE_PARA_ALL, EE_TEXTPOS_ALL);
rOutliner.RemoveAttribs(aSelection, true, 0);
- OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = rOutliner.CreateParaObject(0, nParaCount);
rOutliner.Clear();
- rObj.NbcSetOutlinerParaObjectForText( pTemp, pText );
+ rObj.NbcSetOutlinerParaObjectForText( std::move(pTemp), pText );
}
}
}
@@ -338,9 +338,9 @@ namespace sdr
delete pTempSet;
}
- OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = rOutliner.CreateParaObject(0, nParaCount);
rOutliner.Clear();
- rObj.NbcSetOutlinerParaObjectForText(pTemp, pText);
+ rObj.NbcSetOutlinerParaObjectForText(std::move(pTemp), pText);
}
}
}
@@ -518,8 +518,8 @@ namespace sdr
if(bBurnIn)
{
- OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, nParaCount);
- rObj.NbcSetOutlinerParaObjectForText(pTemp,pText);
+ std::unique_ptr<OutlinerParaObject> pTemp = pOutliner->CreateParaObject(0, nParaCount);
+ rObj.NbcSetOutlinerParaObjectForText(std::move(pTemp),pText);
}
}
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 18c4ebf0ca03..85ca2a280b08 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -41,8 +41,10 @@
#include <svx/strings.hrc>
#include <svx/svdoashp.hxx>
#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+#include <o3tl/make_unique.hxx>
#include <memory>
#include <vector>
+
using ::std::vector;
using namespace com::sun::star;
@@ -1573,7 +1575,7 @@ void SdrEditView::ImpDismantleOneObject(const SdrObject* pObj, SdrObjList& rOL,
if(pLast && pSrcPath->GetOutlinerParaObject())
{
- pLast->SetOutlinerParaObject(new OutlinerParaObject(*pSrcPath->GetOutlinerParaObject()));
+ pLast->SetOutlinerParaObject(o3tl::make_unique<OutlinerParaObject>(*pSrcPath->GetOutlinerParaObject()));
}
}
else if(pCustomShape)
@@ -1613,7 +1615,7 @@ void SdrEditView::ImpDismantleOneObject(const SdrObject* pObj, SdrObjList& rOL,
OutlinerParaObject* pParaObj = pCustomShape->GetOutlinerParaObject();
if(pParaObj)
{
- pTextObj->NbcSetOutlinerParaObject(new OutlinerParaObject(*pParaObj));
+ pTextObj->NbcSetOutlinerParaObject(o3tl::make_unique<OutlinerParaObject>(*pParaObj));
}
// copy all attributes
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index ff40fc85c5a9..2003ecf667b6 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -2624,10 +2624,10 @@ void SdrObjEditView::ApplyFormatPaintBrushToText( SfxItemSet const & rFormatSet,
rOutliner.SetParaAttribs(nPara, aSet);
}
- OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = rOutliner.CreateParaObject(0, nParaCount);
rOutliner.Clear();
- rTextObj.NbcSetOutlinerParaObjectForText(pTemp,pText);
+ rTextObj.NbcSetOutlinerParaObjectForText(std::move(pTemp),pText);
}
}
}
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index 23308b4eaf40..3ff61483d2b3 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -2634,7 +2634,7 @@ void SdrObjCustomShape::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle&
// put text into the Outliner - if necessary the use the text from the EditOutliner
OutlinerParaObject* pPara= GetOutlinerParaObject();
if (pEdtOutl && !bNoEditText)
- pPara=pEdtOutl->CreateParaObject();
+ pPara=pEdtOutl->CreateParaObject().release();
if (pPara)
{
@@ -2728,9 +2728,9 @@ void SdrObjCustomShape::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle&
rTextRect=tools::Rectangle(aTextPos,aTextSiz);
}
-void SdrObjCustomShape::NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject)
+void SdrObjCustomShape::NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject)
{
- SdrTextObj::NbcSetOutlinerParaObject( pTextObject );
+ SdrTextObj::NbcSetOutlinerParaObject( std::move(pTextObject) );
SetBoundRectDirty();
SetRectsDirty(true);
InvalidateRenderGeometry();
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index f936e8c4bf3b..663c4b07083a 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1735,10 +1735,10 @@ void SdrObject::dumpAsXml(xmlTextWriterPtr pWriter) const
xmlTextWriterEndElement(pWriter);
}
-void SdrObject::SetOutlinerParaObject(OutlinerParaObject* pTextObject)
+void SdrObject::SetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject)
{
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
- NbcSetOutlinerParaObject(pTextObject);
+ NbcSetOutlinerParaObject(std::move(pTextObject));
SetChanged();
BroadcastObjectChange();
if (GetCurrentBoundRect()!=aBoundRect0) {
@@ -1746,7 +1746,7 @@ void SdrObject::SetOutlinerParaObject(OutlinerParaObject* pTextObject)
}
}
-void SdrObject::NbcSetOutlinerParaObject(OutlinerParaObject* /*pTextObject*/)
+void SdrObject::NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> /*pTextObject*/)
{
}
diff --git a/svx/source/svdraw/svdomeas.cxx b/svx/source/svdraw/svdomeas.cxx
index 53aa58ba4f06..b0738696d733 100644
--- a/svx/source/svdraw/svdomeas.cxx
+++ b/svx/source/svdraw/svdomeas.cxx
@@ -1285,9 +1285,9 @@ OutlinerParaObject* SdrMeasureObj::GetOutlinerParaObject() const
return SdrTextObj::GetOutlinerParaObject();
}
-void SdrMeasureObj::NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject)
+void SdrMeasureObj::NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject)
{
- SdrTextObj::NbcSetOutlinerParaObject(pTextObject);
+ SdrTextObj::NbcSetOutlinerParaObject(std::move(pTextObject));
if(SdrTextObj::GetOutlinerParaObject())
SetTextDirty(); // recalculate text
}
diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx
index 40ea2dbb7f3b..feb7caf6700c 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -85,6 +85,7 @@
#include <svx/svdpage.hxx>
#include <rtl/ref.hxx>
#include <bitmaps.hlst>
+#include <o3tl/make_unique.hxx>
using namespace ::com::sun::star;
@@ -1195,7 +1196,7 @@ SdrObject* SdrOle2Obj::createSdrGrafObjReplacement(bool bAddText) const
if(pOPO)
{
- pClone->NbcSetOutlinerParaObject(new OutlinerParaObject(*pOPO));
+ pClone->NbcSetOutlinerParaObject(o3tl::make_unique<OutlinerParaObject>(*pOPO));
}
}
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 41bd67eb19d5..1e6780866101 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -206,10 +206,10 @@ void SdrTextObj::NbcSetText(const OUString& rStr)
rOutliner.SetStyleSheet( 0, GetStyleSheet());
rOutliner.SetUpdateMode(true);
rOutliner.SetText(rStr,rOutliner.GetParagraph( 0 ));
- OutlinerParaObject* pNewText=rOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pNewText=rOutliner.CreateParaObject();
Size aSiz(rOutliner.CalcTextSize());
rOutliner.Clear();
- NbcSetOutlinerParaObject(pNewText);
+ NbcSetOutlinerParaObject(std::move(pNewText));
aTextSize=aSiz;
bTextSizeDirty=false;
}
@@ -228,11 +228,11 @@ void SdrTextObj::NbcSetText(SvStream& rInput, const OUString& rBaseURL, EETextFo
SdrOutliner& rOutliner=ImpGetDrawOutliner();
rOutliner.SetStyleSheet( 0, GetStyleSheet());
rOutliner.Read(rInput,rBaseURL,eFormat);
- OutlinerParaObject* pNewText=rOutliner.CreateParaObject();
+ std::unique_ptr<OutlinerParaObject> pNewText=rOutliner.CreateParaObject();
rOutliner.SetUpdateMode(true);
Size aSiz(rOutliner.CalcTextSize());
rOutliner.Clear();
- NbcSetOutlinerParaObject(pNewText);
+ NbcSetOutlinerParaObject(std::move(pNewText));
aTextSize=aSiz;
bTextSizeDirty=false;
}
@@ -711,7 +711,7 @@ void SdrTextObj::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle& rTextRe
// put text into the outliner, if available from the edit outliner
SdrText* pText = getActiveText();
OutlinerParaObject* pOutlinerParaObject = pText ? pText->GetOutlinerParaObject() : nullptr;
- OutlinerParaObject* pPara = (pEdtOutl && !bNoEditText) ? pEdtOutl->CreateParaObject() : pOutlinerParaObject;
+ OutlinerParaObject* pPara = (pEdtOutl && !bNoEditText) ? pEdtOutl->CreateParaObject().release() : pOutlinerParaObject;
if (pPara)
{
@@ -802,9 +802,9 @@ void SdrTextObj::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle& rTextRe
rTextRect=aAnkRect;
}
-OutlinerParaObject* SdrTextObj::GetEditOutlinerParaObject() const
+std::unique_ptr<OutlinerParaObject> SdrTextObj::GetEditOutlinerParaObject() const
{
- OutlinerParaObject* pPara=nullptr;
+ std::unique_ptr<OutlinerParaObject> pPara;
if( HasTextImpl( pEdtOutl ) )
{
sal_Int32 nParaCount = pEdtOutl->GetParagraphCount();
@@ -1041,7 +1041,7 @@ SdrTextObj& SdrTextObj::operator=(const SdrTextObj& rObj)
// objects). In the current form it makes only sense to
// create locally and use locally on a known existing SdrText
const Outliner* pEO=rObj.pEdtOutl;
- OutlinerParaObject* pNewOutlinerParaObject = nullptr;
+ std::unique_ptr<OutlinerParaObject> pNewOutlinerParaObject;
if (pEO!=nullptr)
{
@@ -1049,10 +1049,10 @@ SdrTextObj& SdrTextObj::operator=(const SdrTextObj& rObj)
}
else
{
- pNewOutlinerParaObject = new OutlinerParaObject(*rObj.getActiveText()->GetOutlinerParaObject());
+ pNewOutlinerParaObject.reset( new OutlinerParaObject(*rObj.getActiveText()->GetOutlinerParaObject()) );
}
- pText->SetOutlinerParaObject( pNewOutlinerParaObject );
+ pText->SetOutlinerParaObject( std::move(pNewOutlinerParaObject) );
}
ImpSetTextStyleSheetListeners();
@@ -1394,15 +1394,15 @@ OutlinerParaObject* SdrTextObj::GetOutlinerParaObject() const
return nullptr;
}
-void SdrTextObj::NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject)
+void SdrTextObj::NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextObject)
{
- NbcSetOutlinerParaObjectForText( pTextObject, getActiveText() );
+ NbcSetOutlinerParaObjectForText( std::move(pTextObject), getActiveText() );
}
-void SdrTextObj::NbcSetOutlinerParaObjectForText( OutlinerParaObject* pTextObject, SdrText* pText )
+void SdrTextObj::NbcSetOutlinerParaObjectForText( std::unique_ptr<OutlinerParaObject> pTextObject, SdrText* pText )
{
if( pText )
- pText->SetOutlinerParaObject( pTextObject );
+ pText->SetOutlinerParaObject( std::move(pTextObject) );
if (pText && pText->GetOutlinerParaObject())
{
diff --git a/svx/source/svdraw/svdotxat.cxx b/svx/source/svdraw/svdotxat.cxx
index a28a5a698a3c..7a3490e3722d 100644
--- a/svx/source/svdraw/svdotxat.cxx
+++ b/svx/source/svdraw/svdotxat.cxx
@@ -420,9 +420,9 @@ void SdrTextObj::RemoveOutlinerCharacterAttribs( const std::vector<sal_uInt16>&
if(!pEdtOutl || (pText != getActiveText()) )
{
const sal_Int32 nParaCount = pOutliner->GetParagraphCount();
- OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = pOutliner->CreateParaObject(0, nParaCount);
pOutliner->Clear();
- NbcSetOutlinerParaObjectForText(pTemp, pText);
+ NbcSetOutlinerParaObjectForText(std::move(pTemp), pText);
}
}
}
diff --git a/svx/source/svdraw/svdotxed.cxx b/svx/source/svdraw/svdotxed.cxx
index bb3e60d9291b..172ebff4e6a0 100644
--- a/svx/source/svdraw/svdotxed.cxx
+++ b/svx/source/svdraw/svdotxed.cxx
@@ -270,8 +270,7 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl)
// to make the gray field background vanish again
rOutl.UpdateFields();
- bool bNewTextTransferred = false;
- OutlinerParaObject* pNewText = rOutl.CreateParaObject( 0, rOutl.GetParagraphCount() );
+ std::unique_ptr<OutlinerParaObject> pNewText = rOutl.CreateParaObject( 0, rOutl.GetParagraphCount() );
// need to end edit mode early since SetOutlinerParaObject already
// uses GetCurrentBoundRect() which needs to take the text into account
@@ -283,16 +282,11 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl)
GetTextChain()->SetSwitchingToNextBox(this, false);
if( getActiveText() )
{
- getActiveText()->SetOutlinerParaObject( pNewText);
- bNewTextTransferred = true;
+ getActiveText()->SetOutlinerParaObject( std::move(pNewText) );
}
} else { // If we are not doing in-chaining switching just set the ParaObject
- SetOutlinerParaObject(pNewText);
- bNewTextTransferred = true;
+ SetOutlinerParaObject(std::move(pNewText));
}
-
- if (!bNewTextTransferred)
- delete pNewText;
}
/* Chaining-related code */
diff --git a/svx/source/svdraw/svdtext.cxx b/svx/source/svdraw/svdtext.cxx
index 549578832885..dfbcc0daab7a 100644
--- a/svx/source/svdraw/svdtext.cxx
+++ b/svx/source/svdraw/svdtext.cxx
@@ -56,7 +56,7 @@ void SdrText::CheckPortionInfo( SdrOutliner& rOutliner )
if(mpOutlinerParaObject!=nullptr && rOutliner.ShouldCreateBigTextObject())
{
// #i102062# MemoryLeak closed
- mpOutlinerParaObject.reset( rOutliner.CreateParaObject() );
+ mpOutlinerParaObject = rOutliner.CreateParaObject();
}
}
}
@@ -72,21 +72,20 @@ const SfxItemSet& SdrText::GetItemSet() const
return const_cast< SdrText* >(this)->GetObjectItemSet();
}
-void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
+void SdrText::SetOutlinerParaObject( std::unique_ptr<OutlinerParaObject> pTextObject )
{
- if( mpOutlinerParaObject.get() != pTextObject )
- {
- // Update HitTestOutliner
- const SdrTextObj* pTestObj(mrObject.getSdrModelFromSdrObject().GetHitTestOutliner().GetTextObj());
+ assert ( !mpOutlinerParaObject || (mpOutlinerParaObject.get() != pTextObject.get()) );
- if(pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject.get())
- {
- mrObject.getSdrModelFromSdrObject().GetHitTestOutliner().SetTextObj(nullptr);
- }
+ // Update HitTestOutliner
+ const SdrTextObj* pTestObj(mrObject.getSdrModelFromSdrObject().GetHitTestOutliner().GetTextObj());
- mpOutlinerParaObject.reset(pTextObject);
- mbPortionInfoChecked = false;
+ if(pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject.get())
+ {
+ mrObject.getSdrModelFromSdrObject().GetHitTestOutliner().SetTextObj(nullptr);
}
+
+ mpOutlinerParaObject = std::move(pTextObject);
+ mbPortionInfoChecked = false;
}
OutlinerParaObject* SdrText::GetOutlinerParaObject() const
@@ -125,8 +124,7 @@ void SdrText::ForceOutlinerParaObject( OutlinerMode nOutlMode )
Outliner& aDrawOutliner(mrObject.getSdrModelFromSdrObject().GetDrawOutliner());
pOutliner->SetCalcFieldValueHdl( aDrawOutliner.GetCalcFieldValueHdl() );
pOutliner->SetStyleSheet( 0, GetStyleSheet());
- OutlinerParaObject* pOutlinerParaObject = pOutliner->CreateParaObject();
- SetOutlinerParaObject( pOutlinerParaObject );
+ SetOutlinerParaObject( pOutliner->CreateParaObject() );
}
}
}
diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx
index 9741dd1ab5c3..cb5e6d3e2bbe 100644
--- a/svx/source/svdraw/svdundo.cxx
+++ b/svx/source/svdraw/svdundo.cxx
@@ -46,6 +46,7 @@
#include <svx/svdotable.hxx> // #i124389#
#include <vcl/svapp.hxx>
#include <sfx2/viewsh.hxx>
+#include <o3tl/make_unique.hxx>
// iterates over all views and unmarks this SdrObject if it is marked
@@ -404,7 +405,7 @@ void SdrUndoAttrObj::Undo()
if(pTextUndo)
{
- pObj->SetOutlinerParaObject(new OutlinerParaObject(*pTextUndo));
+ pObj->SetOutlinerParaObject(o3tl::make_unique<OutlinerParaObject>(*pTextUndo));
}
}
@@ -482,7 +483,7 @@ void SdrUndoAttrObj::Redo()
// #i8508#
if(pTextRedo)
{
- pObj->SetOutlinerParaObject(new OutlinerParaObject(*pTextRedo));
+ pObj->SetOutlinerParaObject(o3tl::make_unique<OutlinerParaObject>(*pTextRedo));
}
}
@@ -1071,9 +1072,8 @@ void SdrUndoObjSetText::Undo()
if (pText)
{
// copy text for Undo, because the original now belongs to SetOutlinerParaObject()
- OutlinerParaObject* pText1 = pOldText ? new OutlinerParaObject(*pOldText) : nullptr;
- pText->SetOutlinerParaObject(pText1);
- pTarget->NbcSetOutlinerParaObjectForText(pText1, pText);
+ std::unique_ptr<OutlinerParaObject> pText1( pOldText ? new OutlinerParaObject(*pOldText) : nullptr );
+ pTarget->NbcSetOutlinerParaObjectForText(std::move(pText1), pText);
}
pTarget->SetEmptyPresObj(bEmptyPresObj);
@@ -1106,8 +1106,8 @@ void SdrUndoObjSetText::Redo()
if (pText)
{
// copy text for Undo, because the original now belongs to SetOutlinerParaObject()
- OutlinerParaObject* pText1 = pNewText ? new OutlinerParaObject(*pNewText) : nullptr;
- pTarget->NbcSetOutlinerParaObjectForText( pText1, pText );
+ std::unique_ptr<OutlinerParaObject> pText1( pNewText ? new OutlinerParaObject(*pNewText) : nullptr );
+ pTarget->NbcSetOutlinerParaObjectForText( std::move(pText1), pText );
}
pTarget->ActionChanged();
@@ -1165,10 +1165,10 @@ void SdrUndoObjSetText::SdrRepeat(SdrView& rView)
if( bUndo )
rView.AddUndo(new SdrUndoObjSetText(*pTextObj,0));
- OutlinerParaObject* pText1=pNewText.get();
- if (pText1!=nullptr)
- pText1 = new OutlinerParaObject(*pText1);
- pTextObj->SetOutlinerParaObject(pText1);
+ std::unique_ptr<OutlinerParaObject> pText1;
+ if (pNewText)
+ pText1.reset(new OutlinerParaObject(*pNewText));
+ pTextObj->SetOutlinerParaObject(std::move(pText1));
}
}
diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx
index 5cce8877e098..b3d473923633 100644
--- a/svx/source/svdraw/textchainflow.cxx
+++ b/svx/source/svdraw/textchainflow.cxx
@@ -154,9 +154,8 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
{
//GetTextChain()->SetNilChainingEvent(mpTargetLink, true);
// making whole text
- bool bNewTextTransferred = false;
// merges underflowing text with the one in the next box
- OutlinerParaObject *pNewText = mpUnderflChText->CreateMergedUnderflowParaObject(pOutl, mpNextLink->GetOutlinerParaObject());
+ std::unique_ptr<OutlinerParaObject> pNewText = mpUnderflChText->CreateMergedUnderflowParaObject(pOutl, mpNextLink->GetOutlinerParaObject());
// Set the other box empty; it will be replaced by the rest of the text if overflow occurs
if (!mpTargetLink->GetPreventChainable())
@@ -165,20 +164,18 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
// We store the size since NbcSetOutlinerParaObject can change it
//Size aOldSize = pOutl->GetMaxAutoPaperSize();
+ auto pNewTextTemp = pNewText.get(); // because we need to access it after a std::move
// This should not be done in editing mode!! //XXX
if (!mpTargetLink->IsInEditMode())
{
- mpTargetLink->NbcSetOutlinerParaObject(pNewText);
- bNewTextTransferred = true;
+ mpTargetLink->NbcSetOutlinerParaObject(std::move(pNewText));
}
// Restore size and set new text
//pOutl->SetMaxAutoPaperSize(aOldSize); // XXX (it seems to be working anyway without this)
- pOutl->SetText(*pNewText);
+ pOutl->SetText(*pNewTextTemp);
//GetTextChain()->SetNilChainingEvent(mpTargetLink, false);
- if (!bNewTextTransferred)
- delete pNewText;
// Check for new overflow
CheckForFlowEvents(pOutl);
@@ -201,7 +198,7 @@ void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pO
void TextChainFlow::impLeaveOnlyNonOverflowingText(SdrOutliner *pNonOverflOutl)
{
- OutlinerParaObject *pNewText = mpOverflChText->RemoveOverflowingText(pNonOverflOutl);
+ std::unique_ptr<OutlinerParaObject> pNewText = mpOverflChText->RemoveOverflowingText(pNonOverflOutl);
SAL_INFO("svx.chaining", "[TEXTCHAINFLOW - OF] SOURCE box set to "
<< pNewText->GetTextObject().GetParagraphCount() << " paras");
@@ -209,7 +206,7 @@ void TextChainFlow::impLeaveOnlyNonOverflowingText(SdrOutliner *pNonOverflOutl)
// adds it to current outliner anyway (useful in static decomposition)
pNonOverflOutl->SetText(*pNewText);
- mpTargetLink->NbcSetOutlinerParaObject(pNewText);
+ mpTargetLink->NbcSetOutlinerParaObject(std::move(pNewText));
// For some reason the paper size is lost after last instruction, so we set it.
pNonOverflOutl->SetPaperSize(Size(pNonOverflOutl->GetPaperSize().Width(),
pNonOverflOutl->GetTextHeight()));
@@ -224,14 +221,14 @@ void TextChainFlow::impMoveChainedTextToNextLink(SdrOutliner *pOverflOutl)
return;
}
- OutlinerParaObject *pNewText =
+ std::unique_ptr<OutlinerParaObject> pNewText =
mpOverflChText->InsertOverflowingText(pOverflOutl,
mpNextLink->GetOutlinerParaObject());
SAL_INFO("svx.chaining", "[TEXTCHAINFLOW - OF] DEST box set to "
<< pNewText->GetTextObject().GetParagraphCount() << " paras");
if (pNewText)
- mpNextLink->NbcSetOutlinerParaObject(pNewText);
+ mpNextLink->NbcSetOutlinerParaObject(std::move(pNewText));
// Set Deep Merge status
SAL_INFO("svx.chaining", "[DEEPMERGE] Setting deepMerge to "
@@ -273,8 +270,7 @@ void EditingTextChainFlow::CheckForFlowEvents(SdrOutliner *pFlowOutl)
void EditingTextChainFlow::impLeaveOnlyNonOverflowingText(SdrOutliner *pNonOverflOutl)
{
- OutlinerParaObject *pNewText = mpOverflChText->RemoveOverflowingText(pNonOverflOutl);
- delete pNewText;
+ std::unique_ptr<OutlinerParaObject> pNewText = mpOverflChText->RemoveOverflowingText(pNonOverflOutl);
//impSetTextForEditingOutliner(pNewText); //XXX: Don't call it since we do everything with NonOverflowingText::ToParaObject // XXX: You may need this for Underflow
// XXX: I'm not sure whether we need this (after all operations such as Paste don't change this - as far as I understand)
diff --git a/svx/source/table/accessiblecell.cxx b/svx/source/table/accessiblecell.cxx
index 75eba41d2d43..d2aa8fd866d4 100644
--- a/svx/source/table/accessiblecell.cxx
+++ b/svx/source/table/accessiblecell.cxx
@@ -71,7 +71,7 @@ void AccessibleCell::Init()
const vcl::Window* pWindow = maShapeTreeInfo.GetWindow ();
if( (pView != nullptr) && (pWindow != nullptr) && mxCell.is())
{
- OutlinerParaObject* pOutlinerParaObject = mxCell->GetEditOutlinerParaObject(); // Get the OutlinerParaObject if text edit is active
+ OutlinerParaObject* pOutlinerParaObject = mxCell->GetEditOutlinerParaObject().release(); // Get the OutlinerParaObject if text edit is active
bool bOwnParaObject = pOutlinerParaObject != nullptr;
diff --git a/svx/source/table/cell.cxx b/svx/source/table/cell.cxx
index ecd8666a4222..2e2f5fad140f 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -226,7 +226,7 @@ namespace sdr
if( mxCell.is() )
{
- OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject();
+ OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject().release();
const bool bOwnParaObj = pParaObj != nullptr;
@@ -279,9 +279,9 @@ namespace sdr
mpItemSet->Put(aNewSet);
}
- OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = pOutliner->CreateParaObject(0, nParaCount);
pOutliner->Clear();
- mxCell->SetOutlinerParaObject(pTemp);
+ mxCell->SetOutlinerParaObject(std::move(pTemp));
}
if( bOwnParaObj )
@@ -306,7 +306,7 @@ namespace sdr
rObj.SetVerticalWriting(bVertical);
// Set a cell vertical property
- OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject();
+ OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject().release();
const bool bOwnParaObj = pParaObj != nullptr;
@@ -327,7 +327,7 @@ namespace sdr
const SvxTextRotateItem* pRotateItem = static_cast<const SvxTextRotateItem*>(pNewItem);
// Set a cell vertical property
- OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject();
+ OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject().release();
const bool bOwnParaObj = pParaObj != nullptr;
@@ -509,7 +509,7 @@ void Cell::replaceContentAndFormating( const CellRef& xSourceCell )
if( xSourceCell.is() && mpProperties )
{
mpProperties->SetMergedItemSet( xSourceCell->GetObjectItemSet() );
- SetOutlinerParaObject( new OutlinerParaObject(*xSourceCell->GetOutlinerParaObject()) );
+ SetOutlinerParaObject( o3tl::make_unique<OutlinerParaObject>(*xSourceCell->GetOutlinerParaObject()) );
SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
SdrTableObj& rSourceTableObj = dynamic_cast< SdrTableObj& >( xSourceCell->GetObject() );
@@ -579,11 +579,10 @@ bool Cell::IsTextEditActive()
SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
if(rTableObj.getActiveCell().get() == this )
{
- OutlinerParaObject* pParaObj = rTableObj.GetEditOutlinerParaObject();
+ std::unique_ptr<OutlinerParaObject> pParaObj = rTableObj.GetEditOutlinerParaObject();
if( pParaObj != nullptr )
{
isActive = true;
- delete pParaObj;
}
}
return isActive;
@@ -611,7 +610,7 @@ bool Cell::hasText() const
}
-OutlinerParaObject* Cell::GetEditOutlinerParaObject() const
+std::unique_ptr<OutlinerParaObject> Cell::GetEditOutlinerParaObject() const
{
SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
if( rTableObj.getActiveCell().get() == this )
@@ -774,9 +773,9 @@ SdrTextHorzAdjust Cell::GetTextHorizontalAdjust() const
}
-void Cell::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
+void Cell::SetOutlinerParaObject( std::unique_ptr<OutlinerParaObject> pTextObject )
{
- SdrText::SetOutlinerParaObject( pTextObject );
+ SdrText::SetOutlinerParaObject( std::move(pTextObject) );
maSelection.nStartPara = EE_PARA_MAX_COUNT;
if( pTextObject == nullptr )
@@ -1572,10 +1571,10 @@ void SAL_CALL Cell::setAllPropertiesToDefault()
ESelection aSelection( 0, 0, EE_PARA_ALL, EE_TEXTPOS_ALL);
rOutliner.RemoveAttribs(aSelection, true, 0);
- OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, nParaCount);
+ std::unique_ptr<OutlinerParaObject> pTemp = rOutliner.CreateParaObject(0, nParaCount);
rOutliner.Clear();
- SetOutlinerParaObject(pTemp);
+ SetOutlinerParaObject(std::move(pTemp));
}
}
}
diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
index f376c52b521e..6a7dcd3f3427 100644
--- a/svx/source/table/svdotable.cxx
+++ b/svx/source/table/svdotable.cxx
@@ -1501,7 +1501,7 @@ void SdrTableObj::TakeTextRect( const CellPos& rPos, SdrOutliner& rOutliner, too
// set text at outliner, maybe from edit outliner
OutlinerParaObject* pPara= xCell->GetOutlinerParaObject();
if (pEdtOutl && !bNoEditText && mpImpl->mxActiveCell == xCell )
- pPara=pEdtOutl->CreateParaObject();
+ pPara=pEdtOutl->CreateParaObject().release();
if (pPara)
{
@@ -1863,7 +1863,7 @@ void SdrTableObj::EndTextEdit(SdrOutliner& rOutl)
if(rOutl.IsModified())
{
- OutlinerParaObject* pNewText = nullptr;
+ std::unique_ptr<OutlinerParaObject> pNewText;
Paragraph* p1stPara = rOutl.GetParagraph( 0 );
sal_Int32 nParaCnt = rOutl.GetParagraphCount();
@@ -1875,7 +1875,7 @@ void SdrTableObj::EndTextEdit(SdrOutliner& rOutl)
// create new text object
pNewText = rOutl.CreateParaObject( 0, nParaCnt );
}
- SetOutlinerParaObject(pNewText);
+ SetOutlinerParaObject(std::move(pNewText));
}
pEdtOutl = nullptr;
@@ -1898,7 +1898,7 @@ OutlinerParaObject* SdrTableObj::GetOutlinerParaObject() const
}
-void SdrTableObj::NbcSetOutlinerParaObject( OutlinerParaObject* pTextObject)
+void SdrTableObj::NbcSetOutlinerParaObject( std::unique_ptr<OutlinerParaObject> pTextObject)
{
CellRef xCell( getActiveCell() );
if( xCell.is() )
@@ -1911,7 +1911,7 @@ void SdrTableObj::NbcSetOutlinerParaObject( OutlinerParaObject* pTextObject)
getSdrModelFromSdrObject().GetHitTestOutliner().SetTextObj(nullptr);
}
- xCell->SetOutlinerParaObject( pTextObject );
+ xCell->SetOutlinerParaObject( std::move(pTextObject) );
SetTextSizeDirty();
NbcAdjustTextFrameWidthAndHeight();
}
diff --git a/svx/source/table/tablertfexporter.cxx b/svx/source/table/tablertfexporter.cxx
index 37d793de6df3..1cfaa372da6a 100644
--- a/svx/source/table/tablertfexporter.cxx
+++ b/svx/source/table/tablertfexporter.cxx
@@ -174,7 +174,7 @@ void SdrTableRtfExporter::WriteCell( sal_Int32 nCol, sal_Int32 nRow )
OUString aContent;
- OutlinerParaObject* pParaObj = xCell->GetEditOutlinerParaObject();
+ OutlinerParaObject* pParaObj = xCell->GetEditOutlinerParaObject().release();
bool bOwnParaObj = pParaObj != nullptr;
if( pParaObj == nullptr )
diff --git a/svx/source/table/tableundo.cxx b/svx/source/table/tableundo.cxx
index 913d8d1f716d..1f444ae0f660 100644
--- a/svx/source/table/tableundo.cxx
+++ b/svx/source/table/tableundo.cxx
@@ -20,6 +20,7 @@
#include <sdr/properties/textproperties.hxx>
#include <editeng/outlobj.hxx>
+#include <o3tl/make_unique.hxx>
#include <cell.hxx>
#include "tableundo.hxx"
@@ -107,7 +108,7 @@ void CellUndo::setDataToCell( const Data& rData )
mxCell->mpProperties.reset();
if( rData.mpOutlinerParaObject )
- mxCell->SetOutlinerParaObject( new OutlinerParaObject(*rData.mpOutlinerParaObject) );
+ mxCell->SetOutlinerParaObject( o3tl::make_unique<OutlinerParaObject>(*rData.mpOutlinerParaObject) );
else
mxCell->RemoveOutlinerParaObject();
diff --git a/svx/source/unodraw/unoshtxt.cxx b/svx/source/unodraw/unoshtxt.cxx
index af313e15731e..466f564602e1 100644
--- a/svx/source/unodraw/unoshtxt.cxx
+++ b/svx/source/unodraw/unoshtxt.cxx
@@ -547,7 +547,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder()
OutlinerParaObject* pOutlinerParaObject = nullptr;
SdrTextObj* pTextObj = dynamic_cast<SdrTextObj*>( mpObject );
if( pTextObj && pTextObj->getActiveText() == mpText )
- pOutlinerParaObject = pTextObj->GetEditOutlinerParaObject(); // Get the OutlinerParaObject if text edit is active
+ pOutlinerParaObject = pTextObj->GetEditOutlinerParaObject().release(); // Get the OutlinerParaObject if text edit is active
bool bOwnParaObj(false);
if( pOutlinerParaObject )
@@ -563,7 +563,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder()
if( mpText && bOwnParaObj && mpObject->IsEmptyPresObj() && pTextObj->IsReallyEdited() )
{
mpObject->SetEmptyPresObj( false );
- static_cast< SdrTextObj* >( mpObject)->NbcSetOutlinerParaObjectForText( pOutlinerParaObject, mpText );
+ static_cast< SdrTextObj* >( mpObject)->NbcSetOutlinerParaObjectForText( std::unique_ptr<OutlinerParaObject>(pOutlinerParaObject), mpText );
// #i103982# Here, due to mpObject->NbcSetOutlinerParaObjectForText, we LOSE ownership of the
// OPO, so do NOT delete it when leaving this method (!)
diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx
index 051c5f06b457..0ff19e5a82e0 100644
--- a/sw/source/core/fields/docufld.cxx
+++ b/sw/source/core/fields/docufld.cxx
@@ -45,6 +45,7 @@
#include <unotools/useroptions.hxx>
#include <unotools/syslocale.hxx>
#include <svl/zforlist.hxx>
+#include <o3tl/make_unique.hxx>
#include <tools/time.hxx>
#include <tools/datetime.hxx>
diff --git a/sw/source/core/fields/textapi.cxx b/sw/source/core/fields/textapi.cxx
index 89c248eb06cb..605b3d06e885 100644
--- a/sw/source/core/fields/textapi.cxx
+++ b/sw/source/core/fields/textapi.cxx
@@ -23,6 +23,7 @@
#include <docsh.hxx>
#include <editeng/eeitem.hxx>
#include <editeng/editeng.hxx>
+#include <editeng/outlobj.hxx>
#include <com/sun/star/text/XTextField.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
@@ -168,7 +169,7 @@ void SwTextAPIEditSource::SetString( const OUString& rText )
}
}
-OutlinerParaObject* SwTextAPIEditSource::CreateText()
+std::unique_ptr<OutlinerParaObject> SwTextAPIEditSource::CreateText()
{
if ( pImpl->mpPool && pImpl->mpOutliner )
return pImpl->mpOutliner->CreateParaObject();
diff --git a/sw/source/core/inc/textapi.hxx b/sw/source/core/inc/textapi.hxx
index 02a138fc764f..4c03c8dc62f3 100644
--- a/sw/source/core/inc/textapi.hxx
+++ b/sw/source/core/inc/textapi.hxx
@@ -47,7 +47,7 @@ public:
void Dispose();
void SetText( OutlinerParaObject const & rText );
void SetString( const OUString& rText );
- OutlinerParaObject* CreateText();
+ std::unique_ptr<OutlinerParaObject> CreateText();
OUString GetText();
};
@@ -58,7 +58,7 @@ public:
SwTextAPIObject( SwTextAPIEditSource* p);
virtual ~SwTextAPIObject() throw() override;
void DisposeEditSource() { pSource->Dispose(); }
- OutlinerParaObject* CreateText() { return pSource->CreateText(); }
+ std::unique_ptr<OutlinerParaObject> CreateText() { return pSource->CreateText(); }
void SetString( const OUString& rText ) { pSource->SetString( rText ); }
void SetText( OutlinerParaObject const & rText ) { pSource->SetText( rText ); }
OUString GetText() { return pSource->GetText(); }
diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx
index 74a2f6201e4b..af697e9b9030 100644
--- a/sw/source/core/layout/fly.cxx
+++ b/sw/source/core/layout/fly.cxx
@@ -24,6 +24,7 @@
#include <editeng/opaqitem.hxx>
#include <editeng/ulspitem.hxx>
#include <editeng/frmdiritem.hxx>
+#include <editeng/outlobj.hxx>
#include <drawdoc.hxx>
#include <fmtfsize.hxx>
#include <fmtclds.hxx>
diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx
index 97bfb73358b9..a758f6523295 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -97,6 +97,7 @@
#include <fmtmeta.hxx>
#include <calbck.hxx>
#include <rtl/strbuf.hxx>
+#include <editeng/outlobj.hxx>
#include <vector>
using namespace ::com::sun::star;
@@ -1354,7 +1355,7 @@ void SAL_CALL SwXTextField::attach(
aDateTime );
if ( m_pImpl->m_xTextObject.is() )
{
- pPostItField->SetTextObject( std::unique_ptr<OutlinerParaObject>(m_pImpl->m_xTextObject->CreateText()) );
+ pPostItField->SetTextObject( m_pImpl->m_xTextObject->CreateText() );
pPostItField->SetPar2(m_pImpl->m_xTextObject->GetText());
}
xField.reset(pPostItField);
diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx
index 209e3a9d993c..b0e96e21b5e3 100644
--- a/sw/source/filter/ww8/rtfsdrexport.cxx
+++ b/sw/source/filter/ww8/rtfsdrexport.cxx
@@ -611,7 +611,7 @@ sal_Int32 RtfSdrExport::StartShape()
*/
if (pTextObj->IsTextEditActive())
{
- pOwnedParaObj.reset(pTextObj->GetEditOutlinerParaObject());
+ pOwnedParaObj = pTextObj->GetEditOutlinerParaObject();
pParaObj = pOwnedParaObj.get();
}
else
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index 34d3a650ecc6..f36c89117179 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -1319,7 +1319,7 @@ void WW8Export::WriteSdrTextObj(const SdrTextObj& rTextObj, sal_uInt8 nTyp)
*/
if (rTextObj.IsTextEditActive())
{
- pParaObj = rTextObj.GetEditOutlinerParaObject();
+ pParaObj = rTextObj.GetEditOutlinerParaObject().release();
bOwnParaObj = true;
}
else
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index cca597c50413..a06c4bc9f182 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -984,9 +984,8 @@ std::unique_ptr<OutlinerParaObject> SwWW8ImplReader::ImportAsOutliner(OUString &
}
std::unique_ptr<EditTextObject> pTemporaryText = m_pDrawEditEngine->CreateTextObject();
- pRet.reset( new OutlinerParaObject(*pTemporaryText) );
+ pRet.reset( new OutlinerParaObject( std::move(pTemporaryText) ) );
pRet->SetOutlinerMode( OutlinerMode::TextObject );
- pTemporaryText.reset();
m_pDrawEditEngine->SetText( OUString() );
m_pDrawEditEngine->SetParaAttribs(0, m_pDrawEditEngine->GetEmptyItemSet());
@@ -1193,11 +1192,11 @@ void SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj,
bool bVertical = pTextObj->IsVerticalWriting();
std::unique_ptr<EditTextObject> pTemporaryText = m_pDrawEditEngine->CreateTextObject();
- OutlinerParaObject* pOp = new OutlinerParaObject(*pTemporaryText);
+ std::unique_ptr<OutlinerParaObject> pOp( new OutlinerParaObject(*pTemporaryText) );
pOp->SetOutlinerMode( OutlinerMode::TextObject );
pOp->SetVertical( bVertical );
pTemporaryText.reset();
- pTextObj->NbcSetOutlinerParaObject( pOp );
+ pTextObj->NbcSetOutlinerParaObject( std::move(pOp) );
pTextObj->SetVerticalWriting(bVertical);
// For the next TextBox also remove the old paragraph attributes
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index f5c723f2d30e..c2a7c02f7f5b 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -50,6 +50,7 @@
#include <editeng/charhiddenitem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/editeng.hxx>
+#include <editeng/outlobj.hxx>
#include <svx/unoapi.hxx>
#include <svx/svdoole2.hxx>
#include <svx/svdoashp.hxx>
diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx b/sw/source/uibase/docvw/AnnotationWin.cxx
index 4b641a57dfa9..7fef02cdf522 100644
--- a/sw/source/uibase/docvw/AnnotationWin.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin.cxx
@@ -241,7 +241,7 @@ void SwAnnotationWin::UpdateData()
pOldField.reset(mpField->Copy());
}
mpField->SetPar2(mpOutliner->GetEditEngine().GetText());
- mpField->SetTextObject(std::unique_ptr<OutlinerParaObject>(mpOutliner->CreateParaObject()));
+ mpField->SetTextObject(mpOutliner->CreateParaObject());
if (rUndoRedo.DoesUndo())
{
SwTextField *const pTextField = mpFormatField->GetTextField();
@@ -404,7 +404,7 @@ void SwAnnotationWin::InitAnswer(OutlinerParaObject const * pText)
pOldField.reset(mpField->Copy());
}
mpField->SetPar2(mpOutliner->GetEditEngine().GetText());
- mpField->SetTextObject(std::unique_ptr<OutlinerParaObject>(mpOutliner->CreateParaObject()));
+ mpField->SetTextObject(mpOutliner->CreateParaObject());
if (rUndoRedo.DoesUndo())
{
SwTextField *const pTextField = mpFormatField->GetTextField();
commit d98f1e4e0373782ad71b945dcc92c1c3d6dcf6c8
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Fri Jun 29 12:25:02 2018 +0200
loplugin:unusedfields improve checking for write-only fields
we trade off a little accuracy for finding more possible write-only
fields.
Change-Id: I9f7edba99481fe4ded0a9d8e45e911b0ee99d269
Reviewed-on: https://gerrit.libreoffice.org/56715
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/compilerplugins/clang/unusedfields.cxx b/compilerplugins/clang/unusedfields.cxx
index 159d8544b635..8dca2f549933 100644
--- a/compilerplugins/clang/unusedfields.cxx
+++ b/compilerplugins/clang/unusedfields.cxx
@@ -524,13 +524,16 @@ void UnusedFields::checkWriteOnly(const FieldDecl* fieldDecl, const Expr* member
}
else if (op == UO_AddrOf || op == UO_Deref
|| op == UO_Plus || op == UO_Minus
- || op == UO_Not || op == UO_LNot
- || op == UO_PreInc || op == UO_PostInc
- || op == UO_PreDec || op == UO_PostDec)
+ || op == UO_Not || op == UO_LNot)
{
bPotentiallyReadFrom = true;
break;
}
+ /* The following are technically reads, but from a code-sense they're more of a write/modify, so
+ ignore them to find interesting fields that only modified, not usefully read:
+ UO_PreInc / UO_PostInc / UO_PreDec / UO_PostDec
+ But we still walk up in case the result of the expression is used in a read sense.
+ */
walkupUp();
}
else if (auto caseStmt = dyn_cast<CaseStmt>(parent))
@@ -651,7 +654,14 @@ void UnusedFields::checkWriteOnly(const FieldDecl* fieldDecl, const Expr* member
MyFieldInfo fieldInfo = niceName(fieldDecl);
if (bPotentiallyReadFrom)
+ {
readFromSet.insert(fieldInfo);
+ if (fieldInfo.fieldName == "nNextElementNumber")
+ {
+ parent->dump();
+ memberExpr->dump();
+ }
+ }
}
void UnusedFields::checkReadOnly(const FieldDecl* fieldDecl, const Expr* memberExpr)
diff --git a/compilerplugins/clang/unusedfields.only-used-in-constructor.results b/compilerplugins/clang/unusedfields.only-used-in-constructor.results
index 4a6acd1bc740..f6a684c5ea75 100644
--- a/compilerplugins/clang/unusedfields.only-used-in-constructor.results
+++ b/compilerplugins/clang/unusedfields.only-used-in-constructor.results
@@ -196,7 +196,7 @@ include/LibreOfficeKit/LibreOfficeKitGtk.h:33
_LOKDocView aDrawingArea GtkDrawingArea
include/LibreOfficeKit/LibreOfficeKitGtk.h:38
_LOKDocViewClass parent_class GtkDrawingAreaClass
-include/oox/export/shapes.hxx:122
+include/oox/export/shapes.hxx:123
oox::drawingml::ShapeExport maShapeMap oox::drawingml::ShapeExport::ShapeHashMap
include/registry/registry.hxx:35
Registry_Api acquire void (*)(RegHandle)
@@ -216,8 +216,6 @@ include/svx/itemwin.hxx:34
SvxLineBox aDelayTimer class Timer
include/xmloff/shapeimport.hxx:140
SdXML3DLightContext mbSpecular _Bool
-include/xmloff/XMLTextMasterPageContext.hxx:34
- XMLTextMasterPageContext sIsPhysical const class rtl::OUString
jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx:102
jfw_plugin::SunVersion usVersion class rtl::OUString
libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx:35
@@ -314,15 +312,15 @@ sc/inc/compiler.hxx:264
ScCompiler::AddInMap pUpper const char *
sc/inc/formulalogger.hxx:42
sc::FormulaLogger maMessages std::vector<OUString>
-sc/inc/interpretercontext.hxx:23
+sc/inc/interpretercontext.hxx:31
ScInterpreterContext mrDoc const class ScDocument &
-sc/inc/token.hxx:399
+sc/inc/token.hxx:397
SingleDoubleRefModifier aDub struct ScComplexRefData
sc/qa/unit/ucalc_column.cxx:104
aInputs aName const char *
-sc/source/core/data/document.cxx:1248
+sc/source/core/data/document.cxx:1251
(anonymous namespace)::BroadcastRecalcOnRefMoveHandler aSwitch sc::AutoCalcSwitch
-sc/source/core/data/document.cxx:1249
+sc/source/core/data/document.cxx:1252
(anonymous namespace)::BroadcastRecalcOnRefMoveHandler aBulk class ScBulkBroadcast
sc/source/filter/inc/htmlpars.hxx:614
ScHTMLQueryParser mnUnusedId ScHTMLTableId
@@ -372,8 +370,6 @@ sc/source/ui/inc/msgpool.hxx:46
ScMessagePool aCondFormatDlgItem class ScCondFormatDlgItem
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list