summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2018-03-20 14:26:35 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-03-29 12:55:10 +0200
commit084e02969dad50e6a5e636bb6391f52113dec096 (patch)
tree0806d698e23666e57089cc703b8ef2b012fdb407
parentdbe02ba3775832ff35d512ad53b1e70028fb2659 (diff)
Resolves: tdf#116468 do not check array/matrix context for reportdesign
It doesn't have any, and worse, there's no currently active OpCode symbol map that could be used to create strings from tokens. Regression from commit bf1ffc64128f5b96d7c2fcc7adc81cbc25e232fd Date: Sun Jul 16 15:18:09 2017 +0200 FormulaDlg_Impl::UpdateValues: evaluate in force-array context if present Change-Id: I77c2035fdd0926f67fcc85e7090f30485b4e312c (cherry picked from commit 3a3a61bce913b564c7b7a98c56b55cbc11ea273a) Reviewed-on: https://gerrit.libreoffice.org/51643 Reviewed-by: Lionel Elie Mamane <lionel@mamane.lu> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--formula/source/ui/dlg/formula.cxx29
1 files changed, 19 insertions, 10 deletions
diff --git a/formula/source/ui/dlg/formula.cxx b/formula/source/ui/dlg/formula.cxx
index c98167ea54bc..d6e39b62341b 100644
--- a/formula/source/ui/dlg/formula.cxx
+++ b/formula/source/ui/dlg/formula.cxx
@@ -570,19 +570,28 @@ void FormulaDlg_Impl::UpdateValues( bool bForceRecalcStruct )
// Only necessary if it's not a matrix formula anyway.
if (!m_pBtnMatrix->IsChecked())
{
- const sal_Int32 nPos = m_aFuncSel.Min();
- assert( 0 <= nPos && nPos < m_pHelper->getCurrentFormula().getLength());
- OUStringBuffer aBuf;
+ /* TODO: we probably don't even need to ask a compiler instance if
+ * m_pBtnMatrix is hidden. */
std::unique_ptr<FormulaCompiler> pCompiler( m_pHelper->createCompiler( *m_pTokenArray.get()));
- const FormulaToken* pToken = nullptr;
- for (pToken = m_pTokenArrayIterator->First(); pToken; pToken = m_pTokenArrayIterator->Next())
+ // In the case of the reportdesign dialog there is no currently active
+ // OpCode symbol mapping that could be used to create strings from
+ // tokens, it's all dreaded API mapping. However, in that case there's
+ // no array/matrix support anyway.
+ if (pCompiler->GetCurrentOpCodeMap().get())
{
- pCompiler->CreateStringFromToken( aBuf, pToken);
- if (nPos < aBuf.getLength())
- break;
+ const sal_Int32 nPos = m_aFuncSel.Min();
+ assert( 0 <= nPos && nPos < m_pHelper->getCurrentFormula().getLength());
+ OUStringBuffer aBuf;
+ const FormulaToken* pToken = nullptr;
+ for (pToken = m_pTokenArrayIterator->First(); pToken; pToken = m_pTokenArrayIterator->Next())
+ {
+ pCompiler->CreateStringFromToken( aBuf, pToken);
+ if (nPos < aBuf.getLength())
+ break;
+ }
+ if (pToken && nPos < aBuf.getLength())
+ bForceArray = pToken->IsInForceArray();
}
- if (pToken && nPos < aBuf.getLength())
- bForceArray = pToken->IsInForceArray();
}
OUString aStrResult;