[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - vcl/inc vcl/jsdialog

Szymon KÅ‚os (via logerrit) logerrit at kemper.freedesktop.org
Mon Nov 30 14:03:56 UTC 2020


 vcl/inc/jsdialog/jsdialogbuilder.hxx |    1 +
 vcl/jsdialog/jsdialogbuilder.cxx     |   12 ++++++++++++
 2 files changed, 13 insertions(+)

New commits:
commit ccd514c6fa759181a41706ba8cf6205e89b05e0f
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Nov 3 13:27:47 2020 +0100
Commit:     Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Mon Nov 30 15:03:23 2020 +0100

    jsdialog: cleanup when destroying builder
    
    Change-Id: I38bf65eb96b560970fb03eafaea89446e89a2896
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106568
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 0682cc0d1bc5..709030d0c931 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -64,6 +64,7 @@ class JSInstanceBuilder : public SalInstanceBuilder
     /// used in case of tab pages where dialog is not a direct top level
     VclPtr<vcl::Window> m_aParentDialog;
     VclPtr<vcl::Window> m_aContentWindow;
+    std::list<std::string> m_aRememberedWidgets;
     std::string m_sTypeOfJSON;
     bool m_bHasTopLevelDialog;
     bool m_bIsNotebookbar;
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 92f0dc9769ea..827cb6aaa44d 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -167,7 +167,18 @@ JSInstanceBuilder* JSInstanceBuilder::CreateAutofilterWindowBuilder(vcl::Window*
 JSInstanceBuilder::~JSInstanceBuilder()
 {
     if (m_nWindowId && (m_bHasTopLevelDialog || m_bIsNotebookbar))
+    {
         GetLOKWeldWidgetsMap().erase(m_nWindowId);
+    }
+    else
+    {
+        auto it = GetLOKWeldWidgetsMap().find(m_nWindowId);
+        if (it != GetLOKWeldWidgetsMap().end())
+        {
+            std::for_each(m_aRememberedWidgets.begin(), m_aRememberedWidgets.end(),
+                          [it](std::string& sId) { it->second.erase(sId.c_str()); });
+        }
+    }
 }
 
 std::map<sal_uInt64, WidgetMap>& JSInstanceBuilder::GetLOKWeldWidgetsMap()
@@ -207,6 +218,7 @@ void JSInstanceBuilder::RememberWidget(const OString& id, weld::Widget* pWidget)
     {
         it->second.erase(id);
         it->second.insert(WidgetMap::value_type(id, pWidget));
+        m_aRememberedWidgets.push_back(id.getStr());
     }
 }
 


More information about the Libreoffice-commits mailing list