diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-04-06 13:21:44 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-04-06 16:22:43 +0200 |
commit | 79ae6cc6b3b19252473f6987106ea7d8aa17a5ea (patch) | |
tree | ad487826806e9d5aae290da6897c548a0cfcdb35 | |
parent | 2afdea17162731888ad8f09fae2bb50e4246d7e9 (diff) |
Resolves: tdf#116713 Revert "loplugin:useuniqueptr in SdrObjEditView"
pTextEditOutliner.release() sets pTextEditOutliner to null, so in
SvxTextEditSourceImpl::dispose() mpView->GetTextEditOutliner() returns
null and the SvxTextEditSourceImpl doesn't deregister
This reverts commit 2affed9bfd72628549df3049ed9f6e6a30fdb5b8.
Change-Id: If97c4113db34184b315178546f1fccfada14cc09
Reviewed-on: https://gerrit.libreoffice.org/52503
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | include/svx/svdedxv.hxx | 6 | ||||
-rw-r--r-- | svx/source/svdraw/svdedxv.cxx | 20 |
2 files changed, 15 insertions, 11 deletions
diff --git a/include/svx/svdedxv.hxx b/include/svx/svdedxv.hxx index 2c8710a90af0..324a611d96eb 100644 --- a/include/svx/svdedxv.hxx +++ b/include/svx/svdedxv.hxx @@ -77,7 +77,7 @@ protected: tools::WeakReference<SdrTextObj> mxTextEditObj; // current object in TextEdit SdrPageView* pTextEditPV; - std::unique_ptr<SdrOutliner> pTextEditOutliner; // outliner for the TextEdit + SdrOutliner* pTextEditOutliner; // outliner for the TextEdit OutlinerView* pTextEditOutlinerView; // current view of the outliners VclPtr<vcl::Window> pTextEditWin; // matching window to pTextEditOutlinerView vcl::Cursor* pTextEditCursorMerker; // to restore the cursor in each window @@ -226,8 +226,8 @@ public: // Now at this outliner, events can be send, attributes can be set, // call Cut/Copy/Paste, call Undo/Redo, and so on... - const SdrOutliner* GetTextEditOutliner() const { return pTextEditOutliner.get(); } - SdrOutliner* GetTextEditOutliner() { return pTextEditOutliner.get(); } + const SdrOutliner* GetTextEditOutliner() const { return pTextEditOutliner; } + SdrOutliner* GetTextEditOutliner() { return pTextEditOutliner; } const OutlinerView* GetTextEditOutlinerView() const { return pTextEditOutlinerView; } OutlinerView* GetTextEditOutlinerView() { return pTextEditOutlinerView; } diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index 5b33f7ff6b4c..51ef80fb46b6 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -101,7 +101,7 @@ SdrObjEditView::~SdrObjEditView() assert(!IsTextEdit()); if (IsTextEdit()) SdrEndTextEdit(); - pTextEditOutliner.reset(); + delete pTextEditOutliner; assert(nullptr == mpOldTextEditUndoManager); // should have been reset } @@ -820,7 +820,7 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(vcl::Window* pWin, OutlinerVie if (pOutlView == nullptr) { - pOutlView = new OutlinerView(pTextEditOutliner.get(), pWin); + pOutlView = new OutlinerView(pTextEditOutliner, pWin); } else { @@ -1078,7 +1078,8 @@ bool SdrObjEditView::SdrBeginTextEdit( if(pTextEditOutliner) { OSL_FAIL("SdrObjEditView::SdrBeginTextEdit(): Old Outliner still exists."); - pTextEditOutliner.reset(); + delete pTextEditOutliner; + pTextEditOutliner = nullptr; } if(!bBrk) @@ -1086,9 +1087,9 @@ bool SdrObjEditView::SdrBeginTextEdit( pTextEditWin=pWin; pTextEditPV=pPV; mxTextEditObj.reset( pObj ); - pTextEditOutliner.reset(pGivenOutliner); + pTextEditOutliner=pGivenOutliner; if (pTextEditOutliner==nullptr) - pTextEditOutliner.reset(SdrMakeOutliner( OutlinerMode::TextObject, *mxTextEditObj->GetModel() )); + pTextEditOutliner = SdrMakeOutliner( OutlinerMode::TextObject, *mxTextEditObj->GetModel() ); { SvtAccessibilityOptions aOptions; @@ -1334,7 +1335,9 @@ bool SdrObjEditView::SdrBeginTextEdit( pGivenOutlinerView = nullptr; } } - pTextEditOutliner.reset(); + delete pTextEditOutliner; + + pTextEditOutliner=nullptr; pTextEditOutlinerView=nullptr; mxTextEditObj.reset(nullptr); pTextEditPV=nullptr; @@ -1349,7 +1352,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) SdrEndTextEditKind eRet=SdrEndTextEditKind::Unchanged; SdrTextObj* pTEObj = mxTextEditObj.get(); vcl::Window* pTEWin =pTextEditWin; - SdrOutliner* pTEOutliner =pTextEditOutliner.release(); + SdrOutliner* pTEOutliner =pTextEditOutliner; OutlinerView* pTEOutlinerView=pTextEditOutlinerView; vcl::Cursor* pTECursorMerker=pTextEditCursorMerker; SdrUndoManager* pUndoEditUndoManager = nullptr; @@ -1419,6 +1422,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) mxTextEditObj.reset(nullptr); pTextEditPV=nullptr; pTextEditWin=nullptr; + pTextEditOutliner=nullptr; pTextEditOutlinerView=nullptr; pTextEditCursorMerker=nullptr; aTextEditArea=tools::Rectangle(); @@ -1923,7 +1927,7 @@ bool SdrObjEditView::ImpIsTextEditAllSelected() const bool bRet=false; if (pTextEditOutliner!=nullptr && pTextEditOutlinerView!=nullptr) { - if(SdrTextObj::HasTextImpl( pTextEditOutliner.get() ) ) + if(SdrTextObj::HasTextImpl( pTextEditOutliner ) ) { const sal_Int32 nParaCnt=pTextEditOutliner->GetParagraphCount(); Paragraph* pLastPara=pTextEditOutliner->GetParagraph( nParaCnt > 1 ? nParaCnt - 1 : 0 ); |