[Libreoffice-commits] core.git: vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Dec 20 08:54:38 UTC 2019


 vcl/unx/gtk3/gtk3gtkinst.cxx |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

New commits:
commit 011dda766ec850d99783c0bd90a5c535c5d113c4
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Dec 19 21:23:48 2019 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Dec 20 09:53:32 2019 +0100

    destroy SystemChildWindow at the right stage
    
    Change-Id: I4deab0b7ed184684b95548b090bbcbabe9082f61
    Reviewed-on: https://gerrit.libreoffice.org/85549
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 0df44590ced6..5d80c7eb8ac3 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -12541,6 +12541,8 @@ private:
     std::vector<GtkButton*> m_aMnemonicButtons;
     std::vector<GtkLabel*> m_aMnemonicLabels;
 
+    VclPtr<SystemChildWindow> m_xInterimGlue;
+
     void postprocess_widget(GtkWidget* pWidget)
     {
         const bool bHideHelp = comphelper::LibreOfficeKit::isActive() &&
@@ -12722,12 +12724,13 @@ private:
         pThis->postprocess_widget(GTK_WIDGET(pObject));
     }
 public:
-    GtkInstanceBuilder(GtkWidget* pParent, const OUString& rUIRoot, const OUString& rUIFile)
+    GtkInstanceBuilder(GtkWidget* pParent, const OUString& rUIRoot, const OUString& rUIFile, SystemChildWindow* pInterimGlue)
         : weld::Builder(rUIFile)
         , m_pStringReplace(Translate::GetReadStringHook())
         , m_sHelpRoot(rUIFile)
         , m_pParentWidget(pParent)
         , m_nNotifySignalId(0)
+        , m_xInterimGlue(pInterimGlue)
     {
         ensure_intercept_drawing_area_accessibility();
 
@@ -12811,6 +12814,7 @@ public:
     {
         g_slist_free(m_pObjectList);
         g_object_unref(m_pBuilder);
+        m_xInterimGlue.disposeAndClear();
     }
 
     //ideally we would have/use weld::Container add and explicitly
@@ -13276,7 +13280,7 @@ weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString&
     if (pParent && !pParentWidget) //remove when complete
         return SalInstance::CreateBuilder(pParent, rUIRoot, rUIFile);
     GtkWidget* pBuilderParent = pParentWidget ? pParentWidget->getWidget() : nullptr;
-    return new GtkInstanceBuilder(pBuilderParent, rUIRoot, rUIFile);
+    return new GtkInstanceBuilder(pBuilderParent, rUIRoot, rUIFile, nullptr);
 }
 
 weld::Builder* GtkInstance::CreateInterimBuilder(vcl::Window* pParent, const OUString& rUIRoot, const OUString& rUIFile)
@@ -13297,7 +13301,7 @@ weld::Builder* GtkInstance::CreateInterimBuilder(vcl::Window* pParent, const OUS
     gtk_widget_show_all(pWindow);
 
     // build the widget tree as a child of the GtkEventBox GtkGrid parent
-    return new GtkInstanceBuilder(pWindow, rUIRoot, rUIFile);
+    return new GtkInstanceBuilder(pWindow, rUIRoot, rUIFile, xEmbedWindow.get());
 }
 
 weld::MessageDialog* GtkInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonsType, const OUString &rPrimaryMessage)


More information about the Libreoffice-commits mailing list