Kaydet (Commit) c4257244 authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in SdrText

Change-Id: I23cc319707132c28725acdb8be0bea275025b9e5
Reviewed-on: https://gerrit.libreoffice.org/49332Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst afeda721
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <sal/types.h> #include <sal/types.h>
#include <svx/svxdllapi.h> #include <svx/svxdllapi.h>
#include <tools/weakbase.hxx> #include <tools/weakbase.hxx>
#include <memory>
class OutlinerParaObject; class OutlinerParaObject;
...@@ -73,7 +74,7 @@ protected: ...@@ -73,7 +74,7 @@ protected:
virtual SfxStyleSheet* GetStyleSheet() const; virtual SfxStyleSheet* GetStyleSheet() const;
private: private:
OutlinerParaObject* mpOutlinerParaObject; std::unique_ptr<OutlinerParaObject> mpOutlinerParaObject;
SdrTextObj& mrObject; SdrTextObj& mrObject;
SdrModel* mpModel; SdrModel* mpModel;
bool mbPortionInfoChecked; bool mbPortionInfoChecked;
......
...@@ -40,7 +40,6 @@ SdrText::SdrText( SdrTextObj& rObject, OutlinerParaObject* pOutlinerParaObject / ...@@ -40,7 +40,6 @@ SdrText::SdrText( SdrTextObj& rObject, OutlinerParaObject* pOutlinerParaObject /
SdrText::~SdrText() SdrText::~SdrText()
{ {
clearWeak(); clearWeak();
delete mpOutlinerParaObject;
} }
void SdrText::CheckPortionInfo( SdrOutliner& rOutliner ) void SdrText::CheckPortionInfo( SdrOutliner& rOutliner )
...@@ -57,8 +56,7 @@ void SdrText::CheckPortionInfo( SdrOutliner& rOutliner ) ...@@ -57,8 +56,7 @@ void SdrText::CheckPortionInfo( SdrOutliner& rOutliner )
if(mpOutlinerParaObject!=nullptr && rOutliner.ShouldCreateBigTextObject()) if(mpOutlinerParaObject!=nullptr && rOutliner.ShouldCreateBigTextObject())
{ {
// #i102062# MemoryLeak closed // #i102062# MemoryLeak closed
delete mpOutlinerParaObject; mpOutlinerParaObject.reset( rOutliner.CreateParaObject() );
mpOutlinerParaObject = rOutliner.CreateParaObject();
} }
} }
} }
...@@ -76,19 +74,17 @@ const SfxItemSet& SdrText::GetItemSet() const ...@@ -76,19 +74,17 @@ const SfxItemSet& SdrText::GetItemSet() const
void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject ) void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
{ {
if( mpOutlinerParaObject != pTextObject ) if( mpOutlinerParaObject.get() != pTextObject )
{ {
if( mpModel ) if( mpModel )
{ {
// Update HitTestOutliner // Update HitTestOutliner
const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj(); const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj();
if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject ) if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject.get() )
mpModel->GetHitTestOutliner().SetTextObj( nullptr ); mpModel->GetHitTestOutliner().SetTextObj( nullptr );
} }
delete mpOutlinerParaObject; mpOutlinerParaObject.reset(pTextObject);
mpOutlinerParaObject = pTextObject;
mbPortionInfoChecked = false; mbPortionInfoChecked = false;
} }
...@@ -96,7 +92,7 @@ void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject ) ...@@ -96,7 +92,7 @@ void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
OutlinerParaObject* SdrText::GetOutlinerParaObject() const OutlinerParaObject* SdrText::GetOutlinerParaObject() const
{ {
return mpOutlinerParaObject; return mpOutlinerParaObject.get();
} }
/** returns the current OutlinerParaObject and removes it from this instance */ /** returns the current OutlinerParaObject and removes it from this instance */
...@@ -106,13 +102,12 @@ OutlinerParaObject* SdrText::RemoveOutlinerParaObject() ...@@ -106,13 +102,12 @@ OutlinerParaObject* SdrText::RemoveOutlinerParaObject()
{ {
// Update HitTestOutliner // Update HitTestOutliner
const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj(); const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj();
if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject ) if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject.get() )
mpModel->GetHitTestOutliner().SetTextObj( nullptr ); mpModel->GetHitTestOutliner().SetTextObj( nullptr );
} }
OutlinerParaObject* pOPO = mpOutlinerParaObject; OutlinerParaObject* pOPO = mpOutlinerParaObject.release();
mpOutlinerParaObject = nullptr;
mbPortionInfoChecked = false; mbPortionInfoChecked = false;
return pOPO; return pOPO;
...@@ -151,8 +146,7 @@ void SdrText::SetModel( SdrModel* pNewModel ) ...@@ -151,8 +146,7 @@ void SdrText::SetModel( SdrModel* pNewModel )
// now use the Outliner, etc. so the above SetAttr can work at all // now use the Outliner, etc. so the above SetAttr can work at all
SdrOutliner& rOutliner = mrObject.ImpGetDrawOutliner(); SdrOutliner& rOutliner = mrObject.ImpGetDrawOutliner();
rOutliner.SetText(*mpOutlinerParaObject); rOutliner.SetText(*mpOutlinerParaObject);
delete mpOutlinerParaObject; mpOutlinerParaObject.reset();
mpOutlinerParaObject=nullptr;
if (bScaleUnitChanged) if (bScaleUnitChanged)
{ {
Fraction aMetricFactor=GetMapFactor(aOldUnit,aNewUnit).X(); Fraction aMetricFactor=GetMapFactor(aOldUnit,aNewUnit).X();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment