summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libreofficekit/source/gtk/lokdocview.cxx16
-rw-r--r--vcl/source/app/svapp.cxx2
2 files changed, 8 insertions, 10 deletions
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 926f1328ea42..4cb9ef3ea553 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -2772,17 +2772,13 @@ static void lok_doc_view_destroy (GtkWidget* widget)
if (priv->m_pDocument)
{
- if (priv->m_pDocument->pClass->getViewsCount(priv->m_pDocument) > 1)
+ // This call may drop several views - e.g., embedded OLE in-place clients
+ priv->m_pDocument->pClass->destroyView(priv->m_pDocument, priv->m_nViewId);
+ if (priv->m_pDocument->pClass->getViewsCount(priv->m_pDocument) == 0)
{
- priv->m_pDocument->pClass->destroyView(priv->m_pDocument, priv->m_nViewId);
- }
- else
- {
- if (priv->m_pDocument)
- {
- priv->m_pDocument->pClass->destroy (priv->m_pDocument);
- priv->m_pDocument = nullptr;
- }
+ // Last view(s) gone
+ priv->m_pDocument->pClass->destroy (priv->m_pDocument);
+ priv->m_pDocument = nullptr;
if (priv->m_pOffice)
{
priv->m_pOffice->pClass->destroy (priv->m_pOffice);
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index ec66f82d9de6..3579787cacf8 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1791,6 +1791,8 @@ bool isUnipoll()
void numberOfViewsChanged(int count)
{
+ if (count == 0)
+ return;
ImplSVData * pSVData = ImplGetSVData();
auto& rCache = pSVData->maGDIData.maScaleCache;
// Normally the cache size is set to 10, scale according to the number of users.