[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