summaryrefslogtreecommitdiffstats
path: root/libreofficekit
diff options
context:
space:
mode:
Diffstat (limited to 'libreofficekit')
-rw-r--r--libreofficekit/source/gtk/lokdocview.cxx34
1 files changed, 23 insertions, 11 deletions
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 65c5a64111f6..fd367052ddca 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -2608,20 +2608,32 @@ static void lok_doc_view_destroy (GtkWidget* widget)
std::stringstream ss;
ss << "lok::Document::setView(" << priv->m_nViewId << ")";
g_info("%s", ss.str().c_str());
- priv->m_pDocument->pClass->setView(priv->m_pDocument, priv->m_nViewId);
- priv->m_pDocument->pClass->registerCallback(priv->m_pDocument, nullptr, nullptr);
- aGuard.unlock();
-
- if (priv->m_pDocument && priv->m_pDocument->pClass->getViewsCount(priv->m_pDocument) > 1)
+ if (priv->m_pDocument)
{
- priv->m_pDocument->pClass->destroyView(priv->m_pDocument, priv->m_nViewId);
+ priv->m_pDocument->pClass->setView(priv->m_pDocument, priv->m_nViewId);
+ priv->m_pDocument->pClass->registerCallback(priv->m_pDocument, nullptr, nullptr);
}
- else
+ aGuard.unlock();
+
+ if (priv->m_pDocument)
{
- if (priv->m_pDocument)
- priv->m_pDocument->pClass->destroy (priv->m_pDocument);
- if (priv->m_pOffice)
- priv->m_pOffice->pClass->destroy (priv->m_pOffice);
+ if (priv->m_pDocument->pClass->getViewsCount(priv->m_pDocument) > 1)
+ {
+ 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;
+ }
+ if (priv->m_pOffice)
+ {
+ priv->m_pOffice->pClass->destroy (priv->m_pOffice);
+ priv->m_pOffice = nullptr;
+ }
+ }
}
GTK_WIDGET_CLASS (lok_doc_view_parent_class)->destroy (widget);