rjvbb updated this revision to Diff 19073.
rjvbb added a comment.

  Following Breeze's example, we can defer the creation of a timer for the 
busy/indeterminate state to when we encounter one, i.e. when 
`Style::drawControl()` is called with `CE_ProgressBarContents`.
  
  Determining if the timer can be killed is a bit trickier of course (without 
changing considerably more), so I could do this:
  
  1- start the timer if still necessary
  
    A- when an animated PB is shown for the 1st time (= as usual), but not when 
a non animated PB is shown.
    B- when an indeterminate PB is *drawn* for the 1st time
  
  2- return to the idle frequency when there are no more visible animated PBs 
(= current proposed change)
  3- kill the timer when all PBs are closed, destroyed or hidden
  
  Slight complication: Style::drawControl() is const, so one also has to move 
`m_timer`, `m_progressBarAnimateTimer` and `m_progressBarAnimateFps` to a 
private class, which in addition would have to have a `q` pointer and a 
startParentTimer() "proxy" so we can call Style::startTimer() from a const 
member function.
  
  For now I've only implemented this for Qt5, let me know if this is too much 
(complicated, or of a hack).

CHANGES SINCE LAST UPDATE
  https://phabricator.kde.org/D7640?vs=19044&id=19073

REVISION DETAIL
  https://phabricator.kde.org/D7640

AFFECTED FILES
  qt4/style/qtcurve.cpp
  qt4/style/qtcurve.h
  qt5/style/qtcurve.cpp
  qt5/style/qtcurve.h
  qt5/style/qtcurve_api.cpp
  qt5/style/qtcurve_p.h

To: rjvbb, yuyichao, #plasma
Cc: davidedmundson, plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, 
jensreuterberg, abetts, sebas, apol, mart, lukas

Reply via email to