include/svx/sdr/table/tablecontroller.hxx | 3 + include/svx/svdedxv.hxx | 6 +-- svx/source/svdraw/svdedxv.cxx | 37 ++++++++----------- svx/source/table/tablecontroller.cxx | 5 +- svx/source/unodraw/unoshtxt.cxx | 57 ++++++++++-------------------- 5 files changed, 43 insertions(+), 65 deletions(-)
New commits: commit f7a0627c9a5ebd5827fc793ae023fb28e99a6525 Author: Noel Grandin <[email protected]> Date: Fri May 4 16:26:30 2018 +0200 loplugin:useuniqueptr in SvxTextEditSourceImpl Change-Id: I69b3fcbdb8a41ed227acdc65232ca013e63bc82d Reviewed-on: https://gerrit.libreoffice.org/53880 Tested-by: Jenkins <[email protected]> Reviewed-by: Noel Grandin <[email protected]> diff --git a/svx/source/unodraw/unoshtxt.cxx b/svx/source/unodraw/unoshtxt.cxx index 779d7c066e8e..5c9f669b37cc 100644 --- a/svx/source/unodraw/unoshtxt.cxx +++ b/svx/source/unodraw/unoshtxt.cxx @@ -86,8 +86,8 @@ private: VclPtr<const vcl::Window> mpWindow; SdrModel* mpModel; // TTTT probably not needed -> use SdrModel from SdrObject (?) SdrOutliner* mpOutliner; - SvxOutlinerForwarder* mpTextForwarder; - SvxDrawOutlinerViewForwarder* mpViewForwarder; // if non-NULL, use GetViewModeTextForwarder text forwarder + std::unique_ptr<SvxOutlinerForwarder> mpTextForwarder; + std::unique_ptr<SvxDrawOutlinerViewForwarder> mpViewForwarder; // if non-NULL, use GetViewModeTextForwarder text forwarder css::uno::Reference< css::linguistic2::XLinguServiceManager2 > m_xLinguServiceManager; Point maTextOffset; bool mbDataValid; @@ -103,7 +103,7 @@ private: SvxTextForwarder* GetBackgroundTextForwarder(); SvxTextForwarder* GetEditModeTextForwarder(); - SvxDrawOutlinerViewForwarder* CreateViewForwarder(); + std::unique_ptr<SvxDrawOutlinerViewForwarder> CreateViewForwarder(); void SetupOutliner(); @@ -272,11 +272,7 @@ void SvxTextEditSourceImpl::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) if (&rBC == mpView) { mpView = nullptr; - if (mpViewForwarder) - { - delete mpViewForwarder; - mpViewForwarder = nullptr; - } + mpViewForwarder.reset(); } } else if (const SvxViewChangedHint* pViewHint = dynamic_cast<const SvxViewChangedHint*>(&rHint)) @@ -334,8 +330,7 @@ void SvxTextEditSourceImpl::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) // invalidate old forwarder if( !mbForwarderIsEditMode ) { - delete mpTextForwarder; - mpTextForwarder = nullptr; + mpTextForwarder.reset(); } // register as listener - need to broadcast state change messages @@ -370,8 +365,7 @@ void SvxTextEditSourceImpl::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) // destroy view forwarder, OutlinerView no longer // valid (no need for UpdateData(), it's been // synched on SdrEndTextEdit) - delete mpViewForwarder; - mpViewForwarder = nullptr; + mpViewForwarder.reset(); // Invalidate text forwarder, we might // not be called again before entering edit mode a @@ -380,8 +374,7 @@ void SvxTextEditSourceImpl::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) if( mbForwarderIsEditMode ) { mbForwarderIsEditMode = false; - delete mpTextForwarder; - mpTextForwarder = nullptr; + mpTextForwarder.reset(); } } break; @@ -406,17 +399,8 @@ void SvxTextEditSourceImpl::ObjectInDestruction(const SdrObject&) /* unregister at all objects and set all references to 0 */ void SvxTextEditSourceImpl::dispose() { - if( mpTextForwarder ) - { - delete mpTextForwarder; - mpTextForwarder = nullptr; - } - - if( mpViewForwarder ) - { - delete mpViewForwarder; - mpViewForwarder = nullptr; - } + mpTextForwarder.reset(); + mpViewForwarder.reset(); if( mpOutliner ) { @@ -548,7 +532,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder() } - mpTextForwarder = new SvxOutlinerForwarder( *mpOutliner, (mpObject->GetObjInventor() == SdrInventor::Default) && (mpObject->GetObjIdentifier() == OBJ_OUTLINETEXT) ); + mpTextForwarder.reset(new SvxOutlinerForwarder( *mpOutliner, (mpObject->GetObjInventor() == SdrInventor::Default) && (mpObject->GetObjIdentifier() == OBJ_OUTLINETEXT) )); // delay listener subscription and UAA initialization until Outliner is fully setup bCreated = true; @@ -635,7 +619,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder() // prevent EE/Outliner notifications during setup mbNotificationsDisabled = false; - return mpTextForwarder; + return mpTextForwarder.get(); } @@ -647,12 +631,12 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetEditModeTextForwarder() if( pEditOutliner ) { - mpTextForwarder = new SvxOutlinerForwarder( *pEditOutliner, (mpObject->GetObjInventor() == SdrInventor::Default) && (mpObject->GetObjIdentifier() == OBJ_OUTLINETEXT) ); + mpTextForwarder.reset(new SvxOutlinerForwarder( *pEditOutliner, (mpObject->GetObjInventor() == SdrInventor::Default) && (mpObject->GetObjIdentifier() == OBJ_OUTLINETEXT) )); mbForwarderIsEditMode = true; } } - return mpTextForwarder; + return mpTextForwarder.get(); } @@ -672,8 +656,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetTextForwarder() if( IsEditMode() != mbForwarderIsEditMode ) { // forwarder mismatch - create new - delete mpTextForwarder; - mpTextForwarder = nullptr; + mpTextForwarder.reset(); } if( IsEditMode() ) @@ -686,7 +669,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetTextForwarder() } -SvxDrawOutlinerViewForwarder* SvxTextEditSourceImpl::CreateViewForwarder() +std::unique_ptr<SvxDrawOutlinerViewForwarder> SvxTextEditSourceImpl::CreateViewForwarder() { if( mpView->GetTextEditOutlinerView() && mpObject ) { @@ -700,7 +683,7 @@ SvxDrawOutlinerViewForwarder* SvxTextEditSourceImpl::CreateViewForwarder() tools::Rectangle aBoundRect( pTextObj->GetCurrentBoundRect() ); OutlinerView& rOutlView = *mpView->GetTextEditOutlinerView(); - return new SvxDrawOutlinerViewForwarder( rOutlView, aBoundRect.TopLeft() ); + return std::unique_ptr<SvxDrawOutlinerViewForwarder>(new SvxDrawOutlinerViewForwarder( rOutlView, aBoundRect.TopLeft() )); } } @@ -722,8 +705,7 @@ SvxEditViewForwarder* SvxTextEditSourceImpl::GetEditViewForwarder( bool bCreate { // destroy all forwarders (no need for UpdateData(), // it's been synched on SdrEndTextEdit) - delete mpViewForwarder; - mpViewForwarder = nullptr; + mpViewForwarder.reset(); } } // which to create? Directly in edit mode, create new, or none? @@ -739,8 +721,7 @@ SvxEditViewForwarder* SvxTextEditSourceImpl::GetEditViewForwarder( bool bCreate // dispose old text forwarder UpdateData(); - delete mpTextForwarder; - mpTextForwarder = nullptr; + mpTextForwarder.reset(); // enter edit mode mpView->SdrEndTextEdit(); @@ -763,7 +744,7 @@ SvxEditViewForwarder* SvxTextEditSourceImpl::GetEditViewForwarder( bool bCreate } } - return mpViewForwarder; + return mpViewForwarder.get(); } commit babaa7afcf38763511a152dcc467c2812349207b Author: Noel Grandin <[email protected]> Date: Fri May 4 16:12:47 2018 +0200 loplugin:useuniqueptr in SvxTableController Change-Id: I505f0fe1626e6b935c4194cceaa0f4d0f8756656 Reviewed-on: https://gerrit.libreoffice.org/53879 Tested-by: Jenkins <[email protected]> Reviewed-by: Noel Grandin <[email protected]> diff --git a/include/svx/sdr/table/tablecontroller.hxx b/include/svx/sdr/table/tablecontroller.hxx index fe03d7353a2b..b16b5f30f0b2 100644 --- a/include/svx/sdr/table/tablecontroller.hxx +++ b/include/svx/sdr/table/tablecontroller.hxx @@ -28,6 +28,7 @@ #include <svx/selectioncontroller.hxx> #include <svx/svdotable.hxx> #include <svx/svdview.hxx> +#include <memory> class SdrView; class SdrObject; @@ -178,7 +179,7 @@ private: bool mbCellSelectionMode; CellPos maMouseDownPos; bool mbLeftButtonDown; - sdr::overlay::OverlayObjectList* mpSelectionOverlay; + std::unique_ptr<sdr::overlay::OverlayObjectList> mpSelectionOverlay; SdrView& mrView; tools::WeakReference<SdrTableObj> mxTableObj; css::uno::Reference< css::util::XModifyListener > mxModifyListener; diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx index ecdd0a233be5..9e70356369e3 100644 --- a/svx/source/table/tablecontroller.cxx +++ b/svx/source/table/tablecontroller.cxx @@ -2183,7 +2183,7 @@ void SvxTableController::updateSelectionOverlay() sdr::overlay::OverlayObjectCell* pOverlay = new sdr::overlay::OverlayObjectCell( aHighlight, aRanges ); xOverlayManager->add(*pOverlay); - mpSelectionOverlay = new sdr::overlay::OverlayObjectList; + mpSelectionOverlay.reset(new sdr::overlay::OverlayObjectList); mpSelectionOverlay->append(pOverlay); } } @@ -2221,8 +2221,7 @@ void SvxTableController::destroySelectionOverlay() { if( mpSelectionOverlay ) { - delete mpSelectionOverlay; - mpSelectionOverlay = nullptr; + mpSelectionOverlay.reset(); if (comphelper::LibreOfficeKit::isActive()) { commit 5c632220d3aa8faa66b44ba29fbcc560813a369a Author: Noel Grandin <[email protected]> Date: Fri May 4 15:52:54 2018 +0200 loplugin:useuniqueptr in SdrObjEditView Change-Id: Ie980c0f50483235663e9560fbcf61cf284663228 Reviewed-on: https://gerrit.libreoffice.org/53878 Tested-by: Jenkins <[email protected]> Reviewed-by: Noel Grandin <[email protected]> diff --git a/include/svx/svdedxv.hxx b/include/svx/svdedxv.hxx index 70472aab20b2..97abbc9e2d93 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; - SdrOutliner* pTextEditOutliner; // outliner for the TextEdit + std::unique_ptr<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 @@ -229,8 +229,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; } - SdrOutliner* GetTextEditOutliner() { return pTextEditOutliner; } + const SdrOutliner* GetTextEditOutliner() const { return pTextEditOutliner.get(); } + SdrOutliner* GetTextEditOutliner() { return pTextEditOutliner.get(); } 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 211537d4c411..bab1f5e71898 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -73,7 +73,7 @@ void SdrObjEditView::ImpClearVars() { bQuickTextEditMode=true; - pTextEditOutliner=nullptr; + pTextEditOutliner.reset(); pTextEditOutlinerView=nullptr; pTextEditPV=nullptr; pTextEditWin=nullptr; @@ -103,7 +103,7 @@ SdrObjEditView::~SdrObjEditView() assert(!IsTextEdit()); if (IsTextEdit()) SdrEndTextEdit(); - delete pTextEditOutliner; + pTextEditOutliner.reset(); assert(nullptr == mpOldTextEditUndoManager); // should have been reset } @@ -822,7 +822,7 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(vcl::Window* pWin, OutlinerVie if (pOutlView == nullptr) { - pOutlView = new OutlinerView(pTextEditOutliner, pWin); + pOutlView = new OutlinerView(pTextEditOutliner.get(), pWin); } else { @@ -1080,8 +1080,7 @@ bool SdrObjEditView::SdrBeginTextEdit( if(pTextEditOutliner) { OSL_FAIL("SdrObjEditView::SdrBeginTextEdit(): Old Outliner still exists."); - delete pTextEditOutliner; - pTextEditOutliner = nullptr; + pTextEditOutliner.reset(); } if(!bBrk) @@ -1089,9 +1088,13 @@ bool SdrObjEditView::SdrBeginTextEdit( pTextEditWin=pWin; pTextEditPV=pPV; mxTextEditObj.reset( pObj ); - pTextEditOutliner=pGivenOutliner; - if (pTextEditOutliner==nullptr) - pTextEditOutliner = SdrMakeOutliner( OutlinerMode::TextObject, mxTextEditObj->getSdrModelFromSdrObject() ).release(); + if (pGivenOutliner) + { + pTextEditOutliner.reset(pGivenOutliner); + pGivenOutliner = nullptr; // so we don't delete it on the error path + } + else + pTextEditOutliner = SdrMakeOutliner( OutlinerMode::TextObject, mxTextEditObj->getSdrModelFromSdrObject() ); { SvtAccessibilityOptions aOptions; @@ -1326,20 +1329,15 @@ bool SdrObjEditView::SdrBeginTextEdit( // something went wrong... if(!bDontDeleteOutliner) { - if(pGivenOutliner!=nullptr) - { - delete pGivenOutliner; - pTextEditOutliner = nullptr; - } + delete pGivenOutliner; if(pGivenOutlinerView!=nullptr) { delete pGivenOutlinerView; pGivenOutlinerView = nullptr; } } - delete pTextEditOutliner; + pTextEditOutliner.reset(); - pTextEditOutliner=nullptr; pTextEditOutlinerView=nullptr; mxTextEditObj.reset(nullptr); pTextEditPV=nullptr; @@ -1354,16 +1352,15 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) SdrEndTextEditKind eRet=SdrEndTextEditKind::Unchanged; SdrTextObj* pTEObj = mxTextEditObj.get(); vcl::Window* pTEWin =pTextEditWin; - SdrOutliner* pTEOutliner =pTextEditOutliner; OutlinerView* pTEOutlinerView=pTextEditOutlinerView; vcl::Cursor* pTECursorMerker=pTextEditCursorMerker; SdrUndoManager* pUndoEditUndoManager = nullptr; bool bNeedToUndoSavedRedoTextEdit(false); - if (GetModel() && IsUndoEnabled() && pTEObj && pTEOutliner && !GetModel()->GetDisableTextEditUsesCommonUndoManager()) + if (GetModel() && IsUndoEnabled() && pTEObj && pTextEditOutliner && !GetModel()->GetDisableTextEditUsesCommonUndoManager()) { // change back the UndoManager to the remembered original one - ::svl::IUndoManager* pOriginal = pTEOutliner->SetUndoManager(mpOldTextEditUndoManager); + ::svl::IUndoManager* pOriginal = pTextEditOutliner->SetUndoManager(mpOldTextEditUndoManager); mpOldTextEditUndoManager = nullptr; if(pOriginal) @@ -1424,7 +1421,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) mxTextEditObj.reset(nullptr); pTextEditPV=nullptr; pTextEditWin=nullptr; - pTextEditOutliner=nullptr; + SdrOutliner* pTEOutliner = pTextEditOutliner.release(); pTextEditOutlinerView=nullptr; pTextEditCursorMerker=nullptr; aTextEditArea=tools::Rectangle(); @@ -1928,7 +1925,7 @@ bool SdrObjEditView::ImpIsTextEditAllSelected() const bool bRet=false; if (pTextEditOutliner!=nullptr && pTextEditOutlinerView!=nullptr) { - if(SdrTextObj::HasTextImpl( pTextEditOutliner ) ) + if(SdrTextObj::HasTextImpl( pTextEditOutliner.get() ) ) { const sal_Int32 nParaCnt=pTextEditOutliner->GetParagraphCount(); Paragraph* pLastPara=pTextEditOutliner->GetParagraph( nParaCnt > 1 ? nParaCnt - 1 : 0 ); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
