include/svx/svdedxv.hxx       |    6 +++---
 svx/source/svdraw/svdedxv.cxx |   20 ++++++++++++--------
 2 files changed, 15 insertions(+), 11 deletions(-)

New commits:
commit 79ae6cc6b3b19252473f6987106ea7d8aa17a5ea
Author: Caolán McNamara <caol...@redhat.com>
Date:   Fri Apr 6 13:21:44 2018 +0100

    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.gran...@collabora.co.uk>
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

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 );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to