diff options
author | Oliver Düsterhoff <od@openoffice.org> | 2009-12-07 13:59:17 +0000 |
---|---|---|
committer | Oliver Düsterhoff <od@openoffice.org> | 2009-12-07 13:59:17 +0000 |
commit | 0cfcee1a6fcd99d2b85cefae06f6e1ea95377da1 (patch) | |
tree | 738105ed92462ac8b4e4249b199b4e26a828022c /sw | |
parent | b4c4d7ac0a50b17c526fc8092d1fa3b7b39dadd5 (diff) |
#i107365# method <ViewShell::ImplEndAction(..)>
- take care of transparent child windows after direct paint.
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/view/viewsh.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index 920c2d809f51..12464e082ae4 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -376,6 +376,37 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd ) // #i75172# end DrawingLayer paint DLPostPaint2(true); } + + // --> OD 2009-12-03 #i107365# + // Direct paint has been performed. Thus, take care of + // transparent child windows. + if ( GetWin() ) + { + Window& rWindow = *(GetWin()); + if(rWindow.IsChildTransparentModeEnabled() && rWindow.GetChildCount()) + { + const Rectangle aRectanglePixel(rWindow.LogicToPixel(aRect.SVRect())); + + 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(aRectanglePixel) ) + { + pCandidate->Invalidate( INVALIDATE_NOTRANSPARENT|INVALIDATE_CHILDREN ); + pCandidate->Update(); + } + } + } + } + } + // <-- } delete pVout; |