sc/inc/colorscale.hxx | 3 +++ sc/source/core/data/colorscale.cxx | 29 +++++++++++++++++++++++++++++ sc/source/core/data/conditio.cxx | 36 ++++++++++++++++++++++++++++++++++++ sc/source/core/data/documen2.cxx | 5 +++++ sc/source/core/data/table2.cxx | 5 ++--- 5 files changed, 75 insertions(+), 3 deletions(-)
New commits: commit dc6388e4f67b32783bb662b3f22f4496c547613c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat May 12 07:01:16 2012 +0200 ScConditionalFormat::pRanges needs to be updated correctly ScConditionalFormat::pRanges must be updated otherwise the duplicate value check might use the wrong range Change-Id: I3df7d54cdcd9c8863d5fbd89eff3be83bb73f2a5 diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 321edc4..5c13b90 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -1536,6 +1536,8 @@ void ScConditionalFormat::CompileXML() void ScConditionalFormat::UpdateReference( UpdateRefMode eUpdateRefMode, const ScRange& rRange, SCsCOL nDx, SCsROW nDy, SCsTAB nDz ) { + if(pRanges) + pRanges->UpdateReference( eUpdateRefMode, pDoc, rRange, nDx, nDy, nDz ); for (sal_uInt16 i=0; i<nEntryCount; i++) ppEntries[i]->UpdateReference(eUpdateRefMode, rRange, nDx, nDy, nDz); @@ -1552,6 +1554,40 @@ void ScConditionalFormat::RenameCellStyle(const String& rOld, const String& rNew void ScConditionalFormat::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos ) { + if(pRanges) + { + size_t n = pRanges->size(); + SCTAB nMinTab = std::min<SCTAB>(nOldPos, nNewPos); + SCTAB nMaxTab = std::max<SCTAB>(nOldPos, nNewPos); + for(size_t i = 0; i < n; ++i) + { + ScRange* pRange = (*pRanges)[i]; + SCTAB nTab = pRange->aStart.Tab(); + if(nTab < nMinTab || nTab > nMaxTab) + { + continue; + } + + if(nTab == nOldPos) + { + pRange->aStart.SetTab(nNewPos); + pRange->aEnd.SetTab(nNewPos); + continue; + } + + if(nNewPos < nOldPos) + { + pRange->aStart.IncTab(); + pRange->aEnd.IncTab(); + } + else + { + pRange->aStart.IncTab(-1); + pRange->aEnd.IncTab(-1); + } + } + } + for (sal_uInt16 i=0; i<nEntryCount; i++) ppEntries[i]->UpdateMoveTab( nOldPos, nNewPos ); commit 7db060e12f61a33a344006cf8dfcb4a2527495f0 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat May 12 06:45:19 2012 +0200 reduce scope of this variable Change-Id: I I98b7d83aee9f74574a4884f6066e769930e1803a diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index c6fed2b..d13fa9f 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -650,14 +650,13 @@ void ScTable::CopyFromClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCsCOL nDx, SCsROW nDy, sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScTable* pTable) { - SCCOL i; if (nCol2 > MAXCOL) nCol2 = MAXCOL; if (nRow2 > MAXROW) nRow2 = MAXROW; if (ValidColRow(nCol1, nRow1) && ValidColRow(nCol2, nRow2)) { IncRecalcLevel(); - for ( i = nCol1; i <= nCol2; i++) + for ( SCCOL i = nCol1; i <= nCol2; i++) aCol[i].CopyFromClip(nRow1, nRow2, nDy, nInsFlag, bAsLink, bSkipAttrForEmpty, pTable->aCol[i - nDx]); //remove old notes @@ -675,7 +674,7 @@ void ScTable::CopyFromClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, if ((nInsFlag & IDF_ATTRIB) != 0) { if (nRow1==0 && nRow2==MAXROW && pColWidth && pTable->pColWidth) - for (i=nCol1; i<=nCol2; i++) + for (SCCOL i=nCol1; i<=nCol2; i++) pColWidth[i] = pTable->pColWidth[i-nDx]; if (nCol1==0 && nCol2==MAXCOL && mpRowHeights && pTable->mpRowHeights && commit 5ff6482b51105aa9645dbf2990cba2c1dfdd63ac Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat May 12 05:59:29 2012 +0200 add color scales to copy document Change-Id: I03e141746920c7794e18267cf01799d03c7cafb3 diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx index 54f0c59..e7d0944 100644 --- a/sc/inc/colorscale.hxx +++ b/sc/inc/colorscale.hxx @@ -50,6 +50,7 @@ private: public: ScColorScaleEntry(double nVal, const Color& rCol); ScColorScaleEntry(const ScColorScaleEntry& rEntry); + ScColorScaleEntry(ScDocument* pDoc, const ScColorScaleEntry& rEntry); ~ScColorScaleEntry(); const Color& GetColor() const; @@ -83,6 +84,7 @@ private: bool CheckEntriesForRel(const ScRange& rRange) const; public: ScColorScaleFormat(ScDocument* pDoc); + ScColorScaleFormat(ScDocument* pDoc, const ScColorScaleFormat& rFormat); Color* GetColor(const ScAddress& rAddr) const; void AddEntry(ScColorScaleEntry* pEntry); @@ -108,6 +110,7 @@ private: boost::ptr_vector<ScColorScaleFormat> maColorScaleFormats; public: ScColorScaleFormatList() {}; + ScColorScaleFormatList(ScDocument* pDoc, const ScColorScaleFormatList& rList); typedef ColorScaleFormatContainer::iterator iterator; typedef ColorScaleFormatContainer::const_iterator const_iterator; diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx index 6a249ff..21df634 100644 --- a/sc/source/core/data/colorscale.cxx +++ b/sc/source/core/data/colorscale.cxx @@ -50,6 +50,16 @@ ScColorScaleEntry::ScColorScaleEntry(const ScColorScaleEntry& rEntry): { } +ScColorScaleEntry::ScColorScaleEntry(ScDocument* pDoc, const ScColorScaleEntry& rEntry): + mnVal(rEntry.mnVal), + maColor(rEntry.maColor), + mpCell(static_cast<ScFormulaCell*>(rEntry.mpCell->Clone(*pDoc))), + mbMin(rEntry.mbMin), + mbMax(rEntry.mbMax), + mbPercent(rEntry.mbPercent) +{ +} + ScColorScaleEntry::~ScColorScaleEntry() { } @@ -101,6 +111,17 @@ ScColorScaleFormat::ScColorScaleFormat(ScDocument* pDoc): { } +ScColorScaleFormat::ScColorScaleFormat(ScDocument* pDoc, const ScColorScaleFormat& rFormat): + maRanges(rFormat.maRanges), + mpDoc(pDoc) +{ + for(const_iterator itr = rFormat.begin(); itr != rFormat.end(); ++itr) + { + maColorScales.push_back(new ScColorScaleEntry(pDoc, *itr)); + } +} + + void ScColorScaleFormat::AddEntry( ScColorScaleEntry* pEntry ) { maColorScales.push_back( pEntry ); @@ -465,6 +486,14 @@ ScColorScaleFormat::const_iterator ScColorScaleFormat::end() const return maColorScales.end(); } +ScColorScaleFormatList::ScColorScaleFormatList(ScDocument* pDoc, const ScColorScaleFormatList& rList) +{ + for(const_iterator itr = rList.begin(); itr != rList.end(); ++itr) + { + maColorScaleFormats.push_back(new ScColorScaleFormat(pDoc, *itr)); + } +} + void ScColorScaleFormatList::AddFormat( ScColorScaleFormat* pFormat ) { maColorScaleFormats.push_back( pFormat ); diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index 1120f05..87ad7d4 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -475,6 +475,11 @@ void ScDocument::InitClipPtrs( ScDocument* pSourceDoc ) const ScConditionalFormatList* pSourceCond = pSourceDoc->pCondFormList; if ( pSourceCond ) pCondFormList = new ScConditionalFormatList(this, *pSourceCond); + + const ScColorScaleFormatList* pSourceColorScaleList = pSourceDoc->mpColorScaleList.get(); + if ( pSourceColorScaleList ) + mpColorScaleList.reset(new ScColorScaleFormatList(this, *pSourceColorScaleList)); + const ScValidationDataList* pSourceValid = pSourceDoc->pValidationList; if ( pSourceValid ) pValidationList = new ScValidationDataList(this, *pSourceValid); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits