From e4b5aaade285ecad39332ad8b195738feb51151a Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Fri, 28 May 2021 12:19:09 +0200 Subject: no need to allocate this hint on the heap Change-Id: I6321d03cb5786aa0c17705cc8c8bcf1f85326f44 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116369 Tested-by: Jenkins Reviewed-by: Noel Grandin --- sw/inc/calbck.hxx | 4 ++-- sw/source/core/attr/calbck.cxx | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx index 11a62033c5cc..0863b2da7f2f 100644 --- a/sw/inc/calbck.hxx +++ b/sw/inc/calbck.hxx @@ -30,6 +30,7 @@ #include #include #include +#include class SwModify; class SwFormat; @@ -76,7 +77,6 @@ namespace sw struct ModifyChangedHint final: SfxHint { ModifyChangedHint(const SwModify* pNew) : m_pNew(pNew) {}; - virtual ~ModifyChangedHint() override; const SwModify* m_pNew; }; // Observer pattern using svl implementation @@ -151,7 +151,7 @@ public: // in case an SwModify object is destroyed that itself is registered in another SwModify, // its SwClient objects can decide to get registered to the latter instead by calling this method - std::unique_ptr CheckRegistration( const SfxPoolItem* pOldValue ); + std::optional CheckRegistration( const SfxPoolItem* pOldValue ); // SwFormat wants to die different than the rest: It wants to reparent every client to its parent // and then send a SwFormatChg hint. void CheckRegistrationFormat(SwFormat& rOld); diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx index a37ee5bef376..3f4253cd2566 100644 --- a/sw/source/core/attr/calbck.cxx +++ b/sw/source/core/attr/calbck.cxx @@ -54,7 +54,6 @@ namespace sw } sw::LegacyModifyHint::~LegacyModifyHint() {} -sw::ModifyChangedHint::~ModifyChangedHint() {} SwClient::SwClient(SwClient&& o) noexcept : m_pRegisteredIn(nullptr) @@ -75,19 +74,19 @@ SwClient::~SwClient() m_pRegisteredIn->Remove( this ); } -std::unique_ptr SwClient::CheckRegistration( const SfxPoolItem* pOld ) +std::optional SwClient::CheckRegistration( const SfxPoolItem* pOld ) { DBG_TESTSOLARMUTEX(); // this method only handles notification about dying SwModify objects if( !pOld || pOld->Which() != RES_OBJECTDYING ) - return nullptr; + return {}; assert(dynamic_cast(pOld)); const SwPtrMsgPoolItem* pDead = static_cast(pOld); if(pDead->pObject != m_pRegisteredIn) { // we should only care received death notes from objects we are following - return nullptr; + return {}; } // I've got a notification from the object I know SwModify* pAbove = m_pRegisteredIn->GetRegisteredIn(); @@ -102,7 +101,7 @@ std::unique_ptr SwClient::CheckRegistration( const SfxPoo // destroy connection EndListeningAll(); } - return std::unique_ptr(new sw::ModifyChangedHint(pAbove)); + return sw::ModifyChangedHint(pAbove); } void SwClient::CheckRegistrationFormat(SwFormat& rOld) -- cgit v1.2.3