diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-07-28 09:52:25 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-07-28 08:54:20 +0000 |
commit | 538ea31c992acb9d47ffd783543e50e149272aac (patch) | |
tree | 74712f9afb17a6dd8cbafae0dd67a0326440910d /libreofficekit | |
parent | fa1b59710863b797d32273c58f6ab116d3ab5ad6 (diff) |
gtktiledviewer: quit after the last view is destroyed
To allow debugging crash-on-exit problems.
Change-Id: Ie54a8391e721c3ba8034b4618dd30733bac97a27
Reviewed-on: https://gerrit.libreoffice.org/27605
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'libreofficekit')
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index 58139a53c50d..37cf7e2dff42 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -1210,13 +1210,28 @@ static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpo gtk_widget_hide(rWindow.m_pProgressBar); } +/** + * Wrapper around gtk_widget_destroy() that quits when the last tiled window is + * destroyed. + */ +static void destroyWindow(GtkWidget* pWidget) +{ + gtk_widget_destroy(pWidget); + auto it = g_aWindows.find(pWidget); + if (it != g_aWindows.end()) + g_aWindows.erase(it); + + if (g_aWindows.empty()) + gtk_main_quit(); +} + /// Creates the GtkWindow that has main widget as children and registers it in the window map. static GtkWidget* createWindow(TiledWindow& rWindow) { GtkWidget *pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "LibreOfficeKit GTK Tiled Viewer"); gtk_window_set_default_size(GTK_WINDOW(pWindow), 1024, 768); - g_signal_connect(pWindow, "destroy", G_CALLBACK(gtk_widget_destroy), pWindow); + g_signal_connect(pWindow, "destroy", G_CALLBACK(destroyWindow), pWindow); rWindow.m_pVBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(pWindow), rWindow.m_pVBox); |