diff options
author | Henry Castro <hcastro@collabora.com> | 2023-03-17 15:07:42 -0400 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2023-03-23 07:15:23 +0000 |
commit | e064a1ba02193e7f6572bed8e5844928af475cf6 (patch) | |
tree | 00047f0deaf8dfedf5faf165e685a4736f4ad1ed /sc | |
parent | 68f70bc79ef52dd3b17d451881829c88e666dd91 (diff) |
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 <hcastro@collabora.com>
Change-Id: I4af8b79e93eed8091bf01244bacac1d12e591c45
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149344
Tested-by: Andras Timar <andras.timar@collabora.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/inc/condformatbuffer.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/oox/condformatbuffer.cxx | 12 |
2 files changed, 14 insertions, 0 deletions
diff --git a/sc/source/filter/inc/condformatbuffer.hxx b/sc/source/filter/inc/condformatbuffer.hxx index 8ccd7fc12e2c..61271c08441d 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 9b2b10956256..8f289d383f94 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -1195,6 +1195,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; @@ -1222,6 +1232,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) |