[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