Kaydet (Commit) fff1c3e3 authored tarafından Eike Rathke's avatar Eike Rathke

TableRef: move swap to empty names to InvalidateTableColumnNames()

Change-Id: I495377786bd0add1521d37490c8c57d4d30f541e
üst e6f44f1f
...@@ -221,7 +221,7 @@ private: ...@@ -221,7 +221,7 @@ private:
void AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx, SCCOL nCol1, void AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx, SCCOL nCol1,
SCCOL nOldCol1, SCCOL nOldCol2, SCCOL nNewCol1, SCCOL nNewCol2 ); SCCOL nOldCol1, SCCOL nOldCol2, SCCOL nNewCol1, SCCOL nNewCol2 );
void InvalidateTableColumnNames(); void InvalidateTableColumnNames( bool bSwapToEmptyNames );
}; };
class SC_DLLPUBLIC ScDBCollection class SC_DLLPUBLIC ScDBCollection
......
...@@ -185,11 +185,7 @@ ScDBData& ScDBData::operator= (const ScDBData& rData) ...@@ -185,11 +185,7 @@ ScDBData& ScDBData::operator= (const ScDBData& rData)
bAutoFilter = rData.bAutoFilter; bAutoFilter = rData.bAutoFilter;
if (bHeaderRangeDiffers) if (bHeaderRangeDiffers)
{ InvalidateTableColumnNames( true);
if (!maTableColumnNames.empty())
::std::vector<OUString>().swap( maTableColumnNames);
InvalidateTableColumnNames();
}
else else
{ {
maTableColumnNames = rData.maTableColumnNames; maTableColumnNames = rData.maTableColumnNames;
...@@ -320,15 +316,7 @@ void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW ...@@ -320,15 +316,7 @@ void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW
{ {
bool bHeaderRangeChange = (nTab != nTable || nCol1 != nStartCol || nCol2 != nEndCol || nRow1 != nStartRow); bool bHeaderRangeChange = (nTab != nTable || nCol1 != nStartCol || nCol2 != nEndCol || nRow1 != nStartRow);
if (bHeaderRangeChange) if (bHeaderRangeChange)
{
EndTableColumnNamesListener(); EndTableColumnNamesListener();
if (!maTableColumnNames.empty())
{
SAL_WARN("sc.core", "ScDBData::SetArea - invalidating column names/offsets");
::std::vector<OUString>().swap( maTableColumnNames);
InvalidateTableColumnNames();
}
}
nTable = nTab; nTable = nTab;
nStartCol = nCol1; nStartCol = nCol1;
...@@ -337,7 +325,13 @@ void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW ...@@ -337,7 +325,13 @@ void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW
nEndRow = nRow2; nEndRow = nRow2;
if (bHeaderRangeChange) if (bHeaderRangeChange)
{
SAL_WARN_IF( !maTableColumnNames.empty(), "sc.core", "ScDBData::SetArea - invalidating column names/offsets");
// Invalidate *after* new area has been set above to add the proper
// header range to dirty list.
InvalidateTableColumnNames( true);
StartTableColumnNamesListener(); StartTableColumnNamesListener();
}
} }
void ScDBData::MoveTo(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) void ScDBData::MoveTo(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
...@@ -632,12 +626,8 @@ void ScDBData::ExtendDataArea(ScDocument* pDoc) ...@@ -632,12 +626,8 @@ void ScDBData::ExtendDataArea(ScDocument* pDoc)
pDoc->GetDataArea(nTable, nStartCol, nStartRow, nEndCol, nEndRow, false, true); pDoc->GetDataArea(nTable, nStartCol, nStartRow, nEndCol, nEndRow, false, true);
if (nStartCol != nOldCol1 || nEndCol != nOldCol2) if (nStartCol != nOldCol1 || nEndCol != nOldCol2)
{ {
if (!maTableColumnNames.empty()) SAL_WARN_IF( !maTableColumnNames.empty(), "sc.core", "ScDBData::ExtendDataArea - invalidating column names/offsets");
{ InvalidateTableColumnNames( true);
SAL_WARN("sc.core", "ScDBData::ExtendDataArea - invalidating column names/offsets");
::std::vector<OUString>().swap( maTableColumnNames);
InvalidateTableColumnNames();
}
} }
} }
...@@ -709,12 +699,14 @@ void ScDBData::AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx, ...@@ -709,12 +699,14 @@ void ScDBData::AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx,
if (maTableColumnNames.empty()) if (maTableColumnNames.empty())
mbTableColumnNamesDirty = true; mbTableColumnNamesDirty = true;
if (mbTableColumnNamesDirty) if (mbTableColumnNamesDirty)
InvalidateTableColumnNames(); InvalidateTableColumnNames( false); // preserve new column names array
} }
void ScDBData::InvalidateTableColumnNames() void ScDBData::InvalidateTableColumnNames( bool bSwapToEmptyNames )
{ {
mbTableColumnNamesDirty = true; mbTableColumnNamesDirty = true;
if (bSwapToEmptyNames && !maTableColumnNames.empty())
::std::vector<OUString>().swap( maTableColumnNames);
if (mpContainer) if (mpContainer)
{ {
// Add header range to dirty list. // Add header range to dirty list.
......
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