diff options
author | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2022-04-04 18:05:18 +0300 |
---|---|---|
committer | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2022-04-05 16:50:21 +0200 |
commit | fafadd7aee8c384af210008f693b5007a9f5ea48 (patch) | |
tree | 24d8e94e3347e2548ae0370ccfe7ab7c7427e71e /writerfilter | |
parent | 28318bed905f21d25aa69d4153858e91b6d13cd1 (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.cxx | 20 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SdtHelper.hxx | 3 |
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); |