diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-04-01 14:33:16 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-04-07 09:18:07 +0200 |
commit | 6448e8607ec22fb54acce5941e5ac54a38b83452 (patch) | |
tree | adfd0923ee7b74720ae25b89c388e9bfa5c41540 /svx | |
parent | 267fd94a512336f3892110ec8d76cde60b7a61c3 (diff) |
SdrPaintView tiled rendering: ignore visual area
With this, a number of so far missing images properly show up in Draw
and Impress.
Images are loaded asynchronously, and the AsynchGraphicLoadingEvent is
registered in the SdrPageWindow. This means that in case the event is
registered in the temporary page window that's created by
SdrPageView::CompleteRedraw(), invoked by paintTile() call, then
chances are high that the page window will be destructed earlier than
the scheduler would execute the async event. This leads to missing
images.
Fix the problem by not ignororing Invalidate() calls depending on what
core thinks is a visible area: then the view that is an sd::Window will
also try to do the async image loading, and that will be actually
executed properly.
Change-Id: Icf5fd772b66c31d3876bf3673ba5e283c7e08083
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdpntv.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx index 5c7de983fc31..c50ba5876059 100644 --- a/svx/source/svdraw/svdpntv.cxx +++ b/svx/source/svdraw/svdpntv.cxx @@ -957,7 +957,8 @@ void SdrPaintView::InvalidateAllWin(const Rectangle& rRect, bool bPlus1Pix) aOrg.X()=-aOrg.X(); aOrg.Y()=-aOrg.Y(); Rectangle aOutRect(aOrg, rOutDev.GetOutputSize()); - if (aRect.IsOver(aOutRect)) + // In case of tiled rendering we want to get all invalidations, so visual area is not interesting. + if (aRect.IsOver(aOutRect) || GetModel()->isTiledRendering()) { InvalidateOneWin(static_cast<vcl::Window&>(rOutDev), aRect); } |