Kaydet (Commit) eb240530 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

remove conditional formats withiout range after import, related fdo#56983

Change-Id: I9a8c02369c3e5a12310a46229bdc1671f75593ad
üst 51533c72
......@@ -409,6 +409,12 @@ public:
void InsertNew( ScConditionalFormat* pNew )
{ maConditionalFormats.insert(pNew); }
/**
* Checks that all cond formats have a non empty range.
* Deletes empty cond formats.
* @return true if all cond formats were valid
*/
bool CheckAllEntries();
ScConditionalFormat* GetFormat( sal_uInt32 nKey );
......
......@@ -1975,20 +1975,32 @@ void ScConditionalFormatList::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos )
itr->UpdateMoveTab( nOldPos, nNewPos );
}
void ScConditionalFormatList::DeleteArea( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 )
bool ScConditionalFormatList::CheckAllEntries()
{
for( iterator itr = begin(); itr != end(); ++itr)
itr->DeleteArea( nCol1, nRow1, nCol2, nRow2 );
bool bValid = true;
//
// need to check which must be deleted
iterator itr = begin();
while(itr != end())
{
if(itr->GetRange().empty())
{
bValid = false;
maConditionalFormats.erase(itr++);
}
else
++itr;
}
return bValid;
}
void ScConditionalFormatList::DeleteArea( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 )
{
for( iterator itr = begin(); itr != end(); ++itr)
itr->DeleteArea( nCol1, nRow1, nCol2, nRow2 );
CheckAllEntries();
}
void ScConditionalFormatList::SourceChanged( const ScAddress& rAddr )
......
......@@ -65,6 +65,17 @@ SvXMLImportContext* ScXMLConditionalFormatsContext::CreateChildContext( sal_uInt
return pContext;
}
void ScXMLConditionalFormatsContext::EndElement()
{
ScDocument* pDoc = GetScImport().GetDocument();
SCTAB nTab = GetScImport().GetTables().GetCurrentSheet();
ScConditionalFormatList* pCondFormatList = pDoc->GetCondFormList(nTab);
bool bDeleted = !pCondFormatList->CheckAllEntries();
SAL_WARN_IF(bDeleted, "sc", "conditional formats have been deleted because they contained empty range info");
}
ScXMLConditionalFormatContext::ScXMLConditionalFormatContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const ::rtl::OUString& rLName, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList>& xAttrList):
SvXMLImportContext( rImport, nPrfx, rLName )
......
......@@ -51,6 +51,8 @@ public:
const ::rtl::OUString& rLocalName,
const ::com::sun::star::uno::Reference<
::com::sun::star::xml::sax::XAttributeList>& xAttrList );
virtual void EndElement();
};
class ScXMLConditionalFormatContext : public SvXMLImportContext
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment