sc/inc/column.hxx | 14 ++++++++------ sc/source/core/data/document.cxx | 3 +-- sc/source/core/data/table2.cxx | 7 ++++--- 3 files changed, 13 insertions(+), 11 deletions(-)
New commits: commit 0e6465ecc0b4c607480f798b6f15e4dbbbbebb77 Author: Luboš Luňák <l.lu...@collabora.com> AuthorDate: Mon Mar 7 21:02:11 2022 +0100 Commit: Luboš Luňák <l.lu...@collabora.com> CommitDate: Tue Mar 8 11:27:39 2022 +0100 fix GetAttr() for unallocated columns Change-Id: Id7cbebf68ec3cc54d773bc5745fab192d043f952 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131150 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lu...@collabora.com> diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index 503cbaebddb1..fd4d0fe5dfea 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -129,6 +129,12 @@ public: ScAttrArray& AttrArray() { return *pAttrArray; } const ScAttrArray& AttrArray() const { return *pAttrArray; } + const SfxPoolItem& GetAttr( SCROW nRow, sal_uInt16 nWhich ) const; + template<class T> const T& GetAttr( SCROW nRow, TypedWhichId<T> nWhich ) const + { + return static_cast<const T&>(GetAttr(nRow, sal_uInt16(nWhich))); + } + const ScPatternAttr* GetPattern( SCROW nRow ) const; const ScPatternAttr* GetMostUsedPattern( SCROW nStartRow, SCROW nEndRow ) const; SCROW ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark, ScEditDataArray* pDataArray, bool* const pIsChanged, @@ -497,11 +503,7 @@ public: void PreprocessDBDataUpdate( sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ); - const SfxPoolItem& GetAttr( SCROW nRow, sal_uInt16 nWhich ) const; - template<class T> const T& GetAttr( SCROW nRow, TypedWhichId<T> nWhich ) const - { - return static_cast<const T&>(GetAttr(nRow, sal_uInt16(nWhich))); - } + using ScColumnData::GetAttr; using ScColumnData::GetPattern; using ScColumnData::GetNumberFormat; @@ -914,7 +916,7 @@ inline const ScPatternAttr* ScColumnData::GetPattern( SCROW nRow ) const return pAttrArray->GetPattern( nRow ); } -inline const SfxPoolItem& ScColumn::GetAttr( SCROW nRow, sal_uInt16 nWhich ) const +inline const SfxPoolItem& ScColumnData::GetAttr( SCROW nRow, sal_uInt16 nWhich ) const { return pAttrArray->GetPattern( nRow )->GetItemSet().Get(nWhich); } diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 3ec08575a713..5cb0a435f988 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -4733,8 +4733,7 @@ void ScDocument::ExtendHidden( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2, S const SfxPoolItem* ScDocument::GetAttr( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich ) const { - if ( ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab] && - nCol < maTabs[nTab]->GetAllocatedColumnsCount()) + if ( ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab] ) { const SfxPoolItem* pTemp = maTabs[nTab]->GetAttr( nCol, nRow, nWhich ); if (pTemp) diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index c16bfddecc9d..a4cd147147f7 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -2161,10 +2161,11 @@ void ScTable::ResetChanged( const ScRange& rRange ) const SfxPoolItem* ScTable::GetAttr( SCCOL nCol, SCROW nRow, sal_uInt16 nWhich ) const { - if (ValidColRow(nCol, nRow) && nCol < GetAllocatedColumnsCount()) - return &aCol[nCol].GetAttr( nRow, nWhich ); - else + if (!ValidColRow(nCol, nRow)) return nullptr; + if (nCol < GetAllocatedColumnsCount()) + return &aCol[nCol].GetAttr( nRow, nWhich ); + return &aDefaultColData.GetAttr( nRow, nWhich ); } sal_uInt32 ScTable::GetNumberFormat( const ScInterpreterContext& rContext, const ScAddress& rPos ) const