summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2012-12-12 11:29:37 +0000
committerMichael Meeks <michael.meeks@suse.com>2012-12-12 13:54:21 +0000
commitb69b6eff232ac7e4897a28cc3422aa61171f4329 (patch)
tree6cdd56f7fd32c0f450033ba66140a692cbb94813
parent7d34a702136765cab15edb47aecae9181edd2802 (diff)
fdo#58029 - substantially accelerate re-rendering of complex forms
Some writer VCL Windows appear to have thousands of children. Remove an N^2 in handling them, and let VCL do the job instead. i#103611 continues to stay fixed for simpler code. Change-Id: I63ddc0647f22c7e60feaaff6b795712c04693c05
-rw-r--r--svx/source/sdr/overlay/overlaymanagerbuffered.cxx21
1 files changed, 4 insertions, 17 deletions
diff --git a/svx/source/sdr/overlay/overlaymanagerbuffered.cxx b/svx/source/sdr/overlay/overlaymanagerbuffered.cxx
index 64ac99d1f565..6b394bef5ebe 100644
--- a/svx/source/sdr/overlay/overlaymanagerbuffered.cxx
+++ b/svx/source/sdr/overlay/overlaymanagerbuffered.cxx
@@ -348,28 +348,15 @@ namespace sdr
if(bTargetIsWindow)
{
Window& rWindow = static_cast< Window& >(rmOutputDevice);
-
- if(rWindow.IsChildTransparentModeEnabled() && rWindow.GetChildCount())
+ if(rWindow.IsChildTransparentModeEnabled())
{
+ // Get VCL to invalidate it's children - more efficiently. fdo#58029
const Rectangle aRegionRectanglePixel(
maBufferRememberedRangePixel.getMinX(), maBufferRememberedRangePixel.getMinY(),
maBufferRememberedRangePixel.getMaxX(), maBufferRememberedRangePixel.getMaxY());
- for(sal_uInt16 a(0); a < rWindow.GetChildCount(); a++)
- {
- Window* pCandidate = rWindow.GetChild(a);
-
- if(pCandidate && pCandidate->IsPaintTransparent())
- {
- const Rectangle aCandidatePosSizePixel(pCandidate->GetPosPixel(), pCandidate->GetSizePixel());
-
- if(aCandidatePosSizePixel.IsOver(aRegionRectanglePixel))
- {
- pCandidate->Invalidate(INVALIDATE_NOTRANSPARENT|INVALIDATE_CHILDREN);
- pCandidate->Update();
- }
- }
- }
+ rWindow.Invalidate(aRegionRectanglePixel,
+ INVALIDATE_NOTRANSPARENT|INVALIDATE_CHILDREN|INVALIDATE_UPDATE);
}
}