summaryrefslogtreecommitdiff
path: root/sc/source/core/tool
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/core/tool')
-rw-r--r--sc/source/core/tool/dbdata.cxx17
1 files changed, 14 insertions, 3 deletions
diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx
index cf518d0e2890..dc10d6a0503e 100644
--- a/sc/source/core/tool/dbdata.cxx
+++ b/sc/source/core/tool/dbdata.cxx
@@ -609,7 +609,7 @@ bool ScDBData::UpdateReference(const ScDocument* pDoc, UpdateRefMode eUpdateRefM
if (bDoUpdate && eRet != UR_INVALID)
{
// MoveTo() invalidates column names via SetArea(); adjust, remember and set new.
- AdjustTableColumnNames( eUpdateRefMode, nDx, nCol1, nOldCol1, nOldCol2, theCol1, theCol2);
+ AdjustTableColumnAttributes( eUpdateRefMode, nDx, nCol1, nOldCol1, nOldCol2, theCol1, theCol2);
::std::vector<OUString> aNames( maTableColumnNames);
bool bTableColumnNamesDirty = mbTableColumnNamesDirty;
// tdf#48025, tdf#141946: update the column index of the filter criteria,
@@ -686,7 +686,12 @@ void ScDBData::SetTableColumnNames( ::std::vector< OUString >&& rNames )
mbTableColumnNamesDirty = false;
}
-void ScDBData::AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx, SCCOL nCol1,
+void ScDBData::SetTableColumnAttributes( ::std::vector< TableColumnAttributes >&& rAttributes )
+{
+ maTableColumnAttributes = std::move(rAttributes);
+}
+
+void ScDBData::AdjustTableColumnAttributes( UpdateRefMode eUpdateRefMode, SCCOL nDx, SCCOL nCol1,
SCCOL nOldCol1, SCCOL nOldCol2, SCCOL nNewCol1, SCCOL nNewCol2 )
{
if (maTableColumnNames.empty())
@@ -698,6 +703,7 @@ void ScDBData::AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx,
return; // not moved or entirely moved, nothing to do
::std::vector<OUString> aNewNames;
+ ::std::vector<TableColumnAttributes> aNewAttributes;
if (eUpdateRefMode == URM_INSDEL)
{
if (nDx > 0)
@@ -714,22 +720,27 @@ void ScDBData::AdjustTableColumnNames( UpdateRefMode eUpdateRefMode, SCCOL nDx,
if (nDx > 0)
n += nDx;
aNewNames.resize(n);
+ aNewAttributes.resize(n);
+ maTableColumnAttributes.resize(n);
// Copy head.
for (size_t i = 0; i < nHead; ++i)
{
aNewNames[i] = maTableColumnNames[i];
+ aNewAttributes[i] = maTableColumnAttributes[i];
}
// Copy tail, inserted middle range, if any, stays empty.
for (size_t i = n - nTail, j = maTableColumnNames.size() - nTail; i < n; ++i, ++j)
{
aNewNames[i] = maTableColumnNames[j];
+ aNewAttributes[i] = maTableColumnAttributes[j];
}
}
} // else empty aNewNames invalidates names/offsets
SAL_WARN_IF( !maTableColumnNames.empty() && aNewNames.empty(),
- "sc.core", "ScDBData::AdjustTableColumnNames - invalidating column names/offsets");
+ "sc.core", "ScDBData::AdjustTableColumnAttributes - invalidating column attributes/offsets");
aNewNames.swap( maTableColumnNames);
+ aNewAttributes.swap(maTableColumnAttributes);
if (maTableColumnNames.empty())
mbTableColumnNamesDirty = true;
if (mbTableColumnNamesDirty)