diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-07-03 17:52:44 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-07-03 17:53:19 +0200 |
commit | c9175a1bd3249ad573ae6827bf19963a3ebe2fbc (patch) | |
tree | 06b592493cf72290bd1b4c716dc1b1addcacf24e /sw | |
parent | abbe4f9d64073d77c4be93b7c89c03d0651bacef (diff) |
SwViewShell::ImplEndAction: avoid direct PaintDesktop()
With double-buffering enabled and typing quickly, one saw blinks in the
text sometimes. The reason was that PaintDesktop() painted directly
outside SwViewShell::Paint().
The problem is more visible with VCL_DOUBLEBUFFERING_AVOID_PAINT=1,
loading a simple document + pressing a key draw an unexpected white
rectangle.
Given that InvalidateWindows() already calls PaintDesktop() inside
Paint() implicitly (via SwViewShell::Paint()), fix the problem by just
avoiding the DLPrePaint2() + PaintDesktop() + DLPostPaint2() calls.
Change-Id: Ib8ce26a0bdd526bf85d362f0e865dd61d29f6d11
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/view/viewsh.cxx | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index 0f27fc50c573..9462b8f1fd51 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -405,20 +405,7 @@ void SwViewShell::ImplEndAction( const bool bIdleEnd ) } if ( bPaint ) { - // #i75172# begin DrawingLayer paint - // need to do begin/end DrawingLayer preparation for each single rectangle of the - // repaint region. I already tried to prepare only once for the whole Region. This - // seems to work (and does technically) but fails with transparent objects. Since the - // region given to BeginDarwLayers() defines the clip region for DrawingLayer paint, - // transparent objects in the single rectangles will indeed be painted multiple times. - DLPrePaint2(vcl::Region(aRect.SVRect())); - - if ( bPaintsFromSystem ) - PaintDesktop(*GetOut(), aRect); - pCurrentLayout->GetCurrShell()->InvalidateWindows(aRect.SVRect()); - - // #i75172# end DrawingLayer paint - DLPostPaint2(true); + InvalidateWindows(aRect.SVRect()); } lcl_PaintTransparentFormControls(*this, aRect); // i#107365 |