summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorVasily Melenchuk <vasily.melenchuk@cib.de>2022-04-04 18:05:18 +0300
committerVasily Melenchuk <vasily.melenchuk@cib.de>2022-04-05 16:50:21 +0200
commitfafadd7aee8c384af210008f693b5007a9f5ea48 (patch)
tree24d8e94e3347e2548ae0370ccfe7ab7c7427e71e /writerfilter
parent28318bed905f21d25aa69d4153858e91b6d13cd1 (diff)
tdf#148361: docx sdt: cleanup databinding data after inserting
Databinding data is used only for current sdt block. It should be clean up after usage to avoid impact on next sdt blocks. Change-Id: I53f47dd655ed027d40eb518784dcae69813e612f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132524 Tested-by: Jenkins Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Vasily Melenchuk <vasily.melenchuk@cib.de>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/SdtHelper.cxx20
-rw-r--r--writerfilter/source/dmapper/SdtHelper.hxx3
2 files changed, 17 insertions, 6 deletions
diff --git a/writerfilter/source/dmapper/SdtHelper.cxx b/writerfilter/source/dmapper/SdtHelper.cxx
index 6d02a044dae6..0bda90d71e4f 100644
--- a/writerfilter/source/dmapper/SdtHelper.cxx
+++ b/writerfilter/source/dmapper/SdtHelper.cxx
@@ -262,8 +262,7 @@ void SdtHelper::createDropDownControl()
}
// clean up
- m_aDropDownItems.clear();
- setControlType(SdtControlType::unknown);
+ clear();
}
void SdtHelper::createPlainTextControl()
@@ -294,8 +293,7 @@ void SdtHelper::createPlainTextControl()
uno::makeAny(getInteropGrabBagAndClear()));
// clean up
- m_aDropDownItems.clear();
- setControlType(SdtControlType::unknown);
+ clear();
}
void SdtHelper::createDateContentControl()
@@ -370,11 +368,11 @@ void SdtHelper::createDateContentControl()
uno::UNO_QUERY);
xRefreshable->refresh();
- setControlType(SdtControlType::unknown);
-
// Store all unused sdt parameters from grabbag
xNameCont->insertByName(UNO_NAME_MISC_OBJ_INTEROPGRABBAG,
uno::makeAny(getInteropGrabBagAndClear()));
+
+ clear();
}
void SdtHelper::createControlShape(awt::Size aSize,
@@ -421,6 +419,16 @@ bool SdtHelper::containedInInteropGrabBag(const OUString& rValueName)
[&rValueName](const beans::PropertyValue& i) { return i.Name == rValueName; });
}
+void SdtHelper::clear()
+{
+ m_aDropDownItems.clear();
+ setControlType(SdtControlType::unknown);
+ m_sDataBindingPrefixMapping.clear();
+ m_sDataBindingXPath.clear();
+ m_sDataBindingStoreItemID.clear();
+ m_aGrabBag.clear();
+}
+
} // namespace writerfilter::dmapper
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/SdtHelper.hxx b/writerfilter/source/dmapper/SdtHelper.hxx
index fb458d8d8b94..54e083ee8df2 100644
--- a/writerfilter/source/dmapper/SdtHelper.hxx
+++ b/writerfilter/source/dmapper/SdtHelper.hxx
@@ -102,6 +102,9 @@ class SdtHelper final : public virtual SvRefBase
void loadPropertiesXMLs();
+ /// Clear all collected attributes for futher reuse
+ void clear();
+
public:
explicit SdtHelper(DomainMapper_Impl& rDM_Impl,
css::uno::Reference<css::uno::XComponentContext> const& xContext);