[Libreoffice-commits] core.git: sc/inc sc/source
Kohei Yoshida
kohei.yoshida at collabora.com
Sat Nov 5 17:05:34 UTC 2016
sc/inc/formulalogger.hxx | 19 +++++++++++++------
sc/source/core/data/grouptokenconverter.cxx | 6 +++---
sc/source/core/tool/formulalogger.cxx | 27 +++++++++++++++++++--------
3 files changed, 35 insertions(+), 17 deletions(-)
New commits:
commit da534e882225b0533471ffd9c4f7031122378969
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Sat Nov 5 10:23:52 2016 -0400
Pass the current cell position to conditionally display sheet name.
Change-Id: I28dba90500af7c11db569fded28ce571a1ec9089
diff --git a/sc/inc/formulalogger.hxx b/sc/inc/formulalogger.hxx
index 1df49cc..5d5502f 100644
--- a/sc/inc/formulalogger.hxx
+++ b/sc/inc/formulalogger.hxx
@@ -85,19 +85,24 @@ public:
* Add to the log a vector reference information for a single
* reference.
*/
- void addRefMessage( const ScAddress& rPos, size_t nLen, const formula::VectorRefArray& rArray );
+ void addRefMessage(
+ const ScAddress& rCellPos, const ScAddress& rRefPos, size_t nLen,
+ const formula::VectorRefArray& rArray );
/**
* Add to the log a vector reference information for a range
* reference.
*/
void addRefMessage(
- const ScAddress& rPos, size_t nLen, const std::vector<formula::VectorRefArray>& rArrays );
+ const ScAddress& rCellPos, const ScAddress& rRefPos, size_t nLen,
+ const std::vector<formula::VectorRefArray>& rArrays );
/**
* Add to the log a single cell reference information.
*/
- void addRefMessage( const ScAddress& rPos, const formula::FormulaToken& rToken );
+ void addRefMessage(
+ const ScAddress& rCellPos, const ScAddress& rRefPos,
+ const formula::FormulaToken& rToken );
/**
* Call this when the group calculation has finished successfullly.
@@ -134,20 +139,22 @@ public:
void addMessage( const OUString& /*rMsg*/ ) { (void) this; /* loplugin:staticmethods */ }
void addRefMessage(
- const ScAddress& /*rPos*/, size_t /*nLen*/,
+ const ScAddress& /*rCellPos*/, const ScAddress& /*rRefPos*/, size_t /*nLen*/,
const formula::VectorRefArray& /*rArray*/ )
{
(void) this; /* loplugin:staticmethods */
}
void addRefMessage(
- const ScAddress& /*rPos*/, size_t /*nLen*/,
+ const ScAddress& /*rCellPos*/, const ScAddress& /*rRefPos*/, size_t /*nLen*/,
const std::vector<formula::VectorRefArray>& /*rArrays*/ )
{
(void) this; /* loplugin:staticmethods */
}
- void addRefMessage( const ScAddress& /*rPos*/, const formula::FormulaToken& /*rToken*/ )
+ void addRefMessage(
+ const ScAddress& /*rCellPos*/, const ScAddress& /*rRefPos*/,
+ const formula::FormulaToken& /*rToken*/ )
{
(void) this; /* loplugin:staticmethods */
}
diff --git a/sc/source/core/data/grouptokenconverter.cxx b/sc/source/core/data/grouptokenconverter.cxx
index e4eecfb..977dc4f 100644
--- a/sc/source/core/data/grouptokenconverter.cxx
+++ b/sc/source/core/data/grouptokenconverter.cxx
@@ -138,7 +138,7 @@ bool ScGroupTokenConverter::convert( ScTokenArray& rCode, sc::FormulaLogger::Gro
formula::SingleVectorRefToken aTok(aArray, nLen, nTrimLen);
mrGroupTokens.AddToken(aTok);
- rScope.addRefMessage(aRefPos, nLen, aArray);
+ rScope.addRefMessage(mrPos, aRefPos, nLen, aArray);
if (nTrimLen && !mxFormulaGroupContext)
{
@@ -160,7 +160,7 @@ bool ScGroupTokenConverter::convert( ScTokenArray& rCode, sc::FormulaLogger::Gro
return false;
mrGroupTokens.AddToken(*pNewToken);
- rScope.addRefMessage(aRefPos, *pNewToken);
+ rScope.addRefMessage(mrPos, aRefPos, *pNewToken);
}
}
break;
@@ -224,7 +224,7 @@ bool ScGroupTokenConverter::convert( ScTokenArray& rCode, sc::FormulaLogger::Gro
formula::DoubleVectorRefToken aTok(aArrays, nRequestedLength, nArrayLength, nRefRowSize, bAbsFirst, bAbsLast);
mrGroupTokens.AddToken(aTok);
- rScope.addRefMessage(aRefPos, nRequestedLength, aArrays);
+ rScope.addRefMessage(mrPos, aRefPos, nRequestedLength, aArrays);
if (nArrayLength && !aArrays.empty() && !mxFormulaGroupContext)
{
diff --git a/sc/source/core/tool/formulalogger.cxx b/sc/source/core/tool/formulalogger.cxx
index a5337bf..a9480aa 100644
--- a/sc/source/core/tool/formulalogger.cxx
+++ b/sc/source/core/tool/formulalogger.cxx
@@ -40,6 +40,14 @@ std::unique_ptr<osl::File> initFile()
return o3tl::make_unique<osl::File>(aPath);
}
+ScRefFlags getRefFlags( const ScAddress& rCellPos, const ScAddress& rRefPos )
+{
+ ScRefFlags eFlags = ScRefFlags::VALID;
+ if (rCellPos.Tab() != rRefPos.Tab())
+ eFlags |= ScRefFlags::TAB_3D;
+ return eFlags;
+}
+
}
FormulaLogger& FormulaLogger::get()
@@ -117,13 +125,14 @@ void FormulaLogger::GroupScope::addMessage( const OUString& rMsg )
}
void FormulaLogger::GroupScope::addRefMessage(
- const ScAddress& rPos, size_t nLen, const formula::VectorRefArray& rArray )
+ const ScAddress& rCellPos, const ScAddress& rRefPos, size_t nLen,
+ const formula::VectorRefArray& rArray )
{
OUStringBuffer aBuf;
- ScRange aRefRange(rPos);
+ ScRange aRefRange(rRefPos);
aRefRange.aEnd.IncRow(nLen-1);
- OUString aRangeStr = aRefRange.Format(ScRefFlags::VALID, &mpImpl->mrDoc);
+ OUString aRangeStr = aRefRange.Format(getRefFlags(rCellPos, rRefPos), &mpImpl->mrDoc);
aBuf.append(aRangeStr);
aBuf.appendAscii(": ");
@@ -158,21 +167,23 @@ void FormulaLogger::GroupScope::addRefMessage(
}
void FormulaLogger::GroupScope::addRefMessage(
- const ScAddress& rPos, size_t nLen, const std::vector<formula::VectorRefArray>& rArrays )
+ const ScAddress& rCellPos, const ScAddress& rRefPos, size_t nLen,
+ const std::vector<formula::VectorRefArray>& rArrays )
{
- ScAddress aPos(rPos); // copy
+ ScAddress aPos(rRefPos); // copy
for (const formula::VectorRefArray& rArray : rArrays)
{
- addRefMessage(aPos, nLen, rArray);
+ addRefMessage(rCellPos, aPos, nLen, rArray);
aPos.IncCol();
}
}
void FormulaLogger::GroupScope::addRefMessage(
- const ScAddress& rPos, const formula::FormulaToken& rToken )
+ const ScAddress& rCellPos, const ScAddress& rRefPos,
+ const formula::FormulaToken& rToken )
{
OUStringBuffer aBuf;
- OUString aPosStr = rPos.Format(ScRefFlags::VALID, &mpImpl->mrDoc);
+ OUString aPosStr = rRefPos.Format(getRefFlags(rCellPos, rRefPos), &mpImpl->mrDoc);
aBuf.append(aPosStr);
aBuf.appendAscii(": ");
More information about the Libreoffice-commits
mailing list