sc/source/filter/inc/condformatbuffer.hxx | 2 ++ sc/source/filter/oox/condformatbuffer.cxx | 12 ++++++++++++ 2 files changed, 14 insertions(+)
New commits: commit f16b722d7386b47fdc7afa5dfb21a948cb1a4969 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Fri Mar 17 15:07:42 2023 -0400 Commit: Henry Castro <hcas...@collabora.com> CommitDate: Wed Jun 14 21:15:33 2023 +0200 sc: filter: oox: update databar format before clone The ScDataBarFormatData should update from import (finalizeImport) before cloning, otherwise it loose data. Signed-off-by: Henry Castro <hcas...@collabora.com> Change-Id: I4af8b79e93eed8091bf01244bacac1d12e591c45 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149068 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153068 Tested-by: Jenkins diff --git a/sc/source/filter/inc/condformatbuffer.hxx b/sc/source/filter/inc/condformatbuffer.hxx index cdc8d4727baf..d5d5ebac2ab5 100644 --- a/sc/source/filter/inc/condformatbuffer.hxx +++ b/sc/source/filter/inc/condformatbuffer.hxx @@ -271,6 +271,7 @@ public: void importAxisColor( const AttributeList& rAttribs ); void importCfvo( const AttributeList& rAttribs ); ExCfRuleModel& getModel() { return maModel; } + const ScDataBarFormatData* GetDataBarData() { return mpTarget; } }; class ExtCfCondFormat @@ -311,6 +312,7 @@ public: void finalizeImport(); private: CondFormatRef createCondFormat(); + void updateImport(const ScDataBarFormatData* pTarget); private: typedef RefVector< CondFormat > CondFormatVec; diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index 2662b5213a34..4c55792779af 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -1197,6 +1197,16 @@ public: } +void CondFormatBuffer::updateImport(const ScDataBarFormatData* pTarget) +{ + for ( const auto& rRule : maCfRules ) + { + if ( rRule && rRule->GetDataBarData() == pTarget ) + rRule->finalizeImport(); + } +} + + void CondFormatBuffer::finalizeImport() { std::unordered_set<size_t> aDoneExtCFs; @@ -1224,6 +1234,8 @@ void CondFormatBuffer::finalizeImport() for (const auto& rxEntry : rEntries) { CondFormatRuleRef xRule = rCondFormat.createRule(); + if (ScDataBarFormat *pData = dynamic_cast<ScDataBarFormat*>(rxEntry.get())) + updateImport(pData->GetDataBarData()); ScFormatEntry* pNewEntry = rxEntry->Clone(pDoc); sal_Int32 nPriority = rPriorities[nEntryIdx]; if (nPriority == -1)