diff options
-rw-r--r-- | offapi/com/sun/star/sheet/NameToken.idl | 2 | ||||
-rw-r--r-- | sc/source/core/tool/token.cxx | 13 | ||||
-rw-r--r-- | sc/source/ui/unoobj/tokenuno.cxx | 3 |
3 files changed, 7 insertions, 11 deletions
diff --git a/offapi/com/sun/star/sheet/NameToken.idl b/offapi/com/sun/star/sheet/NameToken.idl index 04f6ed27b9fa..9b66038ba78c 100644 --- a/offapi/com/sun/star/sheet/NameToken.idl +++ b/offapi/com/sun/star/sheet/NameToken.idl @@ -20,7 +20,7 @@ struct NameToken { long Index; - boolean Global; + long Sheet; }; diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index fd16ada1fa99..11005eabe596 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -1219,14 +1219,11 @@ bool ScTokenArray::AddFormulaToken( rToken.Data >>= aTokenData; if ( eOpCode == ocName ) { - /* TODO: new token type with sheet number */ - if (aTokenData.Global) - AddRangeName(aTokenData.Index, -1); - else - bError = true; - /* FIXME: resolve the non-global case to the - * current position's sheet as it implicitly was - * before, currently this is broken. */ + SAL_WARN_IF( aTokenData.Sheet < -1 || std::numeric_limits<sal_Int16>::max() < aTokenData.Sheet, + "sc.core", + "ScTokenArray::AddFormulaToken - NameToken.Sheet out of limits: " << aTokenData.Sheet); + sal_Int16 nSheet = static_cast<sal_Int16>(aTokenData.Sheet); + AddRangeName(aTokenData.Index, nSheet); } else if (eOpCode == ocDBArea) AddDBRange(aTokenData.Index); diff --git a/sc/source/ui/unoobj/tokenuno.cxx b/sc/source/ui/unoobj/tokenuno.cxx index b1800ced542e..b8b80de5007d 100644 --- a/sc/source/ui/unoobj/tokenuno.cxx +++ b/sc/source/ui/unoobj/tokenuno.cxx @@ -422,8 +422,7 @@ bool ScTokenConversion::ConvertToTokenSequence( const ScDocument& rDoc, { sheet::NameToken aNameToken; aNameToken.Index = static_cast<sal_Int32>( rToken.GetIndex() ); - /* FIXME: we need a new token with sheet number */ - aNameToken.Global = (rToken.GetSheet() < 0); + aNameToken.Sheet = rToken.GetSheet(); rAPI.Data <<= aNameToken; } break; |