summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2015-05-08 13:17:45 +0300
committerTor Lillqvist <tml@collabora.com>2015-05-08 21:31:16 +0300
commit3842967e5276aabdf28e8eb047803389a41793c7 (patch)
tree814f7b826f294b3cfe40d33c15d3f20670c23e42
parent66f866d2f5f65a677f3721b7d6c482bf724c97a7 (diff)
Ensure progress bar LibreOfficeKit callbacks don't repeat the same percentage
Gets rid of superfluous sequential callbacks with the same percentage when loading large documents. This reverts commit cec72eff99d1d683f2236c8a86a2814b34ad861e. Change-Id: I70f43f7e3a650c76cbcbbc60ebb2d47efaca06a5
-rw-r--r--framework/inc/helper/statusindicator.hxx2
-rw-r--r--framework/source/helper/statusindicator.cxx7
2 files changed, 8 insertions, 1 deletions
diff --git a/framework/inc/helper/statusindicator.hxx b/framework/inc/helper/statusindicator.hxx
index d52216eccde5..6043cf2a2071 100644
--- a/framework/inc/helper/statusindicator.hxx
+++ b/framework/inc/helper/statusindicator.hxx
@@ -69,6 +69,8 @@ class StatusIndicator : public ::cppu::WeakImplHelper1< css::task::XStatusIndic
css::uno::WeakReference< css::task::XStatusIndicatorFactory > m_xFactory;
sal_Int32 m_nRange;
+ // We want the callback percentages to increase monotonically
+ int m_nLastCallbackPercent;
// c++ interface
public:
diff --git a/framework/source/helper/statusindicator.cxx b/framework/source/helper/statusindicator.cxx
index 88c247e9a312..6c78d0a87a9f 100644
--- a/framework/source/helper/statusindicator.cxx
+++ b/framework/source/helper/statusindicator.cxx
@@ -38,6 +38,7 @@ void SAL_CALL StatusIndicator::start(const OUString& sText ,
if (comphelper::LibreOfficeKit::isActive())
{
m_nRange = nRange;
+ m_nLastCallbackPercent = -1;
comphelper::LibreOfficeKit::statusIndicatorStart();
return;
@@ -102,7 +103,11 @@ void SAL_CALL StatusIndicator::setValue(sal_Int32 nValue)
if (comphelper::LibreOfficeKit::isActive())
{
int nPercent = (100*nValue)/m_nRange;
- comphelper::LibreOfficeKit::statusIndicatorSetValue(nPercent);
+ if (nPercent != m_nLastCallbackPercent)
+ {
+ comphelper::LibreOfficeKit::statusIndicatorSetValue(nPercent);
+ m_nLastCallbackPercent = nPercent;
+ }
return;
}