vcl/unx/gtk3/gtk3gtkinst.cxx | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-)
New commits: commit e0f63fdebc6181bea39dad163566da5afe61b88a Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Fri Nov 1 11:39:13 2019 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Nov 25 17:43:03 2019 +0100 the label sync button will relaunch itself from its close handler so rearrange things so that runAsync can survive that Reviewed-on: https://gerrit.libreoffice.org/81884 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> (cherry picked from commit 60692ba238c6c5c003722ccaa52702e9ef3ade13) Change-Id: I7d40637fb861ceb64ce32f0e9ecb3451c0d17bad Reviewed-on: https://gerrit.libreoffice.org/83523 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 194d669cdedf..090275da6e97 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3242,7 +3242,7 @@ public: if (gtk_widget_get_visible(m_pWidget)) return; sort_native_button_order(GTK_BOX(gtk_dialog_get_action_area(m_pDialog))); - gtk_widget_show(m_pWidget); + GtkInstanceWindow::show(); } virtual void set_modal(bool bModal) override @@ -4854,24 +4854,26 @@ void GtkInstanceDialog::asyncresponse(gint ret) } hide(); - m_aFunc(GtkToVcl(ret)); - - if (m_nResponseSignalId) - { - g_signal_handler_disconnect(m_pDialog, m_nResponseSignalId); - m_nResponseSignalId = 0; - } - if (m_nSignalDeleteId) - { - g_signal_handler_disconnect(m_pDialog, m_nSignalDeleteId); - m_nSignalDeleteId = 0; - } - m_aFunc = nullptr; // move the self pointer, otherwise it might be de-allocated by time we try to reset it - std::shared_ptr<weld::Dialog> me = std::move(m_xRunAsyncSelf); - m_xDialogController.reset(); - me.reset(); + auto xRunAsyncSelf = std::move(m_xRunAsyncSelf); + auto xDialogController = std::move(m_xDialogController); + auto aFunc = std::move(m_aFunc); + + auto nResponseSignalId = m_nResponseSignalId; + auto nSignalDeleteId = m_nSignalDeleteId; + m_nResponseSignalId = 0; + m_nSignalDeleteId = 0; + + aFunc(GtkToVcl(ret)); + + if (nResponseSignalId) + g_signal_handler_disconnect(m_pDialog, nResponseSignalId); + if (nSignalDeleteId) + g_signal_handler_disconnect(m_pDialog, nSignalDeleteId); + + xDialogController.reset(); + xRunAsyncSelf.reset(); } int GtkInstanceDialog::run() _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits