diff options
-rw-r--r-- | sc/inc/dbdata.hxx | 2 | ||||
-rw-r--r-- | sc/source/core/tool/dbdata.cxx | 26 |
2 files changed, 12 insertions, 16 deletions
diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx index 7584f6751651..36e0aa0c8e84 100644 --- a/sc/inc/dbdata.hxx +++ b/sc/inc/dbdata.hxx @@ -143,6 +143,8 @@ public: void SetStripData(bool bSet) { bStripData = bSet; } void SetContainer( ScDBDataContainerBase* pContainer ) { mpContainer = pContainer; } + /** Returns header row range if has headers, else invalid range. */ + ScRange GetHeaderArea() const; void StartTableColumnNamesListener(); void EndTableColumnNamesListener(); SC_DLLPUBLIC void SetTableColumnNames( const ::std::vector< OUString >& rNames ); diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx index f7588f888010..852c511796d8 100644 --- a/sc/source/core/tool/dbdata.cxx +++ b/sc/source/core/tool/dbdata.cxx @@ -192,12 +192,7 @@ ScDBData& ScDBData::operator= (const ScDBData& rData) { mbTableColumnNamesDirty = true; if (mpContainer) - { - ScRange aHeaderRange( ScAddress::UNINITIALIZED); - GetArea( aHeaderRange); - aHeaderRange.aEnd.SetRow( aHeaderRange.aStart.Row()); - mpContainer->GetDirtyTableColumnNames().Join( aHeaderRange); - } + mpContainer->GetDirtyTableColumnNames().Join( GetHeaderArea()); } else { @@ -323,6 +318,13 @@ void ScDBData::GetArea(ScRange& rRange) const rRange = ScRange( nStartCol, nStartRow, nTable, nEndCol, nNewEndRow, nTable ); } +ScRange ScDBData::GetHeaderArea() const +{ + if (HasHeader()) + return ScRange( nStartCol, nStartRow, nTable, nEndCol, nStartRow, nTable); + return ScRange( ScAddress::INITIALIZE_INVALID); +} + void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) { bool bHeaderRangeChange = (nTab != nTable || nCol1 != nStartCol || nCol2 != nEndCol || nRow1 != nStartRow); @@ -654,12 +656,7 @@ void ScDBData::StartTableColumnNamesListener() { ScDocument* pDoc = mpContainer->GetDocument(); if (!pDoc->IsClipOrUndo()) - { - ScRange aHeaderRange( ScAddress::UNINITIALIZED); - GetArea( aHeaderRange); - aHeaderRange.aEnd.SetRow( aHeaderRange.aStart.Row()); - pDoc->StartListeningArea( aHeaderRange, false, this); - } + pDoc->StartListeningArea( GetHeaderArea(), false, this); } } @@ -839,10 +836,7 @@ void ScDBData::RefreshTableColumnNames( ScDocument* pDoc, const ScRange& rRange } // Check if this is affected for the range requested. - ScRange aHeaderRange( ScAddress::UNINITIALIZED); - GetArea( aHeaderRange); - aHeaderRange.aEnd.SetRow( aHeaderRange.aStart.Row()); - ScRange aIntersection( aHeaderRange.Intersection( rRange)); + ScRange aIntersection( GetHeaderArea().Intersection( rRange)); if (!aIntersection.IsValid()) return; |