sc/inc/attarray.hxx | 2 sc/inc/attrib.hxx | 24 ++++++++++ sc/inc/column.hxx | 1 sc/inc/document.hxx | 1 sc/inc/scitems.hxx | 87 ++++++++++++++++++-------------------- sc/inc/table.hxx | 1 sc/source/core/data/attarray.cxx | 49 +++++++++++++++++++++ sc/source/core/data/attrib.cxx | 47 ++++++++++++++++++++ sc/source/core/data/column.cxx | 5 ++ sc/source/core/data/docpool.cxx | 4 - sc/source/core/data/document.cxx | 11 ++++ sc/source/core/data/fillinfo.cxx | 73 +++++++++++++++++-------------- sc/source/core/data/table2.cxx | 17 +++++++ sc/source/ui/docshell/docfunc.cxx | 18 +------ 14 files changed, 245 insertions(+), 95 deletions(-)
New commits: commit c89de41bdc329186aa3ce9540ca7be8f66fb7860 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Oct 5 19:05:25 2012 +0200 support overlapping conditional formats Still missing: *Removing conditional formats *Handling of Manage Names dialog *UNO *Undo/Redo *Import/export *Adjusting the dialogs to support this Change-Id: I72481cfb807fee2c3a1546222fe7e786d515ab44 diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx index 1f8d9f2..ded335e 100644 --- a/sc/inc/attarray.hxx +++ b/sc/inc/attarray.hxx @@ -138,6 +138,8 @@ public: void ApplyLineStyleArea( SCROW nStartRow, SCROW nEndRow, const ::editeng::SvxBorderLine* pLine, bool bColorOnly ); + void AddCondFormat( SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex ); + void ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16* pWhich ); void ChangeIndent( SCROW nStartRow, SCROW nEndRow, bool bIncrement ); diff --git a/sc/inc/attrib.hxx b/sc/inc/attrib.hxx index 0418d78..eb051fd 100644 --- a/sc/inc/attrib.hxx +++ b/sc/inc/attrib.hxx @@ -393,6 +393,30 @@ private: sal_uInt16 mnHeight; }; +class ScCondFormatItem : public SfxPoolItem +{ +public: + TYPEINFO(); + + explicit ScCondFormatItem(); + explicit ScCondFormatItem(sal_uInt32 nIndex); + explicit ScCondFormatItem(const std::vector<sal_uInt32>& nIndex); + + virtual ~ScCondFormatItem(); + + virtual int operator==(const SfxPoolItem& rCmp ) const; + virtual ScCondFormatItem* Clone( SfxItemPool* = 0 ) const; + + const std::vector<sal_uInt32>& GetCondFormatData() const; + void AddCondFormatData( sal_uInt32 nIndex ); + void SetCondFormatData( const std::vector<sal_uInt32>& aIndex ); + void RemoveCondFormatData( sal_uInt32 nIndex ); + +private: + + std::vector<sal_uInt32> maIndex; +}; + // ============================================================================ #endif diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index 34e05cb..388b121 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -317,6 +317,7 @@ public: void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark); void ApplySelectionLineStyle( const ScMarkData& rMark, const ::editeng::SvxBorderLine* pLine, bool bColorOnly ); + void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex ); const ScStyleSheet* GetStyle( SCROW nRow ) const; const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, bool& rFound ) const; diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index da7b575..684a16a 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1155,6 +1155,7 @@ public: SC_DLLPUBLIC const ScPatternAttr* GetMostUsedPattern( SCCOL nCol, SCROW nStartRow, SCROW nEndRow, SCTAB nTab ) const; const ScPatternAttr* GetSelectionPattern( const ScMarkData& rMark, bool bDeep = true ); ScPatternAttr* CreateSelectionPattern( const ScMarkData& rMark, bool bDeep = true ); + SC_DLLPUBLIC void AddCondFormatData( const ScRangeList& rRange, SCTAB nTab, sal_uInt32 nIndex ); SC_DLLPUBLIC ScConditionalFormat* GetCondFormat( SCCOL nCol, SCROW nRow, SCTAB nTab ) const; SC_DLLPUBLIC const SfxItemSet* GetCondResult( SCCOL nCol, SCROW nRow, SCTAB nTab ) const; diff --git a/sc/inc/scitems.hxx b/sc/inc/scitems.hxx index 2f219e2..e644854 100644 --- a/sc/inc/scitems.hxx +++ b/sc/inc/scitems.hxx @@ -118,51 +118,51 @@ #define ATTR_VALIDDATA 153 #define ATTR_CONDITIONAL 154 -#define ATTR_PATTERN_END 155 // end cell-attribute-pattern +#define ATTR_PATTERN_END 154 // end cell-attribute-pattern -#define ATTR_PATTERN 156 +#define ATTR_PATTERN 155 // page attributes -#define ATTR_LRSPACE 157 // editor: PageDesc-TabPage -#define ATTR_ULSPACE 158 -#define ATTR_PAGE 159 -#define ATTR_PAGE_PAPERTRAY 160 -#define ATTR_PAGE_PAPERBIN 161 -#define ATTR_PAGE_SIZE 162 -#define ATTR_PAGE_MAXSIZE 163 -#define ATTR_PAGE_HORCENTER 164 -#define ATTR_PAGE_VERCENTER 165 - -#define ATTR_PAGE_ON 166 // editor: header/footer-page -#define ATTR_PAGE_DYNAMIC 167 -#define ATTR_PAGE_SHARED 168 - -#define ATTR_PAGE_NOTES 169 // editor: table -#define ATTR_PAGE_GRID 170 -#define ATTR_PAGE_HEADERS 171 -#define ATTR_PAGE_CHARTS 172 -#define ATTR_PAGE_OBJECTS 173 -#define ATTR_PAGE_DRAWINGS 174 -#define ATTR_PAGE_TOPDOWN 175 -#define ATTR_PAGE_SCALE 176 -#define ATTR_PAGE_SCALETOPAGES 177 -#define ATTR_PAGE_FIRSTPAGENO 178 - -#define ATTR_PAGE_PRINTAREA 179 // editor: print areas -#define ATTR_PAGE_REPEATROW 180 -#define ATTR_PAGE_REPEATCOL 181 -#define ATTR_PAGE_PRINTTABLES 182 - -#define ATTR_PAGE_HEADERLEFT 183 // contents of header/ -#define ATTR_PAGE_FOOTERLEFT 184 // footer (left) -#define ATTR_PAGE_HEADERRIGHT 185 // contents of header/ -#define ATTR_PAGE_FOOTERRIGHT 186 // footer (right) -#define ATTR_PAGE_HEADERSET 187 // the corresponding sets -#define ATTR_PAGE_FOOTERSET 188 - -#define ATTR_PAGE_FORMULAS 189 -#define ATTR_PAGE_NULLVALS 190 - -#define ATTR_PAGE_SCALETO 191 // #i8868# scale printout to width/height +#define ATTR_LRSPACE 156 // editor: PageDesc-TabPage +#define ATTR_ULSPACE 157 +#define ATTR_PAGE 158 +#define ATTR_PAGE_PAPERTRAY 159 +#define ATTR_PAGE_PAPERBIN 160 +#define ATTR_PAGE_SIZE 161 +#define ATTR_PAGE_MAXSIZE 162 +#define ATTR_PAGE_HORCENTER 163 +#define ATTR_PAGE_VERCENTER 164 + +#define ATTR_PAGE_ON 165 // editor: header/footer-page +#define ATTR_PAGE_DYNAMIC 166 +#define ATTR_PAGE_SHARED 167 + +#define ATTR_PAGE_NOTES 168 // editor: table +#define ATTR_PAGE_GRID 169 +#define ATTR_PAGE_HEADERS 170 +#define ATTR_PAGE_CHARTS 171 +#define ATTR_PAGE_OBJECTS 172 +#define ATTR_PAGE_DRAWINGS 173 +#define ATTR_PAGE_TOPDOWN 174 +#define ATTR_PAGE_SCALE 175 +#define ATTR_PAGE_SCALETOPAGES 176 +#define ATTR_PAGE_FIRSTPAGENO 177 + +#define ATTR_PAGE_PRINTAREA 178 // editor: print areas +#define ATTR_PAGE_REPEATROW 179 +#define ATTR_PAGE_REPEATCOL 180 +#define ATTR_PAGE_PRINTTABLES 181 + +#define ATTR_PAGE_HEADERLEFT 182 // contents of header/ +#define ATTR_PAGE_FOOTERLEFT 183 // footer (left) +#define ATTR_PAGE_HEADERRIGHT 184 // contents of header/ +#define ATTR_PAGE_FOOTERRIGHT 185 // footer (right) +#define ATTR_PAGE_HEADERSET 186 // the corresponding sets +#define ATTR_PAGE_FOOTERSET 187 + +#define ATTR_PAGE_FORMULAS 188 +#define ATTR_PAGE_NULLVALS 189 + +#define ATTR_PAGE_SCALETO 190 // #i8868# scale printout to width/height #define ATTR_ENDINDEX ATTR_PAGE_SCALETO // end of pool-range diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 2b205e5..757f357 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -543,6 +543,7 @@ public: void SetPattern( SCCOL nCol, SCROW nRow, const ScPatternAttr& rAttr, bool bPutToPool = false ); void ApplyPatternIfNumberformatIncompatible( const ScRange& rRange, const ScPatternAttr& rPattern, short nNewType ); + void AddCondFormatData( const ScRangeList& rRange, sal_uInt32 nIndex ); void ApplyStyle( SCCOL nCol, SCROW nRow, const ScStyleSheet& rStyle ); void ApplyStyleArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, const ScStyleSheet& rStyle ); diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index bcba4de..4820cb1 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -273,6 +273,55 @@ const ScPatternAttr* ScAttrArray::GetPatternRange( SCROW& rStartRow, return NULL; } +void ScAttrArray::AddCondFormat( SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex ) +{ + if(!VALIDROW(nStartRow) || !VALIDROW(nEndRow)) + return; + + if(nEndRow < nStartRow) + return; + + SCROW nTempStartRow = nStartRow; + SCROW nTempEndRow = nEndRow; + + do + { + const ScPatternAttr* pPattern = GetPattern(nTempStartRow); + + ScPatternAttr aPattern( pDocument->GetPool() ); + if(pPattern) + { + SCROW nPatternStartRow; + SCROW nPatternEndRow; + GetPatternRange( nPatternStartRow, nPatternEndRow, nTempStartRow ); + + nTempEndRow = std::min<SCROW>( nPatternEndRow, nEndRow ); + const SfxPoolItem* pItem = NULL; + SfxItemState eState = pPattern->GetItemSet().GetItemState( ATTR_CONDITIONAL, true, &pItem ); + std::vector< sal_uInt32 > aCondFormatData; + if(pItem) + aCondFormatData = static_cast<const ScCondFormatItem*>(pItem)->GetCondFormatData(); + aCondFormatData.push_back(nIndex); + + ScCondFormatItem aItem; + aItem.SetCondFormatData( aCondFormatData ); + aPattern.GetItemSet().Put( aItem ); + } + else + { + ScCondFormatItem aItem; + aItem.AddCondFormatData(nIndex); + aPattern.GetItemSet().Put( aItem ); + nTempEndRow = nEndRow; + } + + SetPatternArea( nTempStartRow, nTempEndRow, &aPattern, true ); + nTempStartRow = nTempEndRow + 1; + } + while(nTempEndRow < nEndRow); + +} + //------------------------------------------------------------------------ void ScAttrArray::SetPattern( SCROW nRow, const ScPatternAttr* pPattern, bool bPutToPool ) diff --git a/sc/source/core/data/attrib.cxx b/sc/source/core/data/attrib.cxx index e2f2c55..3ad9b8b 100644 --- a/sc/source/core/data/attrib.cxx +++ b/sc/source/core/data/attrib.cxx @@ -60,6 +60,7 @@ TYPEINIT1(ScPageHFItem, SfxPoolItem); TYPEINIT1(ScViewObjectModeItem, SfxEnumItem); TYPEINIT1(ScDoubleItem, SfxPoolItem); TYPEINIT1(ScPageScaleToItem, SfxPoolItem); +TYPEINIT1(ScCondFormatItem, SfxPoolItem); //------------------------------------------------------------------------ @@ -1222,5 +1223,51 @@ bool ScPageScaleToItem::PutValue( const uno::Any& rAny, sal_uInt8 nMemberId ) // ============================================================================ +ScCondFormatItem::ScCondFormatItem(): + SfxPoolItem( ATTR_CONDITIONAL ) +{ +} + +ScCondFormatItem::ScCondFormatItem( sal_uInt32 nIndex ): + SfxPoolItem( ATTR_CONDITIONAL ) +{ + maIndex.push_back(nIndex); +} + +ScCondFormatItem::ScCondFormatItem( const std::vector<sal_uInt32>& rIndex ): + SfxPoolItem( ATTR_CONDITIONAL ), + maIndex( rIndex ) +{ +} + +ScCondFormatItem::~ScCondFormatItem() +{ +} + +int ScCondFormatItem::operator==( const SfxPoolItem& rCmp ) const +{ + return maIndex == static_cast<const ScCondFormatItem&>(rCmp).maIndex; +} + +ScCondFormatItem* ScCondFormatItem::Clone(SfxItemPool*) const +{ + return new ScCondFormatItem(maIndex); +} + +const std::vector<sal_uInt32>& ScCondFormatItem::GetCondFormatData() const +{ + return maIndex; +} + +void ScCondFormatItem::AddCondFormatData( sal_uInt32 nIndex ) +{ + maIndex.push_back(nIndex); +} + +void ScCondFormatItem::SetCondFormatData( const std::vector<sal_uInt32>& rIndex ) +{ + maIndex = rIndex; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index db99462..446ddc1 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -498,6 +498,11 @@ void ScColumn::ApplyPatternIfNumberformatIncompatible( const ScRange& rRange, } } +void ScColumn::AddCondFormat( SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex ) +{ + pAttrArray->AddCondFormat( nStartRow, nEndRow, nIndex ); +} + void ScColumn::ApplyStyle( SCROW nRow, const ScStyleSheet& rStyle ) { diff --git a/sc/source/core/data/docpool.cxx b/sc/source/core/data/docpool.cxx index b0a8d7d..cc8915f 100644 --- a/sc/source/core/data/docpool.cxx +++ b/sc/source/core/data/docpool.cxx @@ -287,7 +287,7 @@ ScDocumentPool::ScDocumentPool( SfxItemPool* pSecPool, sal_Bool bLoadRefCounts ) ppPoolDefaults[ ATTR_BORDER_INNER - ATTR_STARTINDEX ] = pGlobalBorderInnerAttr; ppPoolDefaults[ ATTR_SHADOW - ATTR_STARTINDEX ] = new SvxShadowItem( ATTR_SHADOW ); ppPoolDefaults[ ATTR_VALIDDATA - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_VALIDDATA, 0 ); - ppPoolDefaults[ ATTR_CONDITIONAL - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_CONDITIONAL, 0 ); + ppPoolDefaults[ ATTR_CONDITIONAL - ATTR_STARTINDEX ] = new ScCondFormatItem; // GetRscString funktioniert erst nach ScGlobal::Init, zu erkennen am EmptyBrushItem //! zusaetzliche Methode ScGlobal::IsInit() oder so... diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index ade6c8e..5ebd9f5 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -4211,6 +4211,17 @@ void ScDocument::ApplyPatternIfNumberformatIncompatible( const ScRange& rRange, maTabs[*itr]->ApplyPatternIfNumberformatIncompatible( rRange, rPattern, nNewType ); } +void ScDocument::AddCondFormatData( const ScRangeList& rRange, SCTAB nTab, sal_uInt32 nIndex ) +{ + if(!static_cast<SCTAB>(nTab) < maTabs.size()) + return; + + if(!maTabs[nTab]) + return; + + maTabs[nTab]->AddCondFormatData(rRange, nIndex); +} + void ScDocument::ApplyStyle( SCCOL nCol, SCROW nRow, SCTAB nTab, const ScStyleSheet& rStyle) { diff --git a/sc/source/core/data/fillinfo.cxx b/sc/source/core/data/fillinfo.cxx index 29fee72..01204d6 100644 --- a/sc/source/core/data/fillinfo.cxx +++ b/sc/source/core/data/fillinfo.cxx @@ -477,12 +477,8 @@ void ScDocument::FillInfo( ScTableInfo& rTabInfo, SCCOL nX1, SCROW nY1, SCCOL nX else bHidden = bHideFormula = false; - sal_uLong nConditional = ((const SfxUInt32Item&)pPattern-> - GetItem(ATTR_CONDITIONAL)).GetValue(); - - const ScConditionalFormat* pCondForm = NULL; - if ( nConditional && pCondFormList ) - pCondForm = pCondFormList->GetFormat( nConditional ); + const std::vector<sal_uInt32>& rCondFormats = static_cast<const ScCondFormatItem&>(pPattern->GetItem(ATTR_CONDITIONAL)).GetCondFormatData(); + bool bContainsCondFormat = !rCondFormats.empty(); do { @@ -493,7 +489,7 @@ void ScDocument::FillInfo( ScTableInfo& rTabInfo, SCCOL nX1, SCROW nY1, SCCOL nX RowInfo* pThisRowInfo = &pRowInfo[nArrY]; if (pBackground != pDefBackground) // Spalten-HG == Standard ? pThisRowInfo->bEmptyBack = false; - if (pCondForm) + if (bContainsCondFormat) pThisRowInfo->bEmptyBack = false; if (bAutoFilter) pThisRowInfo->bAutoFilter = true; @@ -529,41 +525,50 @@ void ScDocument::FillInfo( ScTableInfo& rTabInfo, SCCOL nX1, SCROW nY1, SCCOL nX pThisRowInfo->bEmptyBack = false; } - if ( pCondForm ) + if ( bContainsCondFormat ) { - ScCondFormatData aData = pCondForm->GetData( pInfo->pCell, - ScAddress( nX, nCurRow, nTab ) ); - if (!aData.aStyleName.isEmpty()) + bool bFound = false; + for(std::vector<sal_uInt32>::const_iterator itr = rCondFormats.begin(); + itr != rCondFormats.end() && !bFound; ++itr) { - SfxStyleSheetBase* pStyleSheet = - pStlPool->Find( aData.aStyleName, SFX_STYLE_FAMILY_PARA ); - if ( pStyleSheet ) + ScConditionalFormat* pCondForm = pCondFormList->GetFormat(*itr); + ScCondFormatData aData = pCondForm->GetData( pInfo->pCell, + ScAddress( nX, nCurRow, nTab ) ); + if (!aData.aStyleName.isEmpty()) { - //! Style-Sets cachen !!! - pInfo->pConditionSet = &pStyleSheet->GetItemSet(); - bAnyCondition = true; - - // we need to check already here for protected cells - const SfxPoolItem* pItem; - if ( bTabProtect && pInfo->pConditionSet->GetItemState( ATTR_PROTECTION, true, &pItem ) == SFX_ITEM_SET ) + SfxStyleSheetBase* pStyleSheet = + pStlPool->Find( aData.aStyleName, SFX_STYLE_FAMILY_PARA ); + if ( pStyleSheet ) { - const ScProtectionAttr* pProtAttr = static_cast<const ScProtectionAttr*>(pItem); - bHidden = pProtAttr->GetHideCell(); - bHideFormula = pProtAttr->GetHideFormula(); + //! Style-Sets cachen !!! + pInfo->pConditionSet = &pStyleSheet->GetItemSet(); + bAnyCondition = true; - } + // we need to check already here for protected cells + const SfxPoolItem* pItem; + if ( bTabProtect && pInfo->pConditionSet->GetItemState( ATTR_PROTECTION, true, &pItem ) == SFX_ITEM_SET ) + { + const ScProtectionAttr* pProtAttr = static_cast<const ScProtectionAttr*>(pItem); + bHidden = pProtAttr->GetHideCell(); + bHideFormula = pProtAttr->GetHideFormula(); + + } + bFound = true; + } + // if style is not there, treat like no condition + } + if(aData.pColorScale) + { + pInfo->pColorScale = aData.pColorScale; + bFound = true; } - // if style is not there, treat like no condition - } - if(aData.pColorScale) - { - pInfo->pColorScale = aData.pColorScale; - } - if(aData.pDataBar) - { - pInfo->pDataBar = aData.pDataBar; + if(aData.pDataBar) + { + pInfo->pDataBar = aData.pDataBar; + bFound = true; + } } } diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index eb22ac6..e3d3864 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -2146,6 +2146,23 @@ void ScTable::ApplyPatternIfNumberformatIncompatible( const ScRange& rRange, } } +void ScTable::AddCondFormatData( const ScRangeList& rRange, sal_uInt32 nIndex ) +{ + size_t n = rRange.size(); + for(size_t i = 0; i < n; ++i) + { + const ScRange* pRange = rRange[i]; + SCCOL nColStart = pRange->aStart.Col(); + SCCOL nColEnd = pRange->aEnd.Col(); + SCROW nRowStart = pRange->aStart.Row(); + SCROW nRowEnd = pRange->aEnd.Row(); + for(SCCOL nCol = nColStart; nCol <= nColEnd; ++nCol) + { + aCol[nCol].AddCondFormat(nRowStart, nRowEnd, nIndex); + } + } +} + void ScTable::ApplyStyle( SCCOL nCol, SCROW nRow, const ScStyleSheet& rStyle ) diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 52b5c08..c68b03d 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -5064,21 +5064,11 @@ namespace { void RemoveCondFormatAttributes(ScDocument* pDoc, const ScConditionalFormat* pFormat) { const ScRangeList& rRangeList = pFormat->GetRange(); - - ScPatternAttr aPattern( pDoc->GetPool() ); - aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_CONDITIONAL, 0 ) ); - ScMarkData aMarkData; - aMarkData.MarkFromRangeList(rRangeList, true); - pDoc->ApplySelectionPattern( aPattern , aMarkData ); } -void SetConditionalFormatAttributes(ScDocument* pDoc, const ScRangeList& rRanges, sal_uLong nIndex) +void SetConditionalFormatAttributes(ScDocument* pDoc, const ScRangeList& rRanges, sal_uLong nIndex, SCTAB nTab) { - ScPatternAttr aPattern( pDoc->GetPool() ); - aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_CONDITIONAL, nIndex ) ); - ScMarkData aMarkData; - aMarkData.MarkFromRangeList(rRanges, true); - pDoc->ApplySelectionPattern( aPattern , aMarkData ); + pDoc->AddCondFormatData( rRanges, nTab, nIndex ); } } @@ -5112,7 +5102,7 @@ void ScDocFunc::ReplaceConditionalFormat( sal_uLong nOldFormat, ScConditionalFor sal_uLong nIndex = pDoc->AddCondFormat(pFormat, nTab); - SetConditionalFormatAttributes(pDoc, rRanges, nIndex); + SetConditionalFormatAttributes(pDoc, rRanges, nIndex, nTab); pDoc->SetStreamValid(nTab, false); } @@ -5142,7 +5132,7 @@ void ScDocFunc::SetConditionalFormatList( ScConditionalFormatList* pList, SCTAB { sal_uLong nIndex = itr->GetKey(); const ScRangeList& rRange = itr->GetRange(); - SetConditionalFormatAttributes(pDoc, rRange, nIndex); + SetConditionalFormatAttributes(pDoc, rRange, nIndex, nTab); } pDoc->SetCondFormList(pList, nTab); commit b2a0762db05871c951e811301c76d39358d676b0 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu Oct 4 23:25:19 2012 +0200 remove unused ATTR_COLORSCALE Change-Id: I8118127b21144962275cb4486881b1e63b06ff0a diff --git a/sc/inc/scitems.hxx b/sc/inc/scitems.hxx index 57073f3..2f219e2 100644 --- a/sc/inc/scitems.hxx +++ b/sc/inc/scitems.hxx @@ -117,7 +117,6 @@ #define ATTR_SHADOW 152 #define ATTR_VALIDDATA 153 #define ATTR_CONDITIONAL 154 -#define ATTR_COLORSCALE 155 #define ATTR_PATTERN_END 155 // end cell-attribute-pattern diff --git a/sc/source/core/data/docpool.cxx b/sc/source/core/data/docpool.cxx index f2c9661..b0a8d7d 100644 --- a/sc/source/core/data/docpool.cxx +++ b/sc/source/core/data/docpool.cxx @@ -150,7 +150,6 @@ static SfxItemInfo const aItemInfos[] = { SID_ATTR_BORDER_SHADOW, SFX_ITEM_POOLABLE }, // ATTR_SHADOW { 0, SFX_ITEM_POOLABLE }, // ATTR_VALIDDATA { 0, SFX_ITEM_POOLABLE }, // ATTR_CONDITIONAL - { 0, SFX_ITEM_POOLABLE }, // ATTR_COLORSCALE { 0, SFX_ITEM_POOLABLE }, // ATTR_PATTERN { SID_ATTR_LRSPACE, SFX_ITEM_POOLABLE }, // ATTR_LRSPACE { SID_ATTR_ULSPACE, SFX_ITEM_POOLABLE }, // ATTR_ULSPACE @@ -289,7 +288,6 @@ ScDocumentPool::ScDocumentPool( SfxItemPool* pSecPool, sal_Bool bLoadRefCounts ) ppPoolDefaults[ ATTR_SHADOW - ATTR_STARTINDEX ] = new SvxShadowItem( ATTR_SHADOW ); ppPoolDefaults[ ATTR_VALIDDATA - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_VALIDDATA, 0 ); ppPoolDefaults[ ATTR_CONDITIONAL - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_CONDITIONAL, 0 ); - ppPoolDefaults[ ATTR_COLORSCALE - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_COLORSCALE, 0 ); // GetRscString funktioniert erst nach ScGlobal::Init, zu erkennen am EmptyBrushItem //! zusaetzliche Methode ScGlobal::IsInit() oder so... _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits