diff options
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/app/svapp.cxx | 17 | ||||
-rw-r--r-- | vcl/source/window/event.cxx | 12 |
2 files changed, 14 insertions, 15 deletions
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index fb8ec12d28d7..7c1219795d6b 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -948,7 +948,11 @@ void Application::RemoveMouseAndKeyEvents( vcl::Window* pWin ) ImplSVEvent * Application::PostUserEvent( const Link<void*,void>& rLink, void* pCaller, bool bReferenceLink ) { - ImplSVEvent* pSVEvent = new ImplSVEvent; + vcl::Window* pDefWindow = ImplGetDefaultWindow(); + if ( pDefWindow == nullptr ) + return nullptr; + + std::unique_ptr<ImplSVEvent> pSVEvent(new ImplSVEvent); pSVEvent->mpData = pCaller; pSVEvent->maLink = rLink; pSVEvent->mpWindow = nullptr; @@ -963,13 +967,10 @@ ImplSVEvent * Application::PostUserEvent( const Link<void*,void>& rLink, void* p pSVEvent->mpInstanceRef = static_cast<vcl::Window *>(rLink.GetInstance()); } - vcl::Window* pDefWindow = ImplGetDefaultWindow(); - if ( pDefWindow == nullptr || !pDefWindow->ImplGetFrame()->PostEvent( pSVEvent ) ) - { - delete pSVEvent; - pSVEvent = nullptr; - } - return pSVEvent; + auto pTmpEvent = pSVEvent.get(); + if (!pDefWindow->ImplGetFrame()->PostEvent( std::move(pSVEvent) )) + return nullptr; + return pTmpEvent; } void Application::RemoveUserEvent( ImplSVEvent * nUserEvent ) diff --git a/vcl/source/window/event.cxx b/vcl/source/window/event.cxx index 81a0558e3321..399dddd3abaa 100644 --- a/vcl/source/window/event.cxx +++ b/vcl/source/window/event.cxx @@ -321,7 +321,7 @@ void Window::RemoveChildEventListener( const Link<VclWindowEvent&,void>& rEventL ImplSVEvent * Window::PostUserEvent( const Link<void*,void>& rLink, void* pCaller, bool bReferenceLink ) { - ImplSVEvent* pSVEvent = new ImplSVEvent; + std::unique_ptr<ImplSVEvent> pSVEvent(new ImplSVEvent); pSVEvent->mpData = pCaller; pSVEvent->maLink = rLink; pSVEvent->mpWindow = this; @@ -335,12 +335,10 @@ ImplSVEvent * Window::PostUserEvent( const Link<void*,void>& rLink, void* pCalle pSVEvent->mpInstanceRef = static_cast<vcl::Window *>(rLink.GetInstance()); } - if ( !mpWindowImpl->mpFrame->PostEvent( pSVEvent ) ) - { - delete pSVEvent; - pSVEvent = nullptr; - } - return pSVEvent; + auto pTmpEvent = pSVEvent.get(); + if (!mpWindowImpl->mpFrame->PostEvent( std::move(pSVEvent) )) + return nullptr; + return pTmpEvent; } void Window::RemoveUserEvent( ImplSVEvent * nUserEvent ) |