diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2019-06-12 15:54:20 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-06-13 10:26:02 +0200 |
commit | 60f2fa03cfd2fee08430a4d502c9d47ed2a89db7 (patch) | |
tree | 99ddd6cf288457bd482b73bb8626cdcf4ab0cf41 | |
parent | 7adfdb8132b0a944cb67d4e465cb61e487b59a67 (diff) |
tdf#95173 vcl: fix partially drawn progressbar widget
Commit e6c2951f1957224aa0e7dc97b33b0450c41f92f7 (delegate RenderContext,
invalidate - prgsbar, scrbar, 2015-04-29) switched
ProgressBar::SetValue() from direct partial paint to invalidate + full
paint. This means that ProgressBar::ImplDrawProgress() has to paint the
whole progressbar, not only just the delta between the old and the new
value.
Remove the not needed mnPreviousPercent member and just paint from 0 to
the percent value, like we did before the above commit, that does the
needed full paint.
(cherry picked from commit 6fd3eb533998c8f63430a43767b2a52aa5e71e3f)
Change-Id: Id45ee918248b5fa6647bd766a49b707da1e5846f
Reviewed-on: https://gerrit.libreoffice.org/73933
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r-- | include/vcl/prgsbar.hxx | 3 | ||||
-rw-r--r-- | vcl/source/control/prgsbar.cxx | 9 |
2 files changed, 4 insertions, 8 deletions
diff --git a/include/vcl/prgsbar.hxx b/include/vcl/prgsbar.hxx index f28c82e78e75..773379e4822c 100644 --- a/include/vcl/prgsbar.hxx +++ b/include/vcl/prgsbar.hxx @@ -54,13 +54,12 @@ private: long mnPrgsHeight; sal_uInt16 mnPercent; sal_uInt16 mnPercentCount; - sal_uInt16 mnPreviousPercent; bool mbCalcNew; using Window::ImplInit; SAL_DLLPRIVATE void ImplInit(); SAL_DLLPRIVATE void ImplInitSettings( bool bFont, bool bForeground, bool bBackground ); - SAL_DLLPRIVATE void ImplDrawProgress(vcl::RenderContext& rRenderContext, sal_uInt16 nOldPerc, sal_uInt16 nNewPerc); + SAL_DLLPRIVATE void ImplDrawProgress(vcl::RenderContext& rRenderContext, sal_uInt16 nNewPerc); public: ProgressBar( vcl::Window* pParent, WinBits nWinBits ); diff --git a/vcl/source/control/prgsbar.cxx b/vcl/source/control/prgsbar.cxx index 61ba2b67a1fe..376ed91cfcdd 100644 --- a/vcl/source/control/prgsbar.cxx +++ b/vcl/source/control/prgsbar.cxx @@ -29,7 +29,6 @@ void ProgressBar::ImplInit() { mnPercent = 0; - mnPreviousPercent = 0; mbCalcNew = true; ImplInitSettings( true, true, true ); @@ -112,7 +111,7 @@ void ProgressBar::ImplInitSettings( bool bFont, } } -void ProgressBar::ImplDrawProgress(vcl::RenderContext& rRenderContext, sal_uInt16 nOldPerc, sal_uInt16 nNewPerc) +void ProgressBar::ImplDrawProgress(vcl::RenderContext& rRenderContext, sal_uInt16 nNewPerc) { if (mbCalcNew) { @@ -141,13 +140,13 @@ void ProgressBar::ImplDrawProgress(vcl::RenderContext& rRenderContext, sal_uInt1 } ::DrawProgress(this, rRenderContext, maPos, PROGRESSBAR_OFFSET, mnPrgsWidth, mnPrgsHeight, - nOldPerc * 100, nNewPerc * 100, mnPercentCount, + /*nPercent1=*/0, nNewPerc * 100, mnPercentCount, tools::Rectangle(Point(), GetSizePixel())); } void ProgressBar::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*rRect*/) { - ImplDrawProgress(rRenderContext, mnPreviousPercent, mnPercent); + ImplDrawProgress(rRenderContext, mnPercent); } void ProgressBar::Resize() @@ -165,7 +164,6 @@ void ProgressBar::SetValue( sal_uInt16 nNewPercent ) { mbCalcNew = true; mnPercent = nNewPercent; - mnPreviousPercent = 0; if ( IsReallyVisible() ) { Invalidate(); @@ -174,7 +172,6 @@ void ProgressBar::SetValue( sal_uInt16 nNewPercent ) } else if ( mnPercent != nNewPercent ) { - mnPreviousPercent = mnPercent; mnPercent = nNewPercent; Invalidate(); } |