diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2017-12-21 19:43:59 -0500 |
---|---|---|
committer | Ashod Nakashian <ashnakash@gmail.com> | 2017-12-24 17:09:30 +0100 |
commit | de7392c4967f76d958dd7f2be8ef9e5af90624e2 (patch) | |
tree | 1a1bbabc0c23711b16ec7d66931b50fd41514881 /sc | |
parent | 653736fb23346e07e8c0e6e0125689ae1f49f0f7 (diff) |
sc: compact ScColumn
Remove ScDocument* member from ScColumn
and re-use the one in ScAttrArray.
This saves 8 bytes and makes the code more
homogenious by using GetDoc() member everywhere.
(cherry picked from commit 1168a11278ed3c2a00058e1f802f6e44cb925318)
Reviewed-on: https://gerrit.libreoffice.org/46680
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
(cherry picked from commit dc3f0bde0bdef2a1e94055be146b433cb9fc54ba)
Change-Id: I16a94b7ef7c45ef3af14e812b45f255f39939a6e
Reviewed-on: https://gerrit.libreoffice.org/46990
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/attarray.hxx | 3 | ||||
-rw-r--r-- | sc/inc/column.hxx | 13 | ||||
-rw-r--r-- | sc/source/core/data/cellvalue.cxx | 4 | ||||
-rw-r--r-- | sc/source/core/data/column.cxx | 103 | ||||
-rw-r--r-- | sc/source/core/data/column2.cxx | 32 | ||||
-rw-r--r-- | sc/source/core/data/column3.cxx | 125 | ||||
-rw-r--r-- | sc/source/core/data/column4.cxx | 20 | ||||
-rw-r--r-- | sc/source/core/data/dociter.cxx | 4 | ||||
-rw-r--r-- | sc/source/core/data/table4.cxx | 2 | ||||
-rw-r--r-- | sc/source/ui/docshell/externalrefmgr.cxx | 4 |
10 files changed, 165 insertions, 145 deletions
diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx index f8d7d53b88f6..fc933d9c2f8f 100644 --- a/sc/inc/attarray.hxx +++ b/sc/inc/attarray.hxx @@ -87,7 +87,7 @@ class ScAttrArray private: SCCOL nCol; SCTAB nTab; - ScDocument* pDocument; + ScDocument* const pDocument; std::vector<ScAttrEntry> mvData; @@ -112,6 +112,7 @@ public: ScAttrArray( SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc, ScAttrArray* pNextColAttrArray ); ~ScAttrArray(); + ScDocument* GetDoc() { return pDocument; } void SetTab(SCTAB nNewTab) { nTab = nNewTab; } void SetCol(SCCOL nNewCol) { nCol = nNewCol; } #if DEBUG_SC_TESTATTRARRAY diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index 5c34279ad3c4..ff65fbc3b3a0 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -29,6 +29,7 @@ #include "mtvelements.hxx" #include <formula/types.hxx> #include <svl/zforlist.hxx> +#include "attarray.hxx" #include <set> #include <vector> @@ -139,14 +140,13 @@ class ScColumn // Cell values. sc::CellStoreType maCells; - SCCOL nCol; - SCTAB nTab; - - ScAttrArray* pAttrArray; - ScDocument* pDocument; + ScAttrArray* pAttrArray; size_t mnBlkCountFormula; + SCCOL nCol; + SCTAB nTab; + friend class ScDocument; // for FillInfo friend class ScTable; friend class ScValueIterator; @@ -190,8 +190,7 @@ public: void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc, bool bEmptyAttrArray); - ScDocument& GetDoc() { return *pDocument;} - const ScDocument& GetDoc() const { return *pDocument;} + ScDocument* GetDoc() const { return pAttrArray->GetDoc(); } SCTAB GetTab() const { return nTab; } SCCOL GetCol() const { return nCol; } sc::CellStoreType& GetCellStore() { return maCells; } diff --git a/sc/source/core/data/cellvalue.cxx b/sc/source/core/data/cellvalue.cxx index abaaad5e8cb6..200b9b3c5282 100644 --- a/sc/source/core/data/cellvalue.cxx +++ b/sc/source/core/data/cellvalue.cxx @@ -115,7 +115,7 @@ void commitToColumn( const ScCellValue& rCell, ScColumn& rColumn, SCROW nRow ) rColumn.SetRawString(nRow, *rCell.mpString); break; case CELLTYPE_EDIT: - rColumn.SetEditText(nRow, ScEditUtil::Clone(*rCell.mpEditText, rColumn.GetDoc())); + rColumn.SetEditText(nRow, ScEditUtil::Clone(*rCell.mpEditText, *rColumn.GetDoc())); break; case CELLTYPE_VALUE: rColumn.SetValue(nRow, rCell.mfValue); @@ -123,7 +123,7 @@ void commitToColumn( const ScCellValue& rCell, ScColumn& rColumn, SCROW nRow ) case CELLTYPE_FORMULA: { ScAddress aDestPos(rColumn.GetCol(), nRow, rColumn.GetTab()); - rColumn.SetFormulaCell(nRow, new ScFormulaCell(*rCell.mpFormula, rColumn.GetDoc(), aDestPos)); + rColumn.SetFormulaCell(nRow, new ScFormulaCell(*rCell.mpFormula, *rColumn.GetDoc(), aDestPos)); } break; default: diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 2ade243a8682..b0c70999767b 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -87,11 +87,10 @@ ScColumn::ScColumn() : maBroadcasters(MAXROWCOUNT), maCellsEvent(this), maCells(maCellsEvent), - nCol( 0 ), - nTab( 0 ), pAttrArray( nullptr ), - pDocument( nullptr ), - mnBlkCountFormula(0) + mnBlkCountFormula(0), + nCol( 0 ), + nTab( 0 ) { maCells.resize(MAXROWCOUNT); } @@ -106,11 +105,10 @@ void ScColumn::Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc, bool bEmptyA { nCol = nNewCol; nTab = nNewTab; - pDocument = pDoc; if ( bEmptyAttrArray ) - pAttrArray = new ScAttrArray( nCol, nTab, pDocument, nullptr ); + pAttrArray = new ScAttrArray( nCol, nTab, pDoc, nullptr ); else - pAttrArray = new ScAttrArray( nCol, nTab, pDocument, &pDocument->maTabs[nTab]->aDefaultColAttrArray ); + pAttrArray = new ScAttrArray( nCol, nTab, pDoc, &pDoc->maTabs[nTab]->aDefaultColAttrArray ); } SCROW ScColumn::GetNextUnprotected( SCROW nRow, bool bUp ) const @@ -275,7 +273,7 @@ bool ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const aCurOrigin = aOrigin; const ScFormulaCell* pFCell; if (pCell->GetMatrixFlag() == ScMatrixMode::Reference) - pFCell = pDocument->GetFormulaCell(aOrigin); + pFCell = GetDoc()->GetFormulaCell(aOrigin); else pFCell = pCell; @@ -384,7 +382,7 @@ const ScPatternAttr* ScColumn::GetMostUsedPattern( SCROW nStartRow, SCROW nEndRo const ScPatternAttr* pMaxPattern = nullptr; size_t nMaxCount = 0; - ScAttrIterator aAttrIter( pAttrArray, nStartRow, nEndRow, pDocument->GetDefPattern() ); + ScAttrIterator aAttrIter( pAttrArray, nStartRow, nEndRow, GetDoc()->GetDefPattern() ); const ScPatternAttr* pPattern; SCROW nAttrRow1 = 0, nAttrRow2 = 0; @@ -404,6 +402,7 @@ const ScPatternAttr* ScColumn::GetMostUsedPattern( SCROW nStartRow, SCROW nEndRo sal_uInt32 ScColumn::GetNumberFormat( SCROW nStartRow, SCROW nEndRow ) const { + ScDocument* pDocument = GetDoc(); SCROW nPatStartRow, nPatEndRow; const ScPatternAttr* pPattern = pAttrArray->GetPatternRange(nPatStartRow, nPatEndRow, nStartRow); sal_uInt32 nFormat = pPattern->GetNumberFormat(pDocument->GetFormatTable()); @@ -501,7 +500,7 @@ void ScColumn::DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData& rM void ScColumn::ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr ) { const SfxItemSet* pSet = &rPatAttr.GetItemSet(); - SfxItemPoolCache aCache( pDocument->GetPool(), pSet ); + SfxItemPoolCache aCache( GetDoc()->GetPool(), pSet ); const ScPatternAttr* pPattern = pAttrArray->GetPattern( nRow ); @@ -517,7 +516,7 @@ void ScColumn::ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPattern ScEditDataArray* pDataArray, bool* const pIsChanged ) { const SfxItemSet* pSet = &rPatAttr.GetItemSet(); - SfxItemPoolCache aCache( pDocument->GetPool(), pSet ); + SfxItemPoolCache aCache( GetDoc()->GetPool(), pSet ); pAttrArray->ApplyCacheArea( nStartRow, nEndRow, &aCache, pDataArray, pIsChanged ); } @@ -525,8 +524,8 @@ void ScColumn::ApplyPatternIfNumberformatIncompatible( const ScRange& rRange, const ScPatternAttr& rPattern, SvNumFormatType nNewType ) { const SfxItemSet* pSet = &rPattern.GetItemSet(); - SfxItemPoolCache aCache( pDocument->GetPool(), pSet ); - SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); + SfxItemPoolCache aCache( GetDoc()->GetPool(), pSet ); + SvNumberFormatter* pFormatter = GetDoc()->GetFormatTable(); SCROW nEndRow = rRange.aEnd.Row(); for ( SCROW nRow = rRange.aStart.Row(); nRow <= nEndRow; nRow++ ) { @@ -619,6 +618,7 @@ const ScStyleSheet* ScColumn::GetSelectionStyle( const ScMarkData& rMark, bool& const ScStyleSheet* pStyle = nullptr; const ScStyleSheet* pNewStyle; + ScDocument* pDocument = GetDoc(); ScMultiSelIter aMultiIter( rMark.GetMultiSelData(), nCol ); SCROW nTop; SCROW nBottom; @@ -650,7 +650,7 @@ const ScStyleSheet* ScColumn::GetAreaStyle( bool& rFound, SCROW nRow1, SCROW nRo const ScStyleSheet* pStyle = nullptr; const ScStyleSheet* pNewStyle; - ScAttrIterator aAttrIter( pAttrArray, nRow1, nRow2, pDocument->GetDefPattern() ); + ScAttrIterator aAttrIter( pAttrArray, nRow1, nRow2, GetDoc()->GetDefPattern() ); SCROW nRow; SCROW nDummy; const ScPatternAttr* pPattern; @@ -707,7 +707,7 @@ void ScColumn::ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr ) // in order to only create a new SetItem, we don't need SfxItemPoolCache. //TODO: Warning: SfxItemPoolCache seems to create to many Refs for the new SetItem ?? - ScDocumentPool* pDocPool = pDocument->GetPool(); + ScDocumentPool* pDocPool = GetDoc()->GetPool(); const ScPatternAttr* pOldPattern = pAttrArray->GetPattern( nRow ); std::unique_ptr<ScPatternAttr> pTemp(new ScPatternAttr(*pOldPattern)); @@ -935,7 +935,7 @@ public: std::vector<EditTextObject*> aCloned; aCloned.reserve(nDataSize); for (; it != itEnd; ++it) - aCloned.push_back(ScEditUtil::Clone(**it, mrDestCol.GetDoc())); + aCloned.push_back(ScEditUtil::Clone(**it, *mrDestCol.GetDoc())); maDestPos.miCellPos = mrDestCol.GetCellStore().set( maDestPos.miCellPos, nTopRow, aCloned.begin(), aCloned.end()); @@ -954,10 +954,10 @@ public: for (; it != itEnd; ++it, aDestPos.IncRow()) { const ScFormulaCell& rOld = **it; - if (rOld.GetDirty() && mrSrcCol.GetDoc().GetAutoCalc()) + if (rOld.GetDirty() && mrSrcCol.GetDoc()->GetAutoCalc()) const_cast<ScFormulaCell&>(rOld).Interpret(); - aCloned.push_back(new ScFormulaCell(rOld, mrDestCol.GetDoc(), aDestPos)); + aCloned.push_back(new ScFormulaCell(rOld, *mrDestCol.GetDoc(), aDestPos)); } // Group the cloned formula cells. @@ -1053,6 +1053,7 @@ void ScColumn::CopyStaticToDocument( aDestPos.miCellPos = rDestCol.maCells.begin(); + ScDocument* pDocument = GetDoc(); std::pair<sc::CellStoreType::const_iterator,size_t> aPos = maCells.position(nRow1); sc::CellStoreType::const_iterator it = aPos.first; size_t nOffset = aPos.second; @@ -1164,6 +1165,7 @@ void ScColumn::CopyStaticToDocument( void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDestCol ) { + ScDocument* pDocument = GetDoc(); std::pair<sc::CellStoreType::const_iterator,size_t> aPos = maCells.position(nSrcRow); sc::CellStoreType::const_iterator it = aPos.first; bool bSet = true; @@ -1178,10 +1180,10 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes case sc::element_type_edittext: { EditTextObject* p = sc::edittext_block::at(*it->data, aPos.second); - if (pDocument == rDestCol.pDocument) + if (pDocument == rDestCol.GetDoc()) rDestCol.maCells.set(nDestRow, p->Clone()); else - rDestCol.maCells.set(nDestRow, ScEditUtil::Clone(*p, *rDestCol.pDocument)); + rDestCol.maCells.set(nDestRow, ScEditUtil::Clone(*p, *rDestCol.GetDoc())); } break; case sc::element_type_formula: @@ -1192,7 +1194,7 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes ScAddress aDestPos = p->aPos; aDestPos.SetRow(nDestRow); - ScFormulaCell* pNew = new ScFormulaCell(*p, *rDestCol.pDocument, aDestPos); + ScFormulaCell* pNew = new ScFormulaCell(*p, *rDestCol.GetDoc(), aDestPos); rDestCol.SetFormulaCell(nDestRow, pNew); } break; @@ -1210,7 +1212,7 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes if (pNote) { pNote = pNote->Clone(ScAddress(nCol, nSrcRow, nTab), - rDestCol.GetDoc(), + *rDestCol.GetDoc(), ScAddress(rDestCol.nCol, nDestRow, rDestCol.nTab), false); rDestCol.maCellNotes.set(nDestRow, pNote); @@ -1271,7 +1273,7 @@ class CopyAsLinkHandler ScTokenArray aArr; aArr.AddSingleReference(aRef); - return new ScFormulaCell(&mrDestCol.GetDoc(), ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab()), aArr); + return new ScFormulaCell(mrDestCol.GetDoc(), ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab()), aArr); } void createRefBlock(const sc::CellStoreType::value_type& aNode, size_t nOffset, size_t nDataSize) @@ -1344,7 +1346,7 @@ public: ScAddress aSrcPos(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab()); for (; it != itEnd; ++it, aSrcPos.IncRow(), ++nRow) { - if (!canCopyValue(mrSrcCol.GetDoc(), aSrcPos, mnCopyFlags)) + if (!canCopyValue(*mrSrcCol.GetDoc(), aSrcPos, mnCopyFlags)) continue; maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nRow, createRefCell(nRow)); @@ -1428,14 +1430,14 @@ class CopyByCloneHandler if (bForceFormula || bCloneFormula) { // Clone as formula cell. - ScFormulaCell* pCell = new ScFormulaCell(rSrcCell, mrDestCol.GetDoc(), aDestPos, mnFormulaCellCloneFlags); + ScFormulaCell* pCell = new ScFormulaCell(rSrcCell, *mrDestCol.GetDoc(), aDestPos, mnFormulaCellCloneFlags); pCell->SetDirtyVar(); mrDestCol.SetFormulaCell(maDestPos, nRow, pCell, meListenType); setDefaultAttrToDest(nRow); return; } - if (mrDestCol.GetDoc().IsUndo()) + if (mrDestCol.GetDoc()->IsUndo()) return; if (bCloneValue) @@ -1444,7 +1446,7 @@ class CopyByCloneHandler if (nErr != FormulaError::NONE) { // error codes are cloned with values - ScFormulaCell* pErrCell = new ScFormulaCell(&mrDestCol.GetDoc(), aDestPos); + ScFormulaCell* pErrCell = new ScFormulaCell(mrDestCol.GetDoc(), aDestPos); pErrCell->SetErrCode(nErr); mrDestCol.SetFormulaCell(maDestPos, nRow, pErrCell, meListenType); setDefaultAttrToDest(nRow); @@ -1456,7 +1458,7 @@ class CopyByCloneHandler { if (rSrcCell.IsValue()) { - if (canCopyValue(mrSrcCol.GetDoc(), ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab()), mnCopyFlags)) + if (canCopyValue(*mrSrcCol.GetDoc(), ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab()), mnCopyFlags)) { maDestPos.miCellPos = mrDestCol.GetCellStore().set( maDestPos.miCellPos, nRow, rSrcCell.GetValue()); @@ -1477,7 +1479,7 @@ class CopyByCloneHandler if (rSrcCell.IsMultilineResult()) { // Clone as an edit text object. - EditEngine& rEngine = mrDestCol.GetDoc().GetEditEngine(); + EditEngine& rEngine = mrDestCol.GetDoc()->GetEditEngine(); rEngine.SetText(aStr.getString()); maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nRow, rEngine.CreateTextObject()); @@ -1563,7 +1565,7 @@ public: ScAddress aSrcPos(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab()); for (; it != itEnd; ++it, aSrcPos.IncRow(), ++nRow) { - if (!canCopyValue(mrSrcCol.GetDoc(), aSrcPos, mnCopyFlags)) + if (!canCopyValue(*mrSrcCol.GetDoc(), aSrcPos, mnCopyFlags)) continue; maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nRow, *it); @@ -1624,7 +1626,7 @@ public: std::vector<EditTextObject*> aCloned; aCloned.reserve(nDataSize); for (; it != itEnd; ++it) - aCloned.push_back(ScEditUtil::Clone(**it, mrDestCol.GetDoc())); + aCloned.push_back(ScEditUtil::Clone(**it, *mrDestCol.GetDoc())); maDestPos.miCellPos = mrDestCol.GetCellStore().set( maDestPos.miCellPos, nRow, aCloned.begin(), aCloned.end()); @@ -1709,8 +1711,8 @@ void ScColumn::CopyToColumn( // Compare the ScDocumentPool* to determine if we are copying // within the same document. If not, re-intern shared strings. svl::SharedStringPool* pSharedStringPool = - (pDocument->GetPool() != rColumn.pDocument->GetPool()) ? - &rColumn.pDocument->GetSharedStringPool() : nullptr; + (GetDoc()->GetPool() != rColumn.GetDoc()->GetPool()) ? + &rColumn.GetDoc()->GetSharedStringPool() : nullptr; CopyByCloneHandler aFunc(*this, rColumn, rCxt.getBlockPosition(rColumn.nTab, rColumn.nCol), nFlags, pSharedStringPool, bGlobalNamesToLocal); aFunc.setStartListening(rCxt.isStartListening()); @@ -1760,6 +1762,7 @@ void ScColumn::CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const void ScColumn::CopyScenarioFrom( const ScColumn& rSrcCol ) { // This is the scenario table, the data is copied into it + ScDocument* pDocument = GetDoc(); ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW, pDocument->GetDefPattern() ); SCROW nStart = -1, nEnd = -1; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); @@ -1788,6 +1791,7 @@ void ScColumn::CopyScenarioFrom( const ScColumn& rSrcCol ) void ScColumn::CopyScenarioTo( ScColumn& rDestCol ) const { // This is the scenario table, the data is copied to the other + ScDocument* pDocument = GetDoc(); ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW, pDocument->GetDefPattern() ); SCROW nStart = -1, nEnd = -1; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); @@ -1796,7 +1800,7 @@ void ScColumn::CopyScenarioTo( ScColumn& rDestCol ) const if ( pPattern->GetItem( ATTR_MERGE_FLAG ).IsScenario() ) { rDestCol.DeleteArea( nStart, nEnd, InsertDeleteFlags::CONTENTS ); - sc::CopyToDocContext aCxt(*rDestCol.pDocument); + sc::CopyToDocContext aCxt(*rDestCol.GetDoc()); CopyToColumn(aCxt, nStart, nEnd, InsertDeleteFlags::CONTENTS, false, rDestCol); sc::RefUpdateContext aRefCxt(*pDocument); @@ -1813,7 +1817,7 @@ void ScColumn::CopyScenarioTo( ScColumn& rDestCol ) const bool ScColumn::TestCopyScenarioTo( const ScColumn& rDestCol ) const { bool bOk = true; - ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW, pDocument->GetDefPattern() ); + ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW, GetDoc()->GetDefPattern() ); SCROW nStart = 0, nEnd = 0; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); while (pPattern && bOk) @@ -1831,7 +1835,7 @@ void ScColumn::MarkScenarioIn( ScMarkData& rDestMark ) const { ScRange aRange( nCol, 0, nTab ); - ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW, pDocument->GetDefPattern() ); + ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW, GetDoc()->GetDefPattern() ); SCROW nStart = -1, nEnd = -1; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); while (pPattern) @@ -1968,6 +1972,7 @@ void ScColumn::MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol) rCol.CellStorageModified(); // Broadcast on moved ranges. Area-broadcast only. + ScDocument* pDocument = GetDoc(); ScHint aHint(SfxHintId::ScDataChanged, ScAddress(nCol, 0, nTab)); ScAddress& rPos = aHint.GetAddress(); sc::SingleColumnSpanSet::SpansType::const_iterator itRange = aRanges.begin(), itRangeEnd = aRanges.end(); @@ -2389,7 +2394,7 @@ bool ScColumn::UpdateReference( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc if (rCxt.meMode == URM_COPY) return UpdateReferenceOnCopy(rCxt, pUndoDoc); - if (IsEmptyData() || pDocument->IsClipOrUndo()) + if (IsEmptyData() || GetDoc()->IsClipOrUndo()) // Cells in this column are all empty, or clip or undo doc. No update needed. return false; @@ -2890,7 +2895,7 @@ public: void operator() (size_t nRow, ScFormulaCell* pCell) { - sal_uInt32 nFormat = mrCol.GetNumberFormat(mrCol.GetDoc().GetNonThreadedContext(), nRow); + sal_uInt32 nFormat = mrCol.GetNumberFormat(mrCol.GetDoc()->GetNonThreadedContext(), nRow); if( (nFormat % SV_COUNTRY_LANGUAGE_OFFSET) != 0) // Non-default number format is set. pCell->SetNeedNumberFormat(false); @@ -3139,7 +3144,7 @@ bool ScColumn::IsFormulaDirty( SCROW nRow ) const void ScColumn::CheckVectorizationState() { - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); CheckVectorizationHandler aFunc; sc::ProcessFormula(maCells, aFunc); } @@ -3147,8 +3152,8 @@ void ScColumn::CheckVectorizationState() void ScColumn::SetAllFormulasDirty( const sc::SetFormulaDirtyContext& rCxt ) { // is only done documentwide, no FormulaTracking - sc::AutoCalcSwitch aSwitch(*pDocument, false); - SetDirtyHandler aFunc(*pDocument, rCxt); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); + SetDirtyHandler aFunc(*GetDoc(), rCxt); sc::ProcessFormula(maCells, aFunc); } @@ -3156,7 +3161,7 @@ void ScColumn::SetDirtyFromClip( SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet& rB { // Set all formula cells in the range dirty, and pick up all non-formula // cells for later broadcasting. We don't broadcast here. - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); SetDirtyOnRangeHandler aHdl(*this); sc::ProcessFormula(maCells.begin(), maCells, nRow1, nRow2, aHdl, aHdl); @@ -3202,7 +3207,7 @@ bool ScColumn::BroadcastBroadcasters( SCROW nRow1, SCROW nRow2, ScHint& rHint ) void ScColumn::SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode eMode ) { // broadcasts everything within the range, with FormulaTracking - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); switch (eMode) { @@ -3234,7 +3239,7 @@ void ScColumn::SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode eMode ) // formulas via ScDocument::Broadcast(), which // BroadcastBroadcastersHandler doesn't, so explicitly // track them here. - pDocument->TrackFormulas(); + GetDoc()->TrackFormulas(); } } break; @@ -3243,7 +3248,7 @@ void ScColumn::SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode eMode ) void ScColumn::SetTableOpDirty( const ScRange& rRange ) { - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row(); SetTableOpDirtyOnRangeHandler aHdl(*this); @@ -3253,7 +3258,7 @@ void ScColumn::SetTableOpDirty( const ScRange& rRange ) void ScColumn::SetDirtyAfterLoad() { - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); SetDirtyAfterLoadHandler aFunc; sc::ProcessFormula(maCells, aFunc); } @@ -3280,14 +3285,14 @@ public: void ScColumn::SetDirtyIfPostponed() { - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); SetDirtyIfPostponedHandler aFunc; sc::ProcessFormula(maCells, aFunc); } void ScColumn::BroadcastRecalcOnRefMove() { - sc::AutoCalcSwitch aSwitch(*pDocument, false); + sc::AutoCalcSwitch aSwitch(*GetDoc(), false); RecalcOnRefMoveCollector aFunc; sc::ProcessFormula(maCells, aFunc); BroadcastCells(aFunc.getDirtyRows(), SfxHintId::ScDataChanged); @@ -3428,7 +3433,7 @@ void ScColumn::TransferListeners( } // Remove any broadcasters that have no listeners. - RemoveEmptyBroadcasterHandler aFuncRemoveEmpty(*pDocument, nCol, nTab); + RemoveEmptyBroadcasterHandler aFuncRemoveEmpty(*GetDoc(), nCol, nTab); sc::ProcessBroadcaster(maBroadcasters.begin(), maBroadcasters, nRow1, nRow2, aFuncRemoveEmpty); aFuncRemoveEmpty.purge(); } diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index b0d69b8c4bb8..9992b79da0f2 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -129,6 +129,7 @@ long ScColumn::GetNeededSize( } // conditional formatting + ScDocument* pDocument = GetDoc(); const SfxItemSet* pCondSet = pDocument->GetCondResult( nCol, nRow, nTab ); //The pPattern may change in GetCondResult @@ -647,6 +648,7 @@ sal_uInt16 ScColumn::GetOptimalColWidth( sal_uInt16 nWidth = static_cast<sal_uInt16>(nOldWidth*nPPTX); bool bFound = false; + ScDocument* pDocument = GetDoc(); if ( pParam && pParam->mbSimpleText ) { // all the same except for number format @@ -782,6 +784,7 @@ static sal_uInt16 lcl_GetAttribHeight( const ScPatternAttr& rPattern, sal_uInt16 void ScColumn::GetOptimalHeight( sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart ) { + ScDocument* pDocument = GetDoc(); ScFlatUInt16RowSegments& rHeights = rCxt.getHeightArray(); ScAttrIterator aIter( pAttrArray, nStartRow, nEndRow, pDocument->GetDefPattern() ); @@ -971,6 +974,7 @@ void ScColumn::GetOptimalHeight( bool ScColumn::GetNextSpellingCell(SCROW& nRow, bool bInSel, const ScMarkData& rData) const { + ScDocument* pDocument = GetDoc(); bool bStop = false; sc::CellStoreType::const_iterator it = maCells.position(nRow).first; mdds::mtv::element_t eType = it->type; @@ -1135,7 +1139,7 @@ public: void ScColumn::RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow ) { - RemoveEditAttribsHandler aFunc(maCells, pDocument); + RemoveEditAttribsHandler aFunc(maCells, GetDoc()); sc::ProcessEditText(maCells.begin(), maCells, nStartRow, nEndRow, aFunc); aFunc.commitStrings(); } @@ -1411,7 +1415,7 @@ SCROW ScColumn::FindNextVisibleRow(SCROW nRow, bool bForward) const { nRow++; SCROW nEndRow = 0; - bool bHidden = pDocument->RowHidden(nRow, nTab, nullptr, &nEndRow); + bool bHidden = GetDoc()->RowHidden(nRow, nTab, nullptr, &nEndRow); if(bHidden) return std::min<SCROW>(MAXROW, nEndRow + 1); else @@ -1421,7 +1425,7 @@ SCROW ScColumn::FindNextVisibleRow(SCROW nRow, bool bForward) const { nRow--; SCROW nStartRow = MAXROW; - bool bHidden = pDocument->RowHidden(nRow, nTab, &nStartRow); + bool bHidden = GetDoc()->RowHidden(nRow, nTab, &nStartRow); if(bHidden) return std::max<SCROW>(0, nStartRow - 1); else @@ -1432,6 +1436,7 @@ SCROW ScColumn::FindNextVisibleRow(SCROW nRow, bool bForward) const SCROW ScColumn::FindNextVisibleRowWithContent( sc::CellStoreType::const_iterator& itPos, SCROW nRow, bool bForward) const { + ScDocument* pDocument = GetDoc(); if (bForward) { do @@ -1676,7 +1681,7 @@ struct ColumnStorageDumper void ScColumn::DumpColumnStorage() const { cout << "-- table: " << nTab << "; column: " << nCol << endl; - std::for_each(maCells.begin(), maCells.end(), ColumnStorageDumper(pDocument)); + std::for_each(maCells.begin(), maCells.end(), ColumnStorageDumper(GetDoc())); cout << "--" << endl; } #endif @@ -1775,9 +1780,9 @@ public: SCROW nDestRow = nRow + mnDestOffset; ScAddress aSrcPos(mnSrcCol, nRow, mnSrcTab); ScAddress aDestPos(mnDestCol, nDestRow, mnDestTab); - miPos = mrDestNotes.set(miPos, nDestRow, p->Clone(aSrcPos, mrDestCol.GetDoc(), aDestPos, mbCloneCaption)); + miPos = mrDestNotes.set(miPos, nDestRow, p->Clone(aSrcPos, *mrDestCol.GetDoc(), aDestPos, mbCloneCaption)); // Notify our LOK clients also - ScDocShell::LOKCommentNotify(LOKCommentNotificationType::Add, &mrDestCol.GetDoc(), aDestPos, p); + ScDocShell::LOKCommentNotify(LOKCommentNotificationType::Add, mrDestCol.GetDoc(), aDestPos, p); } }; @@ -1790,7 +1795,7 @@ void ScColumn::CopyCellNotesToDocument( // The column has no cell notes to copy between specified rows. return; - ScDrawLayer *pDrawLayer = rDestCol.GetDoc().GetDrawLayer(); + ScDrawLayer *pDrawLayer = rDestCol.GetDoc()->GetDrawLayer(); bool bWasLocked = bool(); if (pDrawLayer) { @@ -1900,7 +1905,7 @@ namespace { void ScColumn::CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership) { ScAddress aAddr(nCol, 0, nTab); - CellNoteHandler aFunc(pDocument, aAddr, bForgetCaptionOwnership); + CellNoteHandler aFunc(GetDoc(), aAddr, bForgetCaptionOwnership); sc::ParseNote(maCellNotes.begin(), maCellNotes, nRow1, nRow2, aFunc); } @@ -2104,8 +2109,8 @@ formula::FormulaTokenRef ScColumn::ResolveStaticReference( SCROW nRow ) case sc::element_type_edittext: { const EditTextObject* pText = sc::edittext_block::at(*it->data, aPos.second); - OUString aStr = ScEditUtil::GetString(*pText, pDocument); - svl::SharedString aSS( pDocument->GetSharedStringPool().intern(aStr)); + OUString aStr = ScEditUtil::GetString(*pText, GetDoc()); + svl::SharedString aSS( GetDoc()->GetSharedStringPool().intern(aStr)); return formula::FormulaTokenRef(new formula::FormulaStringToken(aSS)); } case sc::element_type_empty: @@ -2162,7 +2167,7 @@ bool ScColumn::ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow if (nRow1 > nRow2) return false; - ToMatrixHandler aFunc(rMat, nMatCol, nRow1, pDocument); + ToMatrixHandler aFunc(rMat, nMatCol, nRow1, GetDoc()); sc::ParseAllNonEmpty(maCells.begin(), maCells, nRow1, nRow2, aFunc); return true; } @@ -2360,7 +2365,7 @@ public: void ScColumn::FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const { - FillMatrixHandler aFunc(rMat, nMatCol, nRow1, pDocument, pPool); + FillMatrixHandler aFunc(rMat, nMatCol, nRow1, GetDoc(), pPool); sc::ParseBlock(maCells.begin(), maCells, aFunc, nRow1, nRow2); } @@ -2630,6 +2635,7 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 return formula::VectorRefArray(formula::VectorRefArray::Invalid); // See if the requested range is already cached. + ScDocument* pDocument = GetDoc(); sc::FormulaGroupContext& rCxt = *(pDocument->GetFormulaGroupContext()); sc::FormulaGroupContext::ColArray* pColArray = rCxt.getCachedColArray(nTab, nCol, nRow2+1); if (pColArray) @@ -2872,7 +2878,7 @@ void ScColumn::SetFormulaResults( SCROW nRow, const formula::FormulaConstTokenRe void ScColumn::CalculateInThread( ScInterpreterContext& rContext, SCROW nRow, size_t nLen, unsigned nThisThread, unsigned nThreadsTotal) { - assert(pDocument->mbThreadedGroupCalcInProgress); + assert(GetDoc()->mbThreadedGroupCalcInProgress); sc::CellStoreType::position_type aPos = maCells.position(nRow); sc::CellStoreType::iterator it = aPos.first; diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index c04244f31750..bb5b59dc2416 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -71,7 +71,7 @@ using namespace formula; void ScColumn::Broadcast( SCROW nRow ) { ScHint aHint(SfxHintId::ScDataChanged, ScAddress(nCol, nRow, nTab)); - pDocument->Broadcast(aHint); + GetDoc()->Broadcast(aHint); } void ScColumn::BroadcastCells( const std::vector<SCROW>& rRows, SfxHintId nHint ) @@ -80,6 +80,7 @@ void ScColumn::BroadcastCells( const std::vector<SCROW>& rRows, SfxHintId nHint return; // Broadcast the changes. + ScDocument* pDocument = GetDoc(); ScHint aHint(nHint, ScAddress(nCol, 0, nTab)); std::vector<SCROW>::const_iterator itRow = rRows.begin(), itRowEnd = rRows.end(); for (; itRow != itRowEnd; ++itRow) @@ -126,7 +127,7 @@ void ScColumn::DeleteContent( SCROW nRow, bool bBroadcast ) if (it->type == sc::element_type_formula) { ScFormulaCell* p = sc::formula_block::at(*it->data, aPos.second); - p->EndListeningTo(pDocument); + p->EndListeningTo(GetDoc()); sc::SharedFormulaUtil::unshareFormulaCell(aPos, *p); } maCells.set_empty(nRow, nRow); @@ -237,7 +238,7 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize, std::vector<ScAddress>* aNonEmptySpans.scan(aBlockPos, *this, nEndRow+1, MAXROW); } - sc::AutoCalcSwitch aACSwitch(*pDocument, false); + sc::AutoCalcSwitch aACSwitch(*GetDoc(), false); // Remove the cells. maCells.erase(nStartRow, nEndRow); @@ -289,9 +290,9 @@ void ScColumn::JoinNewFormulaCell( void ScColumn::DetachFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell ) { - if (!pDocument->IsClipOrUndo()) + if (!GetDoc()->IsClipOrUndo()) // Have the dying formula cell stop listening. - rCell.EndListeningTo(pDocument); + rCell.EndListeningTo(GetDoc()); sc::SharedFormulaUtil::unshareFormulaCell(aPos, rCell); } @@ -345,10 +346,10 @@ void ScColumn::DetachFormulaCells( sc::SharedFormulaUtil::splitFormulaCellGroup(aPos2, nullptr); } - if (pDocument->IsClipOrUndo()) + if (GetDoc()->IsClipOrUndo()) return; - DetachFormulaCellsHandler aFunc(pDocument, nullptr); + DetachFormulaCellsHandler aFunc(GetDoc(), nullptr); sc::ProcessFormula(aPos.first, maCells, nRow, nNextTopRow-1, aFunc); } @@ -364,7 +365,7 @@ void ScColumn::AttachFormulaCells( sc::StartListeningContext& rCxt, SCROW nRow1, sc::SharedFormulaUtil::joinFormulaCellAbove(aPos); } - if (pDocument->IsClipOrUndo()) + if (GetDoc()->IsClipOrUndo()) return; AttachFormulaCellsHandler aFunc(rCxt); @@ -384,10 +385,10 @@ void ScColumn::DetachFormulaCells( sc::EndListeningContext& rCxt, SCROW nRow1, S sc::SharedFormulaUtil::splitFormulaCellGroup(aPos, &rCxt); } - if (pDocument->IsClipOrUndo()) + if (GetDoc()->IsClipOrUndo()) return; - DetachFormulaCellsHandler aFunc(pDocument, &rCxt); + DetachFormulaCellsHandler aFunc(GetDoc(), &rCxt); sc::ProcessFormula(it, maCells, nRow1, nRow2, aFunc); } @@ -425,6 +426,7 @@ void ScColumn::AttachNewFormulaCell( // we call StartListeningFromClip and BroadcastFromClip. // If we insert into the Clipboard/andoDoc, we do not use a Broadcast. // After Import we call CalcAfterLoad and in there Listening. + ScDocument* pDocument = GetDoc(); if (pDocument->IsClipOrUndo() || pDocument->IsInsertingFromOtherDoc()) return; @@ -471,6 +473,7 @@ void ScColumn::AttachNewFormulaCells( const sc::CellStoreType::position_type& aP pCell = sc::formula_block::at(*aPosLast.first->data, aPosLast.second); JoinNewFormulaCell(aPosLast, *pCell); + ScDocument* pDocument = GetDoc(); if (!pDocument->IsClipOrUndo() && !pDocument->IsInsertingFromOtherDoc()) { sc::StartListeningContext aCxt(*pDocument); @@ -493,7 +496,7 @@ void ScColumn::BroadcastNewCell( SCROW nRow ) // we call StartListeningFromClip and BroadcastFromClip. // If we insert into the Clipboard/andoDoc, we do not use a Broadcast. // After Import we call CalcAfterLoad and in there Listening. - if (pDocument->IsClipOrUndo() || pDocument->IsInsertingFromOtherDoc() || pDocument->IsCalcingAfterLoad()) + if (GetDoc()->IsClipOrUndo() || GetDoc()->IsInsertingFromOtherDoc() || GetDoc()->IsCalcingAfterLoad()) return; Broadcast(nRow); @@ -517,6 +520,7 @@ bool ScColumn::UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, const sc:: ScRefCellValue aCell = GetCellValue( itr2, nOffset ); ScAddress aPos(nCol, nRow, nTab); + ScDocument* pDocument = GetDoc(); const SfxItemSet* pCondSet = nullptr; ScConditionalFormatList* pCFList = pDocument->GetCondFormList(nTab); if (pCFList) @@ -709,7 +713,7 @@ void ScColumn::DeleteCells( sc::SingleColumnSpanSet& rDeleted ) { // Determine which cells to delete based on the deletion flags. - DeleteAreaHandler aFunc(*pDocument, nDelFlag, *this); + DeleteAreaHandler aFunc(*GetDoc(), nDelFlag, *this); sc::CellStoreType::iterator itPos = maCells.position(rBlockPos.miCellPos, nRow1).first; sc::ProcessBlock(itPos, maCells, aFunc, nRow1, nRow2); aFunc.endFormulas(); // Have the formula cells stop listening. @@ -842,7 +846,7 @@ class CopyCellsFromClipHandler aArr.AddSingleReference(aRef); mrDestCol.SetFormulaCell( - maDestBlockPos, nDestRow, new ScFormulaCell(&mrDestCol.GetDoc(), aDestPos, aArr)); + maDestBlockPos, nDestRow, new ScFormulaCell(mrDestCol.GetDoc(), aDestPos, aArr)); } void duplicateNotes(SCROW nStartRow, size_t nDataSize, bool bCloneCaption ) @@ -998,7 +1002,7 @@ public: { mrDestCol.SetFormulaCell( maDestBlockPos, nSrcRow + mnRowOffset, - new ScFormulaCell(rSrcCell, mrDestCol.GetDoc(), aDestPos)); + new ScFormulaCell(rSrcCell, *mrDestCol.GetDoc(), aDestPos)); } } else if (bNumeric || bDateTime || bString) @@ -1016,7 +1020,7 @@ public: insertRefCell(nSrcRow, nSrcRow + mnRowOffset); else { - ScFormulaCell* pErrCell = new ScFormulaCell(&mrDestCol.GetDoc(), aDestPos); + ScFormulaCell* pErrCell = new ScFormulaCell(mrDestCol.GetDoc(), aDestPos); pErrCell->SetErrCode(nErr); mrDestCol.SetFormulaCell( maDestBlockPos, nSrcRow + mnRowOffset, pErrCell); @@ -1051,7 +1055,7 @@ public: else if (rSrcCell.IsMultilineResult()) { // Clone as an edit text object. - ScFieldEditEngine& rEngine = mrDestCol.GetDoc().GetEditEngine(); + ScFieldEditEngine& rEngine = mrDestCol.GetDoc()->GetEditEngine(); rEngine.SetText(aStr.getString()); mrDestCol.SetEditText(maDestBlockPos, nSrcRow + mnRowOffset, rEngine.CreateTextObject()); } @@ -1132,6 +1136,7 @@ void ScColumn::CopyFromClip( if ((rCxt.getInsertFlag() & InsertDeleteFlags::CONTENTS) == InsertDeleteFlags::NONE) return; + ScDocument* pDocument = GetDoc(); if (rCxt.isAsLink() && rCxt.getInsertFlag() == InsertDeleteFlags::ALL) { // We also reference empty cells for "ALL" @@ -1166,7 +1171,7 @@ void ScColumn::CopyFromClip( // Compare the ScDocumentPool* to determine if we are copying within the // same document. If not, re-intern shared strings. - svl::SharedStringPool* pSharedStringPool = (rColumn.pDocument->GetPool() != pDocument->GetPool()) ? + svl::SharedStringPool* pSharedStringPool = (rColumn.GetDoc()->GetPool() != pDocument->GetPool()) ? &pDocument->GetSharedStringPool() : nullptr; // nRow1 to nRow2 is for destination (this) column. Subtract nDy to get the source range. @@ -1265,7 +1270,7 @@ class MixDataHandler { ScAddress aPos(mrDestColumn.GetCol(), nDestRow, mrDestColumn.GetTab()); - ScFormulaCell* pFC = new ScFormulaCell(&mrDestColumn.GetDoc(), aPos); + ScFormulaCell* pFC = new ScFormulaCell(mrDestColumn.GetDoc(), aPos); pFC->SetErrCode(FormulaError::NoValue); miNewCellsPos = maNewCells.set(miNewCellsPos, nDestRow-mnRowOffset, pFC); @@ -1332,7 +1337,7 @@ public: miNewCellsPos = maNewCells.set( miNewCellsPos, nRow-mnRowOffset, new ScFormulaCell( - &mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()), aArr)); + mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()), aArr)); } break; case sc::element_type_string: @@ -1389,7 +1394,7 @@ public: miNewCellsPos = maNewCells.set( miNewCellsPos, nRow-mnRowOffset, new ScFormulaCell( - &mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()), aArr)); + mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()), aArr)); } break; case sc::element_type_formula: @@ -1419,7 +1424,7 @@ public: miNewCellsPos = maNewCells.set( miNewCellsPos, nRow-mnRowOffset, new ScFormulaCell( - &mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()), aArr)); + mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()), aArr)); } break; case sc::element_type_string: @@ -1429,7 +1434,7 @@ public: // Destination cell is not a number. Just take the source cell. ScAddress aDestPos(mrDestColumn.GetCol(), nRow, mrDestColumn.GetTab()); miNewCellsPos = maNewCells.set( - miNewCellsPos, nRow-mnRowOffset, new ScFormulaCell(*p, mrDestColumn.GetDoc(), aDestPos)); + miNewCellsPos, nRow-mnRowOffset, new ScFormulaCell(*p, *mrDestColumn.GetDoc(), aDestPos)); } break; default: @@ -1498,7 +1503,7 @@ public: miNewCellsPos = maNewCells.set( miNewCellsPos, nDestRow-mnRowOffset, new ScFormulaCell( - &mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nDestRow, mrDestColumn.GetTab()), aArr)); + mrDestColumn.GetDoc(), ScAddress(mrDestColumn.GetCol(), nDestRow, mrDestColumn.GetTab()), aArr)); } break; default: @@ -1620,7 +1625,7 @@ void ScColumn::MixData( ScAttrIterator* ScColumn::CreateAttrIterator( SCROW nStartRow, SCROW nEndRow ) const { - return new ScAttrIterator( pAttrArray, nStartRow, nEndRow, pDocument->GetDefPattern() ); + return new ScAttrIterator( pAttrArray, nStartRow, nEndRow, GetDoc()->GetDefPattern() ); } namespace { @@ -1671,7 +1676,7 @@ namespace { void applyTextNumFormat( ScColumn& rCol, SCROW nRow, SvNumberFormatter* pFormatter ) { sal_uInt32 nFormat = pFormatter->GetStandardFormat(SvNumFormatType::TEXT); - ScPatternAttr aNewAttrs(rCol.GetDoc().GetPool()); + ScPatternAttr aNewAttrs(rCol.GetDoc()->GetPool()); SfxItemSet& rSet = aNewAttrs.GetItemSet(); rSet.Put(SfxUInt32Item(ATTR_VALUE_FORMAT, nFormat)); rCol.ApplyPattern(nRow, aNewAttrs); @@ -1698,16 +1703,16 @@ bool ScColumn::ParseString( sal_uInt32 nOldIndex = 0; sal_Unicode cFirstChar; if (!aParam.mpNumFormatter) - aParam.mpNumFormatter = pDocument->GetFormatTable(); + aParam.mpNumFormatter = GetDoc()->GetFormatTable(); - nIndex = nOldIndex = GetNumberFormat( pDocument->GetNonThreadedContext(), nRow ); + nIndex = nOldIndex = GetNumberFormat( GetDoc()->GetNonThreadedContext(), nRow ); if ( rString.getLength() > 1 && aParam.mpNumFormatter->GetType(nIndex) != SvNumFormatType::TEXT ) cFirstChar = rString[0]; else cFirstChar = 0; // Text - svl::SharedStringPool& rPool = pDocument->GetSharedStringPool(); + svl::SharedStringPool& rPool = GetDoc()->GetSharedStringPool(); if ( cFirstChar == '=' ) { @@ -1724,7 +1729,7 @@ bool ScColumn::ParseString( else // = Formula rCell.set( new ScFormulaCell( - pDocument, ScAddress(nCol, nRow, nTabP), rString, + GetDoc(), ScAddress(nCol, nRow, nTabP), rString, formula::FormulaGrammar::mergeToGrammar(formula::FormulaGrammar::GRAM_DEFAULT, eConv), ScMatrixMode::NONE)); } @@ -1870,7 +1875,7 @@ bool ScColumn::SetString( SCROW nRow, SCTAB nTabP, const OUString& rString, void ScColumn::SetEditText( SCROW nRow, EditTextObject* pEditText ) { - pEditText->NormalizeString(pDocument->GetSharedStringPool()); + pEditText->NormalizeString(GetDoc()->GetSharedStringPool()); sc::CellStoreType::iterator it = GetPositionToInsert(nRow); maCells.set(it, nRow, pEditText); maCellTextAttrs.set(nRow, sc::CellTextAttr()); @@ -1881,7 +1886,7 @@ void ScColumn::SetEditText( SCROW nRow, EditTextObject* pEditText ) void ScColumn::SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, EditTextObject* pEditText ) { - pEditText->NormalizeString(pDocument->GetSharedStringPool()); + pEditText->NormalizeString(GetDoc()->GetSharedStringPool()); rBlockPos.miCellPos = GetPositionToInsert(rBlockPos.miCellPos, nRow); rBlockPos.miCellPos = maCells.set(rBlockPos.miCellPos, nRow, pEditText); rBlockPos.miCellTextAttrPos = maCellTextAttrs.set( @@ -1894,7 +1899,7 @@ void ScColumn::SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, Edit void ScColumn::SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const EditTextObject& rEditText ) { - if (pDocument->GetEditPool() == rEditText.GetPool()) + if (GetDoc()->GetEditPool() == rEditText.GetPool()) { SetEditText(rBlockPos, nRow, rEditText.Clone()); return; @@ -1903,14 +1908,14 @@ void ScColumn::SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, cons // rats, yet another "spool" // Sadly there is no other way to change the Pool than to // "spool" the Object through a corresponding Engine - EditEngine& rEngine = pDocument->GetEditEngine(); + EditEngine& rEngine = GetDoc()->GetEditEngine(); rEngine.SetText(rEditText); SetEditText(rBlockPos, nRow, rEngine.CreateTextObject()); } void ScColumn::SetEditText( SCROW nRow, const EditTextObject& rEditText, const SfxItemPool* pEditPool ) { - if (pEditPool && pDocument->GetEditPool() == pEditPool) + if (pEditPool && GetDoc()->GetEditPool() == pEditPool) { SetEditText(nRow, rEditText.Clone()); return; @@ -1919,7 +1924,7 @@ void ScColumn::SetEditText( SCROW nRow, const EditTextObject& rEditText, const S // rats, yet another "spool" // Sadly there is no other way to change the Pool than to // "spool" the Object through a corresponding Engine - EditEngine& rEngine = pDocument->GetEditEngine(); + EditEngine& rEngine = GetDoc()->GetEditEngine(); rEngine.SetText(rEditText); SetEditText(nRow, rEngine.CreateTextObject()); } @@ -1929,8 +1934,8 @@ void ScColumn::SetFormula( SCROW nRow, const ScTokenArray& rArray, formula::Form ScAddress aPos(nCol, nRow, nTab); sc::CellStoreType::iterator it = GetPositionToInsert(nRow); - ScFormulaCell* pCell = new ScFormulaCell(pDocument, aPos, rArray, eGram); - sal_uInt32 nCellFormat = GetNumberFormat(pDocument->GetNonThreadedContext(), nRow); + ScFormulaCell* pCell = new ScFormulaCell(GetDoc(), aPos, rArray, eGram); + sal_uInt32 nCellFormat = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nRow); if( (nCellFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0) pCell->SetNeedNumberFormat(true); it = maCells.set(it, nRow, pCell); @@ -1946,8 +1951,8 @@ void ScColumn::SetFormula( SCROW nRow, const OUString& rFormula, formula::Formul ScAddress aPos(nCol, nRow, nTab); sc::CellStoreType::iterator it = GetPositionToInsert(nRow); - ScFormulaCell* pCell = new ScFormulaCell(pDocument, aPos, rFormula, eGram); - sal_uInt32 nCellFormat = GetNumberFormat(pDocument->GetNonThreadedContext(), nRow); + ScFormulaCell* pCell = new ScFormulaCell(GetDoc(), aPos, rFormula, eGram); + sal_uInt32 nCellFormat = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nRow); if( (nCellFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0) pCell->SetNeedNumberFormat(true); it = maCells.set(it, nRow, pCell); @@ -1962,7 +1967,7 @@ ScFormulaCell* ScColumn::SetFormulaCell( SCROW nRow, ScFormulaCell* pCell, sc::StartListeningType eListenType ) { sc::CellStoreType::iterator it = GetPositionToInsert(nRow); - sal_uInt32 nCellFormat = GetNumberFormat(pDocument->GetNonThreadedContext(), nRow); + sal_uInt32 nCellFormat = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nRow); if( (nCellFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0) pCell->SetNeedNumberFormat(true); it = maCells.set(it, nRow, pCell); @@ -1979,7 +1984,7 @@ void ScColumn::SetFormulaCell( sc::StartListeningType eListenType ) { rBlockPos.miCellPos = GetPositionToInsert(rBlockPos.miCellPos, nRow); - sal_uInt32 nCellFormat = GetNumberFormat(pDocument->GetNonThreadedContext(), nRow); + sal_uInt32 nCellFormat = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nRow); if( (nCellFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0) pCell->SetNeedNumberFormat(true); rBlockPos.miCellPos = maCells.set(rBlockPos.miCellPos, nRow, pCell); @@ -2005,12 +2010,12 @@ bool ScColumn::SetFormulaCells( SCROW nRow, std::vector<ScFormulaCell*>& rCells // Detach all formula cells that will be overwritten. DetachFormulaCells(aPos, rCells.size()); - if (!pDocument->IsClipOrUndo()) + if (!GetDoc()->IsClipOrUndo()) { for (size_t i = 0, n = rCells.size(); i < n; ++i) { SCROW nThisRow = nRow + i; - sal_uInt32 nFmt = GetNumberFormat(pDocument->GetNonThreadedContext(), nThisRow); + sal_uInt32 nFmt = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nThisRow); if ((nFmt % SV_COUNTRY_LANGUAGE_OFFSET) == 0) rCells[i]->SetNeedNumberFormat(true); } @@ -2061,10 +2066,10 @@ class FilterEntriesHandler void processCell(SCROW nRow, ScRefCellValue& rCell) { - SvNumberFormatter* pFormatter = mrColumn.GetDoc().GetFormatTable(); + SvNumberFormatter* pFormatter = mrColumn.GetDoc()->GetFormatTable(); OUString aStr; - sal_uInt32 nFormat = mrColumn.GetNumberFormat(mrColumn.GetDoc().GetNonThreadedContext(), nRow); - ScCellFormat::GetInputString(rCell, nFormat, aStr, *pFormatter, &mrColumn.GetDoc()); + sal_uLong nFormat = mrColumn.GetNumberFormat(mrColumn.GetDoc()->GetNonThreadedContext(), nRow); + ScCellFormat::GetInputString(rCell, nFormat, aStr, *pFormatter, mrColumn.GetDoc()); if (rCell.hasString()) { @@ -2314,8 +2319,8 @@ bool ScColumn::GetDataEntries( // going upward and downward directions in parallel. The start position // cell must be skipped. - StrCellIterator aItrUp(maCells, nStartRow, pDocument); - StrCellIterator aItrDown(maCells, nStartRow+1, pDocument); + StrCellIterator aItrUp(maCells, nStartRow, GetDoc()); + StrCellIterator aItrDown(maCells, nStartRow+1, GetDoc()); bool bMoveUp = aItrUp.valid(); if (!bMoveUp) @@ -2431,7 +2436,7 @@ void ScColumn::RemoveProtected( SCROW nStartRow, SCROW nEndRow ) FormulaToValueHandler aFunc; sc::CellStoreType::const_iterator itPos = maCells.begin(); - ScAttrIterator aAttrIter( pAttrArray, nStartRow, nEndRow, pDocument->GetDefPattern() ); + ScAttrIterator aAttrIter( pAttrArray, nStartRow, nEndRow, GetDoc()->GetDefPattern() ); SCROW nTop = -1; SCROW nBottom = -1; const ScPatternAttr* pPattern = aAttrIter.Next( nTop, nBottom ); @@ -2457,7 +2462,7 @@ void ScColumn::SetError( SCROW nRow, const FormulaError nError) if (!ValidRow(nRow)) return; - ScFormulaCell* pCell = new ScFormulaCell(pDocument, ScAddress(nCol, nRow, nTab)); + ScFormulaCell* pCell = new ScFormulaCell(GetDoc(), ScAddress(nCol, nRow, nTab)); pCell->SetErrCode(nError); sc::CellStoreType::iterator it = GetPositionToInsert(nRow); @@ -2474,7 +2479,7 @@ void ScColumn::SetRawString( SCROW nRow, const OUString& rStr ) if (!ValidRow(nRow)) return; - svl::SharedString aSS = pDocument->GetSharedStringPool().intern(rStr); + svl::SharedString aSS = GetDoc()->GetSharedStringPool().intern(rStr); if (!aSS.getData()) return; @@ -2551,9 +2556,9 @@ void ScColumn::GetString( SCROW nRow, OUString& rString ) const if (aCell.meType == CELLTYPE_FORMULA) aCell.mpFormula->MaybeInterpret(); - sal_uInt32 nFormat = GetNumberFormat(pDocument->GetNonThreadedContext(), nRow); + sal_uInt32 nFormat = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nRow); Color* pColor = nullptr; - ScCellFormat::GetString(aCell, nFormat, rString, &pColor, *(pDocument->GetFormatTable()), pDocument); + ScCellFormat::GetString(aCell, nFormat, rString, &pColor, *(GetDoc()->GetFormatTable()), GetDoc()); } double* ScColumn::GetValueCell( SCROW nRow ) @@ -2572,8 +2577,8 @@ double* ScColumn::GetValueCell( SCROW nRow ) void ScColumn::GetInputString( SCROW nRow, OUString& rString ) const { ScRefCellValue aCell = GetCellValue(nRow); - sal_uInt32 nFormat = GetNumberFormat(pDocument->GetNonThreadedContext(), nRow); - ScCellFormat::GetInputString(aCell, nFormat, rString, *(pDocument->GetFormatTable()), pDocument); + sal_uLong nFormat = GetNumberFormat(GetDoc()->GetNonThreadedContext(), nRow); + ScCellFormat::GetInputString(aCell, nFormat, rString, *(GetDoc()->GetFormatTable()), GetDoc()); } double ScColumn::GetValue( SCROW nRow ) const @@ -2781,7 +2786,7 @@ class MaxStringLenHandler Color* pColor; OUString aString; sal_uInt32 nFormat = static_cast<const SfxUInt32Item&>(mrColumn.GetAttr(nRow, ATTR_VALUE_FORMAT)).GetValue(); - ScCellFormat::GetString(rCell, nFormat, aString, &pColor, *mpFormatter, &mrColumn.GetDoc()); + ScCellFormat::GetString(rCell, nFormat, aString, &pColor, *mpFormatter, mrColumn.GetDoc()); sal_Int32 nLen = 0; if (mbOctetEncoding) { @@ -2808,7 +2813,7 @@ public: MaxStringLenHandler(const ScColumn& rColumn, rtl_TextEncoding eCharSet) : mnMaxLen(0), mrColumn(rColumn), - mpFormatter(rColumn.GetDoc().GetFormatTable()), + mpFormatter(rColumn.GetDoc()->GetFormatTable()), meCharSet(eCharSet), mbOctetEncoding(rtl_isOctetTextEncoding(eCharSet)) { @@ -2891,7 +2896,7 @@ class MaxNumStringLenHandler if (nFormat % SV_COUNTRY_LANGUAGE_OFFSET) { aSep = mpFormatter->GetFormatDecimalSep(nFormat); - ScCellFormat::GetInputString(rCell, nFormat, aString, *mpFormatter, &mrColumn.GetDoc()); + ScCellFormat::GetInputString(rCell, nFormat, aString, *mpFormatter, mrColumn.GetDoc()); const SvNumberformat* pEntry = mpFormatter->GetEntry(nFormat); if (pEntry) { @@ -2975,7 +2980,7 @@ class MaxNumStringLenHandler public: MaxNumStringLenHandler(const ScColumn& rColumn, sal_uInt16 nMaxGeneralPrecision) : - mrColumn(rColumn), mpFormatter(rColumn.GetDoc().GetFormatTable()), + mrColumn(rColumn), mpFormatter(rColumn.GetDoc()->GetFormatTable()), mnMaxLen(0), mnPrecision(0), mnMaxGeneralPrecision(nMaxGeneralPrecision), mbHaveSigned(false) { @@ -3007,7 +3012,7 @@ public: sal_Int32 ScColumn::GetMaxNumberStringLen( sal_uInt16& nPrecision, SCROW nRowStart, SCROW nRowEnd ) const { - sal_uInt16 nMaxGeneralPrecision = pDocument->GetDocOptions().GetStdPrecision(); + sal_uInt16 nMaxGeneralPrecision = GetDoc()->GetDocOptions().GetStdPrecision(); MaxNumStringLenHandler aFunc(*this, nMaxGeneralPrecision); sc::ParseFormulaNumeric(maCells.begin(), maCells, nRowStart, nRowEnd, aFunc); nPrecision = aFunc.getPrecision(); diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index e18c61a76d17..4454e8c11fc9 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -112,6 +112,7 @@ void ScColumn::DeleteBeforeCopyFromClip( return; // Translate the clip column spans into the destination column, and repeat as needed. + ScDocument* pDocument = GetDoc(); std::vector<sc::RowSpan> aDestSpans; SCROW nDestOffset = aRange.mnRow1 - nClipRow1; bool bContinue = true; @@ -197,6 +198,7 @@ void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, if (!pBlockPos) return; + ScDocument* pDocument = GetDoc(); bool bSameDocPool = (rCxt.getClipDoc()->GetPool() == pDocument->GetPool()); ScCellValue& rSrcCell = rCxt.getSingleCell(nColOffset); @@ -549,6 +551,7 @@ void ScColumn::CloneFormulaCell( "ScColumn::CloneFormulaCell - cloning array/matrix with not exactly one column or row as single cell"); } + ScDocument* pDocument = GetDoc(); std::vector<ScFormulaCell*> aFormulas; std::vector<sc::RowSpan>::const_iterator itSpan = rRanges.begin(), itSpanEnd = rRanges.end(); for (; itSpan != itSpanEnd; ++itSpan) @@ -947,7 +950,7 @@ void ScColumn::PreprocessRangeNameUpdate( aOps.insert(ocBad); aOps.insert(ocColRowName); aOps.insert(ocName); - RecompileByOpcodeHandler aFunc(pDocument, aOps, rEndListenCxt, rCompileCxt); + RecompileByOpcodeHandler aFunc(GetDoc(), aOps, rEndListenCxt, rCompileCxt); std::for_each(aGroups.begin(), aGroups.end(), aFunc); } @@ -962,7 +965,7 @@ void ScColumn::PreprocessDBDataUpdate( aOps.insert(ocColRowName); aOps.insert(ocDBArea); aOps.insert(ocTableRef); - RecompileByOpcodeHandler aFunc(pDocument, aOps, rEndListenCxt, rCompileCxt); + RecompileByOpcodeHandler aFunc(GetDoc(), aOps, rEndListenCxt, rCompileCxt); std::for_each(aGroups.begin(), aGroups.end(), aFunc); } @@ -972,7 +975,7 @@ void ScColumn::CompileHybridFormula( // Collect all formula groups. std::vector<sc::FormulaGroupEntry> aGroups = GetFormulaGroupEntries(); - CompileHybridFormulaHandler aFunc(pDocument, rStartListenCxt, rCompileCxt); + CompileHybridFormulaHandler aFunc(GetDoc(), rStartListenCxt, rCompileCxt); std::for_each(aGroups.begin(), aGroups.end(), aFunc); } @@ -1013,15 +1016,15 @@ private: maPos.SetRow(nRow); const ScCondFormatItem& rItem = pPat->GetItem(ATTR_CONDITIONAL); const std::vector<sal_uInt32>& rData = rItem.GetCondFormatData(); - pCondSet = mrCol.GetDoc().GetCondResult(rCell, maPos, *mpCFList, rData); + pCondSet = mrCol.GetDoc()->GetCondResult(rCell, maPos, *mpCFList, rData); } OUString aStr; Color* pColor; sal_uInt32 nFormat = pPat->GetNumberFormat(mpFormatter, pCondSet); - ScCellFormat::GetString(rCell, nFormat, aStr, &pColor, *mpFormatter, &mrCol.GetDoc()); + ScCellFormat::GetString(rCell, nFormat, aStr, &pColor, *mpFormatter, mrCol.GetDoc()); - rAttr.mnScriptType = mrCol.GetDoc().GetStringScriptType(aStr); + rAttr.mnScriptType = mrCol.GetDoc()->GetStringScriptType(aStr); mbUpdated = true; } @@ -1030,8 +1033,8 @@ public: mrCol(rCol), mrTextAttrs(rCol.GetCellAttrStore()), miPosAttr(mrTextAttrs.begin()), - mpCFList(rCol.GetDoc().GetCondFormList(rCol.GetTab())), - mpFormatter(rCol.GetDoc().GetFormatTable()), + mpCFList(rCol.GetDoc()->GetCondFormList(rCol.GetTab())), + mpFormatter(rCol.GetDoc()->GetFormatTable()), maPos(rCol.GetCol(), 0, rCol.GetTab()), mbUpdated(false) {} @@ -1744,6 +1747,7 @@ void ScColumn::RestoreFromCache(SvStream& rStrm) sal_uInt64 nLastRow = 0; rStrm.ReadUInt64(nLastRow); sal_uInt64 nReadRow = 0; + ScDocument* pDocument = GetDoc(); while (nReadRow < nLastRow) { sal_uInt64 nStartRow = 0; diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index c240368d4aa4..cd8c247ee3d5 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -942,9 +942,9 @@ bool ScCellIterator::getCurrent() SCROW nLastRow; // Skip all filtered or hidden rows, depending on mSubTotalFlags if ( ( ( mnSubTotalFlags & SubtotalFlags::IgnoreFiltered ) && - pCol->GetDoc().RowFiltered(maCurPos.Row(), maCurPos.Tab(), nullptr, &nLastRow) ) || + pCol->GetDoc()->RowFiltered(maCurPos.Row(), maCurPos.Tab(), nullptr, &nLastRow) ) || ( ( mnSubTotalFlags & SubtotalFlags::IgnoreHidden ) && - pCol->GetDoc().RowHidden(maCurPos.Row(), maCurPos.Tab(), nullptr, &nLastRow) ) ) + pCol->GetDoc()->RowHidden(maCurPos.Row(), maCurPos.Tab(), nullptr, &nLastRow) ) ) { setPos(nLastRow+1); continue; diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index 666ade0ed1b3..14e93b45d1c8 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -152,7 +152,7 @@ void setSuffixCell( ScColumn& rColumn, SCROW nRow, sal_Int32 nValue, sal_uInt16 nDigits, const OUString& rSuffix, CellType eCellType, bool bIsOrdinalSuffix ) { - ScDocument& rDoc = rColumn.GetDoc(); + ScDocument& rDoc = *rColumn.GetDoc(); OUString aValue = lcl_ValueString(nValue, nDigits); if (!bIsOrdinalSuffix) { diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx index 4c85fdbd7acc..bceb7286dbb7 100644 --- a/sc/source/ui/docshell/externalrefmgr.cxx +++ b/sc/source/ui/docshell/externalrefmgr.cxx @@ -2839,7 +2839,7 @@ public: case CELLTYPE_STRING: case CELLTYPE_EDIT: { - OUString aStr = aCell.getString(&mpCurCol->GetDoc()); + OUString aStr = aCell.getString(mpCurCol->GetDoc()); svl::SharedString aSS = mrStrPool.intern(aStr); pTok.reset(new formula::FormulaStringToken(aSS)); } @@ -2876,7 +2876,7 @@ public: if (pTok) { // Cache this cell. - mpRefTab->setCell(mpCurCol->GetCol(), nRow, pTok, mpCurCol->GetNumberFormat(mpCurCol->GetDoc().GetNonThreadedContext(), nRow)); + mpRefTab->setCell(mpCurCol->GetCol(), nRow, pTok, mpCurCol->GetNumberFormat(mpCurCol->GetDoc()->GetNonThreadedContext(), nRow)); mpRefTab->setCachedCell(mpCurCol->GetCol(), nRow); } } |