lok sc: Don't depend on the OutputDevice existence when invalidating.
We know that the drawinglayer operates in 100th of millimetre, and that we need twips for LOK. Change-Id: I8813f936ab66eaca4d6b9c03341e090d703decb8
This commit is contained in:
@@ -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()));
|
||||
|
Reference in New Issue
Block a user