summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-06-24 19:50:30 +0200
committerCaolán McNamara <caolanm@redhat.com>2013-06-27 19:12:39 +0000
commit904de3293692949eba25229b27a6e1afaabc183b (patch)
tree8bf7835d674e97f3caede093fc19f57db3d91013 /sw
parent435be554c5025f2309c016170d5225ac086c727b (diff)
fdo#58029: replace quadratic child window loop with linear
... which should speed things up without introducing problems. (Window::GetChild(n) is inefficient because the children are a linked list) Change-Id: I343d51a6866c5014cbca4c256b0c15f938958c39 (cherry picked from commit 38dcfadda85058a0ee87292c8943aec82e34b81e) Reviewed-on: https://gerrit.libreoffice.org/4491 Reviewed-by: Thorsten Behrens <tbehrens@suse.com> Tested-by: Thorsten Behrens <tbehrens@suse.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/source/core/view/viewsh.cxx28
1 files changed, 2 insertions, 26 deletions
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index a3418ef6fdd1..7f1c823a51c8 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -115,32 +115,8 @@ lcl_PaintTransparentFormControls(ViewShell & rShell, SwRect const& rRect)
if (rShell.GetWin())
{
Window& rWindow = *(rShell.GetWin());
- if (rWindow.IsChildTransparentModeEnabled())
- {
- Window * pCandidate = rWindow.GetWindow( WINDOW_FIRSTCHILD );
- if (pCandidate)
- {
- const Rectangle aRectanglePixel(
- rWindow.LogicToPixel(rRect.SVRect()));
- while (pCandidate)
- {
- if (pCandidate->IsPaintTransparent())
- {
- const Rectangle aCandidatePosSizePixel(
- pCandidate->GetPosPixel(),
- pCandidate->GetSizePixel());
-
- if (aCandidatePosSizePixel.IsOver(aRectanglePixel))
- {
- pCandidate->Invalidate(
- INVALIDATE_NOTRANSPARENT|INVALIDATE_CHILDREN );
- pCandidate->Update();
- }
- }
- pCandidate = pCandidate->GetWindow( WINDOW_NEXT );
- }
- }
- }
+ const Rectangle aRectanglePixel(rWindow.LogicToPixel(rRect.SVRect()));
+ PaintTransparentChildren(rWindow, aRectanglePixel);
}
}