sc/inc/colorscale.hxx | 2 ++ sc/source/core/data/colorscale.cxx | 15 +++++++++++++++ 2 files changed, 17 insertions(+)
New commits: commit b95e81a9b0b584b2439a34737ce269ebb372e604 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Thu May 11 16:23:03 2023 -0400 Commit: Henry Castro <hcas...@collabora.com> CommitDate: Tue May 16 22:18:36 2023 +0200 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 <hcas...@collabora.com> Change-Id: Id9085a1488a3bde24842e0d2e062c9b425074157 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151839 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx index e78baf0871b2..90a973391995 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 1bb36712fd13..7fd48f47305d 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 @@ -457,6 +460,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)