[Libreoffice-commits] core.git: 2 commits - sc/inc sc/source

Markus Mohrhard markus.mohrhard at googlemail.com
Tue Jun 27 19:58:50 UTC 2017


 sc/inc/rangeutl.hxx                |    8 ++++++++
 sc/inc/refupdatecontext.hxx        |    4 ++--
 sc/source/core/data/colorscale.cxx |    1 +
 sc/source/core/tool/rangeutl.cxx   |   17 +++++++++++++++++
 4 files changed, 28 insertions(+), 2 deletions(-)

New commits:
commit 3d6b2fb2cdfbe6c06af8138b443f44f1140e8af6
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Jun 27 01:45:46 2017 +0200

    add way to handle update refs for addresses, related tdf#107289
    
    Change-Id: I97d1724d7aa1652619edda1cbe6a4ae4db277563
    Reviewed-on: https://gerrit.libreoffice.org/39316
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/inc/rangeutl.hxx b/sc/inc/rangeutl.hxx
index 92ceaa99d84d..47cace7db2ad 100644
--- a/sc/inc/rangeutl.hxx
+++ b/sc/inc/rangeutl.hxx
@@ -269,6 +269,14 @@ public:
     bool WasDBName() const { return !bFirstPass; }
 };
 
+struct SC_DLLPUBLIC ScRangeUpdater
+{
+    ScRangeUpdater() = delete;
+
+    static void UpdateInsertTab(ScAddress& rAddr, const sc::RefUpdateInsertTabContext& rCxt);
+    static void UpdateDeleteTab(ScAddress& rAddr, const sc::RefUpdateDeleteTabContext& rCxt);
+};
+
 #endif // INCLUDED_SC_INC_RANGEUTL_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/refupdatecontext.hxx b/sc/inc/refupdatecontext.hxx
index 2c47563dd34c..167eb0bec2d3 100644
--- a/sc/inc/refupdatecontext.hxx
+++ b/sc/inc/refupdatecontext.hxx
@@ -107,7 +107,7 @@ struct RefUpdateResult
     RefUpdateResult(const RefUpdateResult& r);
 };
 
-struct RefUpdateInsertTabContext
+struct SC_DLLPUBLIC RefUpdateInsertTabContext
 {
     ScDocument& mrDoc;
     SCTAB mnInsertPos;
@@ -117,7 +117,7 @@ struct RefUpdateInsertTabContext
     RefUpdateInsertTabContext(ScDocument& rDoc, SCTAB nInsertPos, SCTAB nSheets);
 };
 
-struct RefUpdateDeleteTabContext
+struct SC_DLLPUBLIC RefUpdateDeleteTabContext
 {
     ScDocument& mrDoc;
     SCTAB mnDeletePos;
diff --git a/sc/source/core/tool/rangeutl.cxx b/sc/source/core/tool/rangeutl.cxx
index 0d8ee77dd82d..872435378244 100644
--- a/sc/source/core/tool/rangeutl.cxx
+++ b/sc/source/core/tool/rangeutl.cxx
@@ -29,6 +29,7 @@
 #include "convuno.hxx"
 #include "externalrefmgr.hxx"
 #include "compiler.hxx"
+#include "refupdatecontext.hxx"
 
 using ::formula::FormulaGrammar;
 using namespace ::com::sun::star;
@@ -1014,4 +1015,20 @@ bool ScAreaNameIterator::Next( OUString& rName, ScRange& rRange )
     }
 }
 
+void ScRangeUpdater::UpdateInsertTab(ScAddress& rAddr, const sc::RefUpdateInsertTabContext& rCxt)
+{
+    if (rCxt.mnInsertPos <= rAddr.Tab())
+    {
+        rAddr.IncTab(rCxt.mnSheets);
+    }
+}
+
+void ScRangeUpdater::UpdateDeleteTab(ScAddress& rAddr, const sc::RefUpdateDeleteTabContext& rCxt)
+{
+    if (rCxt.mnDeletePos <= rAddr.Tab())
+    {
+        rAddr.IncTab(-rCxt.mnSheets);
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 87fa01674b1418c060b20a7f5af1d0d6eebe99cd
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Jun 27 00:36:32 2017 +0200

    clear the lists with listened cells after we stop listening
    
    Change-Id: I4bc21ff9085c0033f3ee16b7e22a73091d57c7a9
    Reviewed-on: https://gerrit.libreoffice.org/39315
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 916143664b81..25a029024e28 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -127,6 +127,7 @@ void ScFormulaListener::stopListening()
         return;
 
     std::for_each(maCells.begin(), maCells.end(), StopListeningCell(mpDoc, this));
+    maCells.clear();
 }
 
 ScFormulaListener::~ScFormulaListener()


More information about the Libreoffice-commits mailing list