tdf#93096 sw: fix selection with keyboard outside current view

Regression from commit c9175a1bd3249ad573ae6827bf19963a3ebe2fbc
(SwViewShell::ImplEndAction: avoid direct PaintDesktop(), 2015-07-03),
the problem is that while going via InvalidateWindows() is fine for the
double-buffering case, it has side effects when painting directly, so
revert back to the old code in that case.

Change-Id: Ib1e3b143f5cfe2c6ab8b102a1a2064900282f136
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 80aa194..4f8edf7 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -405,7 +405,25 @@ void SwViewShell::ImplEndAction( const bool bIdleEnd )
                    }
                    if ( bPaint )
                    {
                        InvalidateWindows(aRect.SVRect());
                        if (GetWin() && GetWin()->SupportsDoubleBuffering())
                            InvalidateWindows(aRect.SVRect());
                        else
                        {
                            // #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);
                        }
                    }
                    else
                        lcl_PaintTransparentFormControls(*this, aRect); // i#107365