From f7879b26ea7ab04d4e8bbfcc2ca2439c13a0504f Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Tue, 3 Jan 2017 22:00:32 +0000 Subject: vcl: hold VclPtrs to avoid possible lifecycle related crashers. Makes code on common EnableInput crash reporter trace safer. Change-Id: Ibcf218d0d2460383d12e19f48aaf0ab08e541532 Reviewed-on: https://gerrit.libreoffice.org/32706 Tested-by: Jenkins Reviewed-by: Michael Meeks (cherry picked from commit 61aa97c1be23398acb7e9160763b621f63c13d88) Reviewed-on: https://gerrit.libreoffice.org/32719 Reviewed-by: Markus Mohrhard --- vcl/source/window/window.cxx | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'vcl/source') diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index ac89e1cc115d..e483e2952b7c 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -1408,7 +1408,7 @@ bool Window::ImplUpdatePos() mnOutOffY = mpWindowImpl->mnY + pParent->mnOutOffY; } - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { if ( pChild->ImplUpdatePos() ) @@ -1427,7 +1427,7 @@ void Window::ImplUpdateSysObjPos() if ( mpWindowImpl->mpSysObj ) mpWindowImpl->mpSysObj->SetPosSize( mnOutOffX, mnOutOffY, mnOutWidth, mnOutHeight ); - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->ImplUpdateSysObjPos(); @@ -1957,7 +1957,7 @@ bool Window::IsLocked() const if ( mpWindowImpl->mnLockCount != 0 ) return true; - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { if ( pChild->IsLocked() ) @@ -2156,7 +2156,7 @@ void Window::CollectChildren(::std::vector& rAllChildren ) { rAllChildren.push_back( this ); - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->CollectChildren( rAllChildren ); @@ -2470,7 +2470,7 @@ void Window::Enable( bool bEnable, bool bChild ) if ( bChild ) { - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->Enable( bEnable, bChild ); @@ -2486,7 +2486,7 @@ void Window::SetCallHandlersOnInputDisabled( bool bCall ) { mpWindowImpl->mbCallHandlersDuringInputDisabled = bCall; - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->SetCallHandlersOnInputDisabled( bCall ); @@ -2543,7 +2543,7 @@ void Window::EnableInput( bool bEnable, bool bChild ) if ( bChild ) { - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->EnableInput( bEnable, bChild ); @@ -2642,7 +2642,7 @@ void Window::AlwaysEnableInput( bool bAlways, bool bChild ) if ( bChild ) { - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->AlwaysEnableInput( bAlways, bChild ); @@ -2671,7 +2671,7 @@ void Window::AlwaysDisableInput( bool bAlways, bool bChild ) if ( bChild ) { - vcl::Window* pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while ( pChild ) { pChild->AlwaysDisableInput( bAlways, bChild ); @@ -3415,7 +3415,7 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, bool Window::IsScrollable() const { // check for scrollbars - vcl::Window *pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while( pChild ) { if( pChild->GetType() == WINDOW_SCROLLBAR ) @@ -3488,14 +3488,14 @@ bool Window::HasActiveChildFrame() if( pFrameWin != mpWindowImpl->mpFrameWindow ) { bool bDecorated = false; - vcl::Window *pChildFrame = pFrameWin->ImplGetWindow(); + VclPtr< vcl::Window > pChildFrame = pFrameWin->ImplGetWindow(); // #i15285# unfortunately WB_MOVEABLE is the same as WB_TABSTOP which can // be removed for ToolBoxes to influence the keyboard accessibility // thus WB_MOVEABLE is no indicator for decoration anymore // but FloatingWindows carry this information in their TitleType... // TODO: avoid duplicate WinBits !!! if( pChildFrame && pChildFrame->ImplIsFloatingWindow() ) - bDecorated = static_cast(pChildFrame)->GetTitleType() != FloatWinTitleType::NONE; + bDecorated = static_cast(pChildFrame.get())->GetTitleType() != FloatWinTitleType::NONE; if( bDecorated || (pFrameWin->mpWindowImpl->mnStyle & (WB_MOVEABLE | WB_SIZEABLE) ) ) if( pChildFrame && pChildFrame->IsVisible() && pChildFrame->IsActive() ) { @@ -3537,7 +3537,7 @@ void Window::EnableNativeWidget( bool bEnable ) } // push down, useful for compound controls - vcl::Window *pChild = mpWindowImpl->mpFirstChild; + VclPtr< vcl::Window > pChild = mpWindowImpl->mpFirstChild; while( pChild ) { pChild->EnableNativeWidget( bEnable ); -- cgit