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 @@
#include <sal/types.h>
#include <svx/svxdllapi.h>
#include <tools/weakbase.hxx>
#include <memory>
class OutlinerParaObject;
......@@ -73,7 +74,7 @@ protected:
virtual SfxStyleSheet* GetStyleSheet() const;
private:
OutlinerParaObject* mpOutlinerParaObject;
std::unique_ptr<OutlinerParaObject> mpOutlinerParaObject;
SdrTextObj& mrObject;
SdrModel* mpModel;
bool mbPortionInfoChecked;
......
......@@ -40,7 +40,6 @@ SdrText::SdrText( SdrTextObj& rObject, OutlinerParaObject* pOutlinerParaObject /
SdrText::~SdrText()
{
clearWeak();
delete mpOutlinerParaObject;
}
void SdrText::CheckPortionInfo( SdrOutliner& rOutliner )
......@@ -57,8 +56,7 @@ void SdrText::CheckPortionInfo( SdrOutliner& rOutliner )
if(mpOutlinerParaObject!=nullptr && rOutliner.ShouldCreateBigTextObject())
{
// #i102062# MemoryLeak closed
delete mpOutlinerParaObject;
mpOutlinerParaObject = rOutliner.CreateParaObject();
mpOutlinerParaObject.reset( rOutliner.CreateParaObject() );
}
}
}
......@@ -76,19 +74,17 @@ const SfxItemSet& SdrText::GetItemSet() const
void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
{
if( mpOutlinerParaObject != pTextObject )
if( mpOutlinerParaObject.get() != pTextObject )
{
if( mpModel )
{
// Update HitTestOutliner
const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj();
if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject )
if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject.get() )
mpModel->GetHitTestOutliner().SetTextObj( nullptr );
}
delete mpOutlinerParaObject;
mpOutlinerParaObject = pTextObject;
mpOutlinerParaObject.reset(pTextObject);
mbPortionInfoChecked = false;
}
......@@ -96,7 +92,7 @@ void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
OutlinerParaObject* SdrText::GetOutlinerParaObject() const
{
return mpOutlinerParaObject;
return mpOutlinerParaObject.get();
}
/** returns the current OutlinerParaObject and removes it from this instance */
......@@ -106,13 +102,12 @@ OutlinerParaObject* SdrText::RemoveOutlinerParaObject()
{
// Update HitTestOutliner
const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj();
if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject )
if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject.get() )
mpModel->GetHitTestOutliner().SetTextObj( nullptr );
}
OutlinerParaObject* pOPO = mpOutlinerParaObject;
OutlinerParaObject* pOPO = mpOutlinerParaObject.release();
mpOutlinerParaObject = nullptr;
mbPortionInfoChecked = false;
return pOPO;
......@@ -151,8 +146,7 @@ void SdrText::SetModel( SdrModel* pNewModel )
// now use the Outliner, etc. so the above SetAttr can work at all
SdrOutliner& rOutliner = mrObject.ImpGetDrawOutliner();
rOutliner.SetText(*mpOutlinerParaObject);
delete mpOutlinerParaObject;
mpOutlinerParaObject=nullptr;
mpOutlinerParaObject.reset();
if (bScaleUnitChanged)
{
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