Kaydet (Commit) fa1caba2 authored tarafından Mike Kaganski's avatar Mike Kaganski

Use std::unique_ptr in ImplCalcToTopData

Change-Id: Ie43c633283be45e72259be5eedd253e403e9f664
Reviewed-on: https://gerrit.libreoffice.org/48377Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
üst 6fc9d4a4
...@@ -46,9 +46,9 @@ using ::com::sun::star::awt::XTopWindow; ...@@ -46,9 +46,9 @@ using ::com::sun::star::awt::XTopWindow;
struct ImplCalcToTopData struct ImplCalcToTopData
{ {
ImplCalcToTopData* mpNext; std::unique_ptr<ImplCalcToTopData> mpNext;
VclPtr<vcl::Window> mpWindow; VclPtr<vcl::Window> mpWindow;
vcl::Region* mpInvalidateRegion; std::unique_ptr<vcl::Region> mpInvalidateRegion;
}; };
namespace vcl { namespace vcl {
...@@ -227,10 +227,9 @@ void Window::ImplCalcToTop( ImplCalcToTopData* pPrevData ) ...@@ -227,10 +227,9 @@ void Window::ImplCalcToTop( ImplCalcToTopData* pPrevData )
if ( !aInvalidateRegion.IsEmpty() ) if ( !aInvalidateRegion.IsEmpty() )
{ {
ImplCalcToTopData* pData = new ImplCalcToTopData; ImplCalcToTopData* pData = new ImplCalcToTopData;
pPrevData->mpNext = pData; pPrevData->mpNext.reset(pData);
pData->mpNext = nullptr;
pData->mpWindow = this; pData->mpWindow = this;
pData->mpInvalidateRegion = new vcl::Region( aInvalidateRegion ); pData->mpInvalidateRegion.reset(new vcl::Region( aInvalidateRegion ));
} }
} }
} }
...@@ -317,7 +316,6 @@ void Window::ImplStartToTop( ToTopFlags nFlags ) ...@@ -317,7 +316,6 @@ void Window::ImplStartToTop( ToTopFlags nFlags )
{ {
ImplCalcToTopData aStartData; ImplCalcToTopData aStartData;
ImplCalcToTopData* pCurData; ImplCalcToTopData* pCurData;
ImplCalcToTopData* pNextData;
vcl::Window* pOverlapWindow; vcl::Window* pOverlapWindow;
if ( ImplIsOverlapWindow() ) if ( ImplIsOverlapWindow() )
pOverlapWindow = this; pOverlapWindow = this;
...@@ -332,7 +330,7 @@ void Window::ImplStartToTop( ToTopFlags nFlags ) ...@@ -332,7 +330,7 @@ void Window::ImplStartToTop( ToTopFlags nFlags )
{ {
pTempOverlapWindow->ImplCalcToTop( pCurData ); pTempOverlapWindow->ImplCalcToTop( pCurData );
if ( pCurData->mpNext ) if ( pCurData->mpNext )
pCurData = pCurData->mpNext; pCurData = pCurData->mpNext.get();
pTempOverlapWindow = pTempOverlapWindow->mpWindowImpl->mpOverlapWindow; pTempOverlapWindow = pTempOverlapWindow->mpWindowImpl->mpOverlapWindow;
} }
while ( !pTempOverlapWindow->mpWindowImpl->mbFrame ); while ( !pTempOverlapWindow->mpWindowImpl->mbFrame );
...@@ -342,7 +340,7 @@ void Window::ImplStartToTop( ToTopFlags nFlags ) ...@@ -342,7 +340,7 @@ void Window::ImplStartToTop( ToTopFlags nFlags )
{ {
pTempOverlapWindow->ImplCalcToTop( pCurData ); pTempOverlapWindow->ImplCalcToTop( pCurData );
if ( pCurData->mpNext ) if ( pCurData->mpNext )
pCurData = pCurData->mpNext; pCurData = pCurData->mpNext.get();
pTempOverlapWindow = pTempOverlapWindow->mpWindowImpl->mpNext; pTempOverlapWindow = pTempOverlapWindow->mpWindowImpl->mpNext;
} }
...@@ -355,14 +353,11 @@ void Window::ImplStartToTop( ToTopFlags nFlags ) ...@@ -355,14 +353,11 @@ void Window::ImplStartToTop( ToTopFlags nFlags )
} }
while ( !pTempOverlapWindow->mpWindowImpl->mbFrame ); while ( !pTempOverlapWindow->mpWindowImpl->mbFrame );
// as last step invalidate the invalid areas // as last step invalidate the invalid areas
pCurData = aStartData.mpNext; pCurData = aStartData.mpNext.get();
while ( pCurData ) while ( pCurData )
{ {
pCurData->mpWindow->ImplInvalidateFrameRegion( pCurData->mpInvalidateRegion, InvalidateFlags::Children ); pCurData->mpWindow->ImplInvalidateFrameRegion( pCurData->mpInvalidateRegion.get(), InvalidateFlags::Children );
pNextData = pCurData->mpNext; pCurData = pCurData->mpNext.get();
delete pCurData->mpInvalidateRegion;
delete pCurData;
pCurData = pNextData;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment