sc/source/filter/inc/defnamesbuffer.hxx | 4 ++-- sc/source/filter/oox/defnamesbuffer.cxx | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-)
New commits: commit ce118a11f14250ffc5fc625ae9a84ad12b28c62b Author: Eike Rathke <er...@redhat.com> Date: Thu Oct 27 12:06:46 2016 +0200 Resolves: tdf#103530 OOXML: pass ExternalLinkInfo compiling named expressions Change-Id: If15aa520b93f30b889e5f950185068ef3bdb9235 (cherry picked from commit e641c1740f36ce11c9f178193f74a53ac7af8465) Reviewed-on: https://gerrit.libreoffice.org/30321 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/sc/source/filter/inc/defnamesbuffer.hxx b/sc/source/filter/inc/defnamesbuffer.hxx index da10246..b7b82a5 100644 --- a/sc/source/filter/inc/defnamesbuffer.hxx +++ b/sc/source/filter/inc/defnamesbuffer.hxx @@ -105,8 +105,8 @@ public: /** Creates a defined name in the Calc document. */ void createNameObject( sal_Int32 nIndex ); /** Converts the formula string or BIFF token array for this defined name. */ - void convertFormula(); - std::unique_ptr<ScTokenArray> getScTokens(); + void convertFormula( const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks ); + std::unique_ptr<ScTokenArray> getScTokens( const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks ); /** Returns true, if this defined name is global in the document. */ inline bool isGlobalName() const { return mnCalcSheet < 0; } /** Returns true, if this defined name is a special builtin name. */ diff --git a/sc/source/filter/oox/defnamesbuffer.cxx b/sc/source/filter/oox/defnamesbuffer.cxx index feb6c2f..9de5851 100644 --- a/sc/source/filter/oox/defnamesbuffer.cxx +++ b/sc/source/filter/oox/defnamesbuffer.cxx @@ -326,11 +326,13 @@ void DefinedName::createNameObject( sal_Int32 nIndex ) mnTokenIndex = nIndex; } -std::unique_ptr<ScTokenArray> DefinedName::getScTokens() +std::unique_ptr<ScTokenArray> DefinedName::getScTokens( + const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks ) { ScTokenArray aTokenArray; ScCompiler aCompiler(&getScDocument(), ScAddress(0, 0, mnCalcSheet)); aCompiler.SetGrammar(formula::FormulaGrammar::GRAM_OOXML); + aCompiler.SetExternalLinks( rExternalLinks); std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(maModel.maFormula)); // Compile the tokens into RPN once to populate information into tokens // where necessary, e.g. for TableRef inner reference. RPN can be discarded @@ -343,7 +345,7 @@ std::unique_ptr<ScTokenArray> DefinedName::getScTokens() return pArray; } -void DefinedName::convertFormula() +void DefinedName::convertFormula( const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks ) { // macro function or vba procedure if(!mpScRangeData) @@ -352,7 +354,7 @@ void DefinedName::convertFormula() // convert and set formula of the defined name if ( getFilterType() == FILTER_OOXML ) { - std::unique_ptr<ScTokenArray> pTokenArray = getScTokens(); + std::unique_ptr<ScTokenArray> pTokenArray = getScTokens( rExternalLinks); mpScRangeData->SetCode( *pTokenArray ); } @@ -450,7 +452,7 @@ void DefinedNamesBuffer::finalizeImport() /* Now convert all name formulas, so that the formula parser can find all names in case of circular dependencies. */ - maDefNames.forEachMem( &DefinedName::convertFormula ); + maDefNames.forEachMem( &DefinedName::convertFormula, getExternalLinks().getLinkInfos()); } DefinedNameRef DefinedNamesBuffer::getByIndex( sal_Int32 nIndex ) const _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits