diff options
Diffstat (limited to 'vcl/source/window/paint.cxx')
-rw-r--r-- | vcl/source/window/paint.cxx | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx index 218cdd3216ed..e890503e615d 100644 --- a/vcl/source/window/paint.cxx +++ b/vcl/source/window/paint.cxx @@ -622,6 +622,9 @@ void Window::ImplCallPaint(const vcl::Region* pRegion, ImplPaintFlags nPaintFlag void Window::ImplCallOverlapPaint() { + if (!mpWindowImpl) + return; + // emit overlapping windows first vcl::Window* pTempWindow = mpWindowImpl->mpFirstOverlap; while ( pTempWindow ) @@ -642,7 +645,6 @@ void Window::ImplCallOverlapPaint() IMPL_LINK_NOARG(Window, ImplHandlePaintHdl, Timer *, void) { -#ifndef IOS comphelper::ProfileZone aZone("VCL idle re-paint"); // save paint events until layout is done @@ -665,7 +667,6 @@ IMPL_LINK_NOARG(Window, ImplHandlePaintHdl, Timer *, void) mpWindowImpl->mpFrameData->maPaintIdle.IsActive()) mpWindowImpl->mpFrameData->maPaintIdle.Stop(); } -#endif } IMPL_LINK_NOARG(Window, ImplHandleResizeTimerHdl, Timer *, void) @@ -988,7 +989,7 @@ void Window::ImplValidate() void Window::ImplUpdateAll() { - if ( !mpWindowImpl->mbReallyVisible ) + if ( !mpWindowImpl || !mpWindowImpl->mbReallyVisible ) return; bool bFlush = false; @@ -1287,6 +1288,9 @@ bool Window::HasPaintEvent() const void Window::Update() { + if (!mpWindowImpl) + return; + if ( mpWindowImpl->mpBorderWindow ) { mpWindowImpl->mpBorderWindow->Update(); @@ -1338,7 +1342,11 @@ void Window::Update() // trigger an update also for system windows on top of us, // otherwise holes would remain - vcl::Window* pUpdateOverlapWindow = ImplGetFirstOverlapWindow()->mpWindowImpl->mpFirstOverlap; + vcl::Window* pUpdateOverlapWindow = ImplGetFirstOverlapWindow(); + if (pUpdateOverlapWindow->mpWindowImpl) + pUpdateOverlapWindow = pUpdateOverlapWindow->mpWindowImpl->mpFirstOverlap; + else + pUpdateOverlapWindow = nullptr; while ( pUpdateOverlapWindow ) { pUpdateOverlapWindow->Update(); @@ -1601,6 +1609,9 @@ void Window::ImplPaintToDevice( OutputDevice* i_pTargetOutDev, const Point& i_rP void Window::PaintToDevice( OutputDevice* pDev, const Point& rPos, const Size& /*rSize*/ ) { + if( !mpWindowImpl ) + return; + SAL_WARN_IF( pDev->HasMirroredGraphics(), "vcl.window", "PaintToDevice to mirroring graphics" ); SAL_WARN_IF( pDev->IsRTLEnabled(), "vcl.window", "PaintToDevice to mirroring device" ); |