sw/source/core/layout/layact.cxx |    1 +
 sw/source/core/view/viewsh.cxx   |    4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

New commits:
commit 765cc200fd7e809d4aeca9bc83fa125ee248fce9
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Fri Mar 24 17:42:40 2023 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Wed May 17 00:37:45 2023 +0200

    lok: avoid painting writer windows to a giant virtual-device.
    
    When layout changes, we don't want to immediately redraw lots of
    windows; we should be able to wait for tiles to be rendered
    instead. Certainly we don't want to allocate a giant virtual
    device.
    
    Unfortunately we also believe that full document invalidations
    are cheap - so warn about that.
    
    Change-Id: Ib56320d4860c4b6f4e100b30cc6d3e490a1c7a90
    Signed-off-by: Michael Meeks <michael.me...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149601
    Tested-by: Jenkins
    (cherry picked from commit 1ed50bb714b8ed657cd422df850a6852cd863f43)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149622
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 583ca4a3b4db..be803a3b00c1 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -2352,6 +2352,7 @@ SwLayIdle::SwLayIdle( SwRootFrame *pRt, SwViewShellImp 
*pI ) :
                 bool bUnlock = false;
                 if ( pViewImp->HasPaintRegion() )
                 {
+                    SAL_INFO("sw.idle", "Disappointing full document 
invalidation");
                     pViewImp->DeletePaintRegion();
 
                     // Cause a repaint with virtual device.
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 8a99aa5de310..53457942749f 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -475,7 +475,7 @@ void SwViewShell::ImplStartAction()
 
 void SwViewShell::ImplLockPaint()
 {
-    if ( GetWin() && GetWin()->IsVisible() )
+    if ( GetWin() && GetWin()->IsVisible() && 
!comphelper::LibreOfficeKit::isActive())
         GetWin()->EnablePaint( false ); //Also cut off the controls.
     Imp()->LockPaint();
 }
@@ -485,7 +485,7 @@ void SwViewShell::ImplUnlockPaint( bool bVirDev )
     CurrShell aCurr( this );
     if ( GetWin() && GetWin()->IsVisible() )
     {
-        if ( (bInSizeNotify || bVirDev ) && VisArea().HasArea() )
+        if ( (bInSizeNotify || bVirDev ) && VisArea().HasArea() && 
!comphelper::LibreOfficeKit::isActive())
         {
             //Refresh with virtual device to avoid flickering.
             VclPtrInstance<VirtualDevice> pVout( *mpOut );

Reply via email to