summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2023-03-17 15:07:42 -0400
committerAndras Timar <andras.timar@collabora.com>2023-03-23 07:15:23 +0000
commite064a1ba02193e7f6572bed8e5844928af475cf6 (patch)
tree00047f0deaf8dfedf5faf165e685a4736f4ad1ed /sc
parent68f70bc79ef52dd3b17d451881829c88e666dd91 (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.hxx2
-rw-r--r--sc/source/filter/oox/condformatbuffer.cxx12
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)