diff options
-rw-r--r-- | include/vcl/ITiledRenderable.hxx | 9 | ||||
-rw-r--r-- | sd/source/ui/inc/unomodel.hxx | 5 | ||||
-rw-r--r-- | sfx2/source/view/lokhelper.cxx | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx index 63646d5c5df0..a204713dd91b 100644 --- a/include/vcl/ITiledRenderable.hxx +++ b/include/vcl/ITiledRenderable.hxx @@ -340,6 +340,15 @@ public: virtual void completeFunction(int /*nIndex*/) { } + + /** + * It can happen that the underlying implementation is being disposed, but + * somebedy is trying to access the data... + */ + virtual bool isDisposed() const + { + return false; + } }; } // namespace vcl diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx index 9282d0aeef80..7d7a9ee8005c 100644 --- a/sd/source/ui/inc/unomodel.hxx +++ b/sd/source/ui/inc/unomodel.hxx @@ -268,6 +268,11 @@ public: virtual void moveSelectedParts(int nPosition, bool bDuplicate) override; /// @see vcl::ITiledRenderable::getPartInfo(). virtual OUString getPartInfo(int nPart) override; + /// @see vcl::ITiledRenderable::isDisposed(). + virtual bool isDisposed() const override + { + return mbDisposed; + } // XComponent diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index 58076bf0143e..f478b667f407 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -303,7 +303,7 @@ void SfxLokHelper::notifyInvalidation(SfxViewShell const* pThisView, const OStri void SfxLokHelper::notifyDocumentSizeChanged(SfxViewShell const* pThisView, const OString& rPayload, vcl::ITiledRenderable* pDoc, bool bInvalidateAll) { - if (!pDoc || !comphelper::LibreOfficeKit::isActive() || DisableCallbacks::disabled()) + if (!pDoc || pDoc->isDisposed() || !comphelper::LibreOfficeKit::isActive() || DisableCallbacks::disabled()) return; if (bInvalidateAll) |