[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - sc/inc sc/source
LuboÅ¡ LuÅák (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jun 19 09:08:01 UTC 2020
sc/inc/scopetools.hxx | 1 +
sc/source/core/data/table4.cxx | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)
New commits:
commit 15a8357b3faaa360cc162593330e926863d4c51b
Author: Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Wed Jun 17 19:05:59 2020 +0200
Commit: Luboš Luňák <l.lunak at collabora.com>
CommitDate: Fri Jun 19 11:07:30 2020 +0200
delay and batch calls to StartListeningFormulaCells() (tdf#132165)
This is pretty much the same as tdf#133302.
Change-Id: I5325b90601f503e572faefc455a38e0f5b055bbf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96560
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak at collabora.com>
(cherry picked from commit 7c99e23fddf089f2d52028944db8e435fc05088f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96580
diff --git a/sc/inc/scopetools.hxx b/sc/inc/scopetools.hxx
index dd060615db67..eb2941f15777 100644
--- a/sc/inc/scopetools.hxx
+++ b/sc/inc/scopetools.hxx
@@ -82,6 +82,7 @@ class DelayStartListeningFormulaCells
public:
DelayStartListeningFormulaCells(ScColumn& column, bool delay);
DelayStartListeningFormulaCells(ScColumn& column);
+ DelayStartListeningFormulaCells(const DelayStartListeningFormulaCells&) = delete;
~DelayStartListeningFormulaCells();
void set();
};
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index b18752ca3a8a..c8f533c65708 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -45,9 +45,11 @@
#include <conditio.hxx>
#include <editutil.hxx>
#include <listenercontext.hxx>
+#include <scopetools.hxx>
#include <math.h>
#include <memory>
+#include <list>
#define D_MAX_LONG_ double(0x7fffffff)
@@ -592,6 +594,25 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
if (pProgress)
nProgress = pProgress->GetState();
+ // Avoid possible repeated calls to StartListeningFormulaCells() (tdf#132165).
+ std::list< sc::DelayStartListeningFormulaCells > delayStartListening;
+ SCCOL delayStartColumn, delayEndColumn;
+ if(bVertical)
+ {
+ delayStartColumn = std::min( nOStart, nOEnd );
+ delayEndColumn = std::max( nOStart, nOEnd );
+ }
+ else
+ {
+ delayStartColumn = std::min( nIStart, nIEnd );
+ delayEndColumn = std::max( nIStart, nIEnd );
+ }
+ for( SCROW col = delayStartColumn; col <= delayEndColumn; ++col )
+ {
+ if( ScColumn* column = FetchColumn( col ))
+ delayStartListening.emplace_back( *column, true );
+ }
+
// execute
sal_uLong nActFormCnt = 0;
More information about the Libreoffice-commits
mailing list