sw/source/core/layout/layact.cxx | 1 + sw/source/core/view/viewsh.cxx | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-)
New commits: commit ab2e73d33addd6a4cf489597cb2a7b6a401d15c6 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 18:01:24 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 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150117 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 81c3a588c363..4277b6e6c3a3 100644 --- a/sw/source/core/layout/layact.cxx +++ b/sw/source/core/layout/layact.cxx @@ -2338,6 +2338,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 7c4b55729ca7..30218dceead1 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -468,7 +468,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(); } @@ -478,7 +478,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 );