summaryrefslogtreecommitdiff
path: root/svx/source
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source')
-rw-r--r--svx/source/svdraw/sdrpagewindow.cxx20
1 files changed, 18 insertions, 2 deletions
diff --git a/svx/source/svdraw/sdrpagewindow.cxx b/svx/source/svdraw/sdrpagewindow.cxx
index add2130a32be..729c65ea997e 100644
--- a/svx/source/svdraw/sdrpagewindow.cxx
+++ b/svx/source/svdraw/sdrpagewindow.cxx
@@ -36,7 +36,7 @@
#include <osl/mutex.hxx>
#include <svx/fmview.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-
+#include <sfx2/lokhelper.hxx>
using namespace ::com::sun::star;
@@ -409,7 +409,23 @@ void SdrPageWindow::RedrawLayer(const SdrLayerID* pId,
// Invalidate call, used from ObjectContact(OfPageView) in InvalidatePartOfView(...)
void SdrPageWindow::InvalidatePageWindow(const basegfx::B2DRange& rRange)
{
- if(GetPageView().IsVisible() && GetPaintWindow().OutputToWindow())
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ // we don't really have a paint window with LOK; OTOH we know that the
+ // drawinglayer units are 100ths of mm, so they are easy to convert to
+ // twips
+ const Rectangle aRect100thMM(
+ static_cast<long>(floor(rRange.getMinX())),
+ static_cast<long>(floor(rRange.getMinY())),
+ static_cast<long>(ceil(rRange.getMaxX())),
+ static_cast<long>(ceil(rRange.getMaxY())));
+
+ const Rectangle aRectTwips = OutputDevice::LogicToLogic(aRect100thMM, MapUnit::Map100thMM, MapUnit::MapTwip);
+
+ if (SfxViewShell* pViewShell = SfxViewShell::Current())
+ SfxLokHelper::notifyInvalidation(pViewShell, aRectTwips.toString());
+ }
+ else if (GetPageView().IsVisible() && GetPaintWindow().OutputToWindow())
{
const SvtOptionsDrawinglayer aDrawinglayerOpt;
vcl::Window& rWindow(static_cast< vcl::Window& >(GetPaintWindow().GetOutputDevice()));