|
 |
f325b2 |
From 4910cb9a1be7040142cedc0ccfb1bec2d74b3dca Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
 |
f325b2 |
Date: Fri, 5 May 2017 14:34:51 +0100
|
|
 |
f325b2 |
Subject: [PATCH 4/6] rhbz#1444437 gnome-documents finalize may not occur
|
|
 |
f325b2 |
immediately
|
|
 |
f325b2 |
MIME-Version: 1.0
|
|
 |
f325b2 |
Content-Type: text/plain; charset=UTF-8
|
|
 |
f325b2 |
Content-Transfer-Encoding: 8bit
|
|
 |
f325b2 |
|
|
 |
f325b2 |
when LOK Widget is destroyed, it may instead happen during GC of javascript,
|
|
 |
f325b2 |
like in the in gnome-documents case, but "destroy" will be called promptly. So
|
|
 |
f325b2 |
close documents and office in destroy, not finalize
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Reviewed-on: https://gerrit.libreoffice.org/37398
|
|
 |
f325b2 |
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
 |
f325b2 |
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
 |
f325b2 |
(cherry picked from commit c45660df336a640f0f9d4290b881548d25c9db9d)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: I1dd7b828839894cb2d87f5c087194fe458ca22f0
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
libreofficekit/source/gtk/lokdocview.cxx | 17 +++++++++++++++--
|
|
 |
f325b2 |
1 file changed, 15 insertions(+), 2 deletions(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
|
|
 |
f325b2 |
index 13ae6ea..7d1ec01 100644
|
|
 |
f325b2 |
--- a/libreofficekit/source/gtk/lokdocview.cxx
|
|
 |
f325b2 |
+++ b/libreofficekit/source/gtk/lokdocview.cxx
|
|
 |
f325b2 |
@@ -2042,15 +2042,27 @@ static gboolean lok_doc_view_draw (GtkWidget* pWidget, cairo_t* pCairo)
|
|
 |
f325b2 |
return FALSE;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
-static void lok_doc_view_finalize (GObject* object)
|
|
 |
f325b2 |
+//rhbz#1444437 finalize may not occur immediately when this widget is destroyed
|
|
 |
f325b2 |
+//it may happen during GC of javascript, e.g. in gnome-documents but "destroy"
|
|
 |
f325b2 |
+//will be called promptly, so close documents in destroy, not finalize
|
|
 |
f325b2 |
+static void lok_doc_view_destroy (GtkWidget* widget)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- LOKDocView* pDocView = LOK_DOC_VIEW (object);
|
|
 |
f325b2 |
+ LOKDocView* pDocView = LOK_DOC_VIEW (widget);
|
|
 |
f325b2 |
LOKDocViewPrivate& priv = getPrivate(pDocView);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
if (priv->m_pDocument)
|
|
 |
f325b2 |
priv->m_pDocument->pClass->destroy (priv->m_pDocument);
|
|
 |
f325b2 |
if (priv->m_pOffice)
|
|
 |
f325b2 |
priv->m_pOffice->pClass->destroy (priv->m_pOffice);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ GTK_WIDGET_CLASS (lok_doc_view_parent_class)->destroy (widget);
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+static void lok_doc_view_finalize (GObject* object)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ LOKDocView* pDocView = LOK_DOC_VIEW (object);
|
|
 |
f325b2 |
+ LOKDocViewPrivate& priv = getPrivate(pDocView);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
delete priv.m_pImpl;
|
|
 |
f325b2 |
priv.m_pImpl = nullptr;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
@@ -2099,6 +2111,7 @@ static void lok_doc_view_class_init (LOKDocViewClass* pClass)
|
|
 |
f325b2 |
pWidgetClass->key_press_event = signalKey;
|
|
 |
f325b2 |
pWidgetClass->key_release_event = signalKey;
|
|
 |
f325b2 |
pWidgetClass->motion_notify_event = lok_doc_view_signal_motion;
|
|
 |
f325b2 |
+ pWidgetClass->destroy = lok_doc_view_destroy;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
/**
|
|
 |
f325b2 |
* LOKDocView:lopath:
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.9.3
|
|
 |
f325b2 |
|