diff options
author | Katarina Behrens <bubli@bubli.org> | 2015-03-27 16:03:11 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-04-04 10:43:22 +0200 |
commit | 2e2a4ff6468e31374b63fd5165eb019343bc73d0 (patch) | |
tree | 9d69ab6f9476d3a0561d38792666d2de932c22b8 | |
parent | f359428a12ef083f057bc1559a8dbda633dfa9e0 (diff) |
tdf#89597: Resize formula buffers after adding a dummy sheet
for pivot table cache records.
Regression from commit d17a83fa549f828f29e6939. On loading pivot
table cache records, a dummy sheet is created to store them. Formula
buffers are now vectors, not maps and need to be resized in such case.
+ add a const version of getDocImport method, need to use it in
the new getAllSheetCount method
Change-Id: I5d57a822da5fe5a97029b83406e8ff877a5dbd7c
Reviewed-on: https://gerrit.libreoffice.org/15030
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | sc/source/filter/inc/workbookhelper.hxx | 1 | ||||
-rw-r--r-- | sc/source/filter/inc/worksheetbuffer.hxx | 3 | ||||
-rw-r--r-- | sc/source/filter/oox/pivotcachefragment.cxx | 6 | ||||
-rw-r--r-- | sc/source/filter/oox/workbookhelper.cxx | 5 | ||||
-rw-r--r-- | sc/source/filter/oox/worksheetbuffer.cxx | 6 |
5 files changed, 21 insertions, 0 deletions
diff --git a/sc/source/filter/inc/workbookhelper.hxx b/sc/source/filter/inc/workbookhelper.hxx index 90fdca461685..e2d26a502a00 100644 --- a/sc/source/filter/inc/workbookhelper.hxx +++ b/sc/source/filter/inc/workbookhelper.hxx @@ -149,6 +149,7 @@ public: const ScDocument& getScDocument() const; ScDocumentImport& getDocImport(); + const ScDocumentImport& getDocImport() const; ScEditEngineDefaulter& getEditEngine() const; /** Returns a reference to the source/target spreadsheet document model. */ diff --git a/sc/source/filter/inc/worksheetbuffer.hxx b/sc/source/filter/inc/worksheetbuffer.hxx index 69fafa118af1..35e9c66eae23 100644 --- a/sc/source/filter/inc/worksheetbuffer.hxx +++ b/sc/source/filter/inc/worksheetbuffer.hxx @@ -24,6 +24,7 @@ #include <oox/helper/refmap.hxx> #include <oox/helper/refvector.hxx> #include "workbookhelper.hxx" +#include "documentimport.hxx" namespace com { namespace sun { namespace star { namespace i18n { class XCharacterClassification; } @@ -65,6 +66,8 @@ public: /** Returns the number of original sheets contained in the workbook. */ sal_Int32 getWorksheetCount() const; + /** Returns the number of all sheets, workbook + dummy ones (pivot table cache records ) */ + sal_Int32 getAllSheetCount() const; /** Returns the OOXML relation identifier of the specified worksheet. */ OUString getWorksheetRelId( sal_Int32 nWorksheet ) const; diff --git a/sc/source/filter/oox/pivotcachefragment.cxx b/sc/source/filter/oox/pivotcachefragment.cxx index d6ee51d1c70a..e90656ccb9ab 100644 --- a/sc/source/filter/oox/pivotcachefragment.cxx +++ b/sc/source/filter/oox/pivotcachefragment.cxx @@ -23,7 +23,9 @@ #include <oox/helper/attributelist.hxx> #include "addressconverter.hxx" #include "biffinputstream.hxx" +#include "formulabuffer.hxx" #include "pivotcachebuffer.hxx" +#include "worksheetbuffer.hxx" namespace oox { namespace xls { @@ -210,8 +212,12 @@ PivotCacheRecordsFragment::PivotCacheRecordsFragment( const WorksheetHelper& rHe mnRowIdx( 0 ), mbInRecord( false ) { + sal_Int32 nSheetCount = rPivotCache.getWorksheets().getAllSheetCount(); + // prepare sheet: insert column header names into top row rPivotCache.writeSourceHeaderCells( *this ); + // resize formula buffers since we've added a new dummy sheet + rHelper.getFormulaBuffer().SetSheetCount( nSheetCount ); } ContextHandlerRef PivotCacheRecordsFragment::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx index 0dc581bc45e7..d76c2a636261 100644 --- a/sc/source/filter/oox/workbookhelper.cxx +++ b/sc/source/filter/oox/workbookhelper.cxx @@ -794,6 +794,11 @@ ScDocumentImport& WorkbookHelper::getDocImport() return mrBookGlob.getDocImport(); } +const ScDocumentImport& WorkbookHelper::getDocImport() const +{ + return mrBookGlob.getDocImport(); +} + ScEditEngineDefaulter& WorkbookHelper::getEditEngine() const { return mrBookGlob.getEditEngine(); diff --git a/sc/source/filter/oox/worksheetbuffer.cxx b/sc/source/filter/oox/worksheetbuffer.cxx index 85385aaf35f2..4bac44fc1c1f 100644 --- a/sc/source/filter/oox/worksheetbuffer.cxx +++ b/sc/source/filter/oox/worksheetbuffer.cxx @@ -84,6 +84,12 @@ sal_Int32 WorksheetBuffer::getWorksheetCount() const return static_cast< sal_Int32 >( maSheetInfos.size() ); } +sal_Int32 WorksheetBuffer::getAllSheetCount() const +{ + const ScDocumentImport& rDoc = getDocImport(); + return rDoc.getSheetCount(); +} + OUString WorksheetBuffer::getWorksheetRelId( sal_Int32 nWorksheet ) const { const SheetInfo* pSheetInfo = maSheetInfos.get( nWorksheet ).get(); |