summaryrefslogtreecommitdiff
path: root/vcl/jsdialog
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-06-25 11:24:15 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2020-06-26 10:11:11 +0200
commit880b1566956b2ca1e8b80a278458bd8884039096 (patch)
tree30c0b7be5dc838fcc768ed170d0d5a349145eea5 /vcl/jsdialog
parent78d7aec108cd9d979ff00d4376ad2f12dd867f05 (diff)
revert jsdialog: always clean remember widgets
Don't delete all widgets when nested tab page is used Change-Id: I0ce2ce976791ca0c8325013df10f01abe341b78d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97119 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl/jsdialog')
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx12
1 files changed, 11 insertions, 1 deletions
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index f4a1b17cf221..73cb41e0e089 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -64,6 +64,7 @@ JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIR
, m_nWindowId(0)
, m_aParentDialog(nullptr)
, m_bHasTopLevelDialog(false)
+ , m_bIsNotebookbar(false)
{
vcl::Window* pRoot = get_builder().get_widget_root();
if (pRoot && pRoot->GetParent())
@@ -83,6 +84,7 @@ JSInstanceBuilder::JSInstanceBuilder(vcl::Window* pParent, const OUString& rUIRo
, m_nWindowId(0)
, m_aParentDialog(nullptr)
, m_bHasTopLevelDialog(false)
+ , m_bIsNotebookbar(false)
{
vcl::Window* pRoot = get_builder().get_widget_root();
if (pRoot && pRoot->GetParent())
@@ -91,12 +93,19 @@ JSInstanceBuilder::JSInstanceBuilder(vcl::Window* pParent, const OUString& rUIRo
if (m_aParentDialog)
m_nWindowId = m_aParentDialog->GetLOKWindowId();
if (!m_nWindowId && nWindowId)
+ {
m_nWindowId = nWindowId;
+ m_bIsNotebookbar = true;
+ }
InsertWindowToMap(m_nWindowId);
}
}
-JSInstanceBuilder::~JSInstanceBuilder() { GetLOKWeldWidgetsMap().erase(m_nWindowId); }
+JSInstanceBuilder::~JSInstanceBuilder()
+{
+ if (m_nWindowId && (m_bHasTopLevelDialog || m_bIsNotebookbar))
+ GetLOKWeldWidgetsMap().erase(m_nWindowId);
+}
std::map<sal_uInt64, WidgetMap>& JSInstanceBuilder::GetLOKWeldWidgetsMap()
{
@@ -136,6 +145,7 @@ void JSInstanceBuilder::RememberWidget(const OString& id, weld::Widget* pWidget)
auto it = GetLOKWeldWidgetsMap().find(m_nWindowId);
if (it != GetLOKWeldWidgetsMap().end())
{
+ it->second.erase(id);
it->second.insert(WidgetMap::value_type(id, pWidget));
}
}