sc/inc/conditio.hxx | 1 + sc/source/core/data/conditio.cxx | 5 +++++ sc/source/core/data/documen7.cxx | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-)
New commits: commit 1f3ec2e3cb52c0e10c36ac0b113c37462147f3b1 Author: Eike Rathke <er...@redhat.com> Date: Thu Jul 9 21:05:20 2015 +0200 execute the terrible bottle neck loop only if there are conditional formats Change-Id: Ic8bd65a728289c9fa1a0721b0ecbd9b4a48672ca (cherry picked from commit 2aefb89b299e7ebdca5bb35aa4e9059e59805715) Reviewed-on: https://gerrit.libreoffice.org/16902 Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx index fc039c0..4a813c9 100644 --- a/sc/inc/conditio.hxx +++ b/sc/inc/conditio.hxx @@ -495,6 +495,7 @@ public: const_iterator end() const; size_t size() const; + bool empty() const; void erase(sal_uLong nIndex); diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 3036999..d4408d9 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -2321,6 +2321,11 @@ size_t ScConditionalFormatList::size() const return maConditionalFormats.size(); } +bool ScConditionalFormatList::empty() const +{ + return maConditionalFormats.empty(); +} + void ScConditionalFormatList::erase( sal_uLong nIndex ) { for( iterator itr = begin(); itr != end(); ++itr ) diff --git a/sc/source/core/data/documen7.cxx b/sc/source/core/data/documen7.cxx index b67cce9..795e93c 100644 --- a/sc/source/core/data/documen7.cxx +++ b/sc/source/core/data/documen7.cxx @@ -141,8 +141,11 @@ void ScDocument::BroadcastCells( const ScRange& rRange, sal_uLong nHint, bool bB continue; ScConditionalFormatList* pCondFormList = GetCondFormList(nTab); - if (pCondFormList) + if (pCondFormList && !pCondFormList->empty()) { + /* TODO: looping over all possible cells is a terrible bottle neck, + * for each cell looping over all conditional formats even worse, + * this certainly needs a better method. */ ScAddress aAddress( 0, 0, nTab); for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits