summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/dbdata.hxx2
-rw-r--r--sc/source/core/tool/dbdata.cxx26
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;