From 905beaa8e862323199263feaeb6262f43fbfc0bc Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Fri, 15 Jul 2016 15:37:51 +0200 Subject: [PATCH] gtktiledviewer: allow testing of destroyView() By calling it when we're not the last window. Change-Id: I6fd4763243fc088ccfe015b6c03b6b3f25146fac --- libreofficekit/source/gtk/lokdocview.cxx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 92cf6b3..b6f34ac 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -127,6 +127,9 @@ struct LOKDocViewPrivateImpl /// View ID, returned by createView() or 0 by default. int m_nViewId; + /// Event source ID for handleTimeout() of this widget. + guint m_nTimeoutId; + LOKDocViewPrivateImpl() : m_aLOPath(nullptr), m_pUserProfileURL(nullptr), @@ -165,11 +168,19 @@ struct LOKDocViewPrivateImpl m_aHandleEndRect({0, 0, 0, 0}), m_bInDragEndHandle(false), m_pGraphicHandle(nullptr), - m_nViewId(0) + m_nViewId(0), + m_nTimeoutId(0) { memset(&m_aGraphicHandleRects, 0, sizeof(m_aGraphicHandleRects)); memset(&m_bInDragGraphicHandles, 0, sizeof(m_bInDragGraphicHandles)); } + + ~LOKDocViewPrivateImpl() + { + if (m_nTimeoutId) + g_source_remove(m_nTimeoutId); + } + }; /// Wrapper around LOKDocViewPrivateImpl, managed by malloc/memset/free. @@ -768,7 +779,7 @@ static gboolean postDocumentLoad(gpointer pData) priv->m_pDocument->pClass->initializeForRendering(priv->m_pDocument, priv->m_aRenderingArguments.c_str()); priv->m_pDocument->pClass->registerCallback(priv->m_pDocument, callbackWorker, pLOKDocView); priv->m_pDocument->pClass->getDocumentSize(priv->m_pDocument, &priv->m_nDocumentWidthTwips, &priv->m_nDocumentHeightTwips); - g_timeout_add(600, handleTimeout, pLOKDocView); + priv->m_nTimeoutId = g_timeout_add(600, handleTimeout, pLOKDocView); float zoom = priv->m_fZoom; long nDocumentWidthTwips = priv->m_nDocumentWidthTwips; -- 1.8.3.1