avoid unnecessary calls of AdjustRowHeight
Change-Id: I2d164f69a7313d69f3fe5cabe1e3cc39aeba4d32
Reviewed-on: https://gerrit.libreoffice.org/40272
Reviewed-by: Tamás Bunth <btomi96@gmail.com>
Tested-by: Tamás Bunth <btomi96@gmail.com>
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index e280e3c..35693f8 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -460,7 +460,8 @@ public:
void ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr );
void ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr );
void ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& rPatAttr,
ScEditDataArray* pDataArray = nullptr );
ScEditDataArray* pDataArray = nullptr,
bool* const pIsChanged = nullptr);
void SetPattern( SCROW nRow, const ScPatternAttr& rPatAttr );
void SetPatternArea( SCROW nStartRow, SCROW nEndRow,
const ScPatternAttr& rPatAttr );
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 76a4251..bf59343 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1622,7 +1622,8 @@ public:
SC_DLLPUBLIC void ApplyPatternArea( SCCOL nStartCol, SCROW nStartRow,
SCCOL nEndCol, SCROW nEndRow,
const ScMarkData& rMark, const ScPatternAttr& rAttr,
ScEditDataArray* pDataArray = nullptr );
ScEditDataArray* pDataArray = nullptr,
bool* const pIsChanged = nullptr );
SC_DLLPUBLIC void ApplyPatternAreaTab( SCCOL nStartCol, SCROW nStartRow,
SCCOL nEndCol, SCROW nEndRow, SCTAB nTab,
const ScPatternAttr& rAttr );
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 440e0cc..80f4b7d 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -662,7 +662,8 @@ public:
void ApplyAttr( SCCOL nCol, SCROW nRow, const SfxPoolItem& rAttr );
void ApplyPattern( SCCOL nCol, SCROW nRow, const ScPatternAttr& rAttr );
void ApplyPatternArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
const ScPatternAttr& rAttr, ScEditDataArray* pDataArray = nullptr );
const ScPatternAttr& rAttr, ScEditDataArray* pDataArray = nullptr,
bool* const pIsChanged = nullptr );
void SetPattern( const ScAddress& rPos, const ScPatternAttr& rAttr )
{
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index 2ecead9..5b1dab93 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -856,7 +856,6 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac
TestData();
#endif
bool bChanged = false;
if (ValidRow(nStartRow) && ValidRow(nEndRow))
{
SCSIZE nPos;
@@ -881,7 +880,8 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac
SCROW nY2 = pData[nPos].nRow;
nStart = pData[nPos].nRow + 1;
bChanged = true;
if(pIsChanged)
*pIsChanged = true;
if ( nY1 < nStartRow || nY2 > nEndRow )
{
@@ -929,9 +929,6 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac
pDocument->SetStreamValid(nTab, false);
}
if( pIsChanged)
*pIsChanged = bChanged;
#if DEBUG_SC_TESTATTRARRAY
TestData();
#endif
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 716007e..ae2a2e7 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -514,11 +514,11 @@ void ScColumn::ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr )
}
void ScColumn::ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& rPatAttr,
ScEditDataArray* pDataArray )
ScEditDataArray* pDataArray, bool* const pIsChanged )
{
const SfxItemSet* pSet = &rPatAttr.GetItemSet();
SfxItemPoolCache aCache( pDocument->GetPool(), pSet );
pAttrArray->ApplyCacheArea( nStartRow, nEndRow, &aCache, pDataArray );
pAttrArray->ApplyCacheArea( nStartRow, nEndRow, &aCache, pDataArray, pIsChanged );
}
void ScColumn::ApplyPatternIfNumberformatIncompatible( const ScRange& rRange,
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 967a182..55978a9 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -4723,13 +4723,14 @@ void ScDocument::ApplyPatternArea( SCCOL nStartCol, SCROW nStartRow,
SCCOL nEndCol, SCROW nEndRow,
const ScMarkData& rMark,
const ScPatternAttr& rAttr,
ScEditDataArray* pDataArray )
ScEditDataArray* pDataArray,
bool* const pIsChanged )
{
SCTAB nMax = static_cast<SCTAB>(maTabs.size());
ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
for (; itr != itrEnd && *itr < nMax; ++itr)
if (maTabs[*itr])
maTabs[*itr]->ApplyPatternArea( nStartCol, nStartRow, nEndCol, nEndRow, rAttr, pDataArray );
maTabs[*itr]->ApplyPatternArea( nStartCol, nStartRow, nEndCol, nEndRow, rAttr, pDataArray, pIsChanged );
}
void ScDocument::ApplyPatternAreaTab( SCCOL nStartCol, SCROW nStartRow,
@@ -5795,7 +5796,7 @@ void ScDocument::ApplySelectionPattern( const ScPatternAttr& rAttr, const ScMark
ScRange aRange;
rMark.GetMarkArea( aRange );
ApplyPatternArea( aRange.aStart.Col(), aRange.aStart.Row(),
aRange.aEnd.Col(), aRange.aEnd.Row(), rMark, rAttr, pDataArray );
aRange.aEnd.Col(), aRange.aEnd.Row(), rMark, rAttr, pDataArray, pIsChanged );
}
else
{
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index ba78a9e..f26084a 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -2501,14 +2501,15 @@ void ScTable::ApplyPattern( SCCOL nCol, SCROW nRow, const ScPatternAttr& rAttr )
}
void ScTable::ApplyPatternArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
const ScPatternAttr& rAttr, ScEditDataArray* pDataArray )
const ScPatternAttr& rAttr, ScEditDataArray* pDataArray,
bool* const pIsChanged )
{
if (ValidColRow(nStartCol, nStartRow) && ValidColRow(nEndCol, nEndRow))
{
PutInOrder(nStartCol, nEndCol);
PutInOrder(nStartRow, nEndRow);
for (SCCOL i = nStartCol; i <= nEndCol; i++)
aCol[i].ApplyPatternArea(nStartRow, nEndRow, rAttr, pDataArray);
aCol[i].ApplyPatternArea(nStartRow, nEndRow, rAttr, pDataArray, pIsChanged);
}
}
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 0a170c4..17d8d2d 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1369,7 +1369,7 @@ bool ScDocFunc::ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& r
if ( !bImportingXML )
rDocShell.UpdatePaintExt( nExtFlags, aMultiRange ); // content before the change
bool bChanged = true;
bool bChanged = false;
rDoc.ApplySelectionPattern( rPattern, rMark, nullptr, &bChanged );
if(bChanged)