summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2023-05-11 16:23:03 -0400
committerAndras Timar <andras.timar@collabora.com>2023-06-14 14:31:09 +0200
commitbea5434e280f20568de50c9c90c946259c7d3db3 (patch)
tree932d7faebf78d6862f7e9a0b0276e80eb937bbd7
parentb81ccbf6d48c6c2e79929332f5574ac5e6f48d6d (diff)
tdf#154477: sc: copy cache values when clone color conditional format
When clone a conditional format list, also copy the cache values that hold the min and max values, otherwise if clone occurs when copying to the clipboard the values have wrong data due to limiting range cells copied. Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: Id9085a1488a3bde24842e0d2e062c9b425074157 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151836 Tested-by: Jenkins (cherry picked from commit c85255fd7a62bec9342fa6f2a79d1395979d54be)
-rw-r--r--sc/inc/colorscale.hxx2
-rw-r--r--sc/source/core/data/colorscale.cxx15
2 files changed, 17 insertions, 0 deletions
diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx
index 9923eac4c572..fc5c34dda287 100644
--- a/sc/inc/colorscale.hxx
+++ b/sc/inc/colorscale.hxx
@@ -224,6 +224,8 @@ public:
virtual ~ScColorFormat() override;
const ScRangeList& GetRange() const;
+ void SetCache(const std::vector<double>& aValues);
+ std::vector<double> GetCache() const;
virtual void SetParent(ScConditionalFormat* pParent) override;
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 33880848d5fc..246541b78a68 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -378,6 +378,9 @@ ScColorScaleFormat::ScColorScaleFormat(ScDocument* pDoc, const ScColorScaleForma
{
maColorScales.emplace_back(new ScColorScaleEntry(pDoc, *rxEntry));
}
+
+ auto aCache = rFormat.GetCache();
+ SetCache(aCache);
}
ScColorFormat* ScColorScaleFormat::Clone(ScDocument* pDoc) const
@@ -439,6 +442,18 @@ const ScRangeList& ScColorFormat::GetRange() const
return mpParent->GetRange();
}
+std::vector<double> ScColorFormat::GetCache() const
+{
+ std::vector<double> empty;
+ return mpCache ? mpCache->maValues : empty;
+}
+
+void ScColorFormat::SetCache(const std::vector<double>& aValues)
+{
+ mpCache.reset(new ScColorFormatCache);
+ mpCache->maValues = aValues;
+}
+
std::vector<double>& ScColorFormat::getValues() const
{
if(!mpCache)