diff options
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/core/data/attarray.cxx | 12 | ||||
-rw-r--r-- | sc/source/core/data/table2.cxx | 3 |
2 files changed, 9 insertions, 6 deletions
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index d058b7e70b4f..3330cf14c10e 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -298,11 +298,15 @@ void ScAttrArray::AddCondFormat( SCROW nStartRow, SCROW nEndRow, sal_uInt32 nInd std::vector< sal_uInt32 > aCondFormatData; if(pItem) aCondFormatData = static_cast<const ScCondFormatItem*>(pItem)->GetCondFormatData(); - aCondFormatData.push_back(nIndex); + if (std::find(aCondFormatData.begin(), aCondFormatData.end(), nIndex) + == aCondFormatData.end()) + { + aCondFormatData.push_back(nIndex); - ScCondFormatItem aItem; - aItem.SetCondFormatData( aCondFormatData ); - pNewPattern->GetItemSet().Put( aItem ); + ScCondFormatItem aItem; + aItem.SetCondFormatData( aCondFormatData ); + pNewPattern->GetItemSet().Put( aItem ); + } } else { diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index b7f95afebfed..e640b31622f4 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -569,14 +569,13 @@ bool CheckAndDeduplicateCondFormat(ScDocument* pDocument, ScConditionalFormat* p if (pOldFormat->EqualEntries(*pNewFormat, true)) { - pDocument->RemoveCondFormatData(pOldFormat->GetRange(), nTab, pOldFormat->GetKey()); const ScRangeList& rNewRangeList = pNewFormat->GetRange(); ScRangeList& rDstRangeList = pOldFormat->GetRangeList(); for (size_t i = 0; i < rNewRangeList.size(); ++i) { rDstRangeList.Join(rNewRangeList[i]); } - pDocument->AddCondFormatData(pOldFormat->GetRange(), nTab, pOldFormat->GetKey()); + pDocument->AddCondFormatData(rNewRangeList, nTab, pOldFormat->GetKey()); return true; } |