Review Request 128201: Improved StatusbarProgressDidget that looks better on OS X and Linux

René J.V. Bertin rjvbertin at gmail.com
Sun Jun 19 10:01:37 UTC 2016



> On June 19, 2016, 10:39 a.m., David Faure wrote:
> > shell/progresswidget/statusbarprogresswidget.cpp, line 96
> > <https://git.reviewboard.kde.org/r/128201/diff/2/?file=469229#file469229line96>
> >
> >     Wouldn't this logic work everywhere, not just on mac?
> 
> René J.V. Bertin wrote:
>     Yes, if there were only the progressbar, and that bar didn't need to show the percentage text badge (see the QtCurve and Oxygen screenshots). From what I understand that is the reason why the original code determines `maximumHeight` from the rendered text label. I have assumed that the original authors verified whether `m_pProgressBar->*height()` returns a value that takes that text label into account. I can check whether that's the case: if it doesn't then the icon and button will become very small indeed for Breeze.
>     
>     Adding a pair of debug calls:
>     
>     ```
>         m_pProgressBar = new QProgressBar( this );
>         m_pProgressBar->installEventFilter( this );
>         m_pProgressBar->setMinimumWidth( w );
>         qDebug() << "maximumHeight=" << maximumHeight << "progBar height=" << m_pProgressBar->height()
>             << "sizeHint:" << m_pProgressBar->sizeHint() << "minSizeHint:" << m_pProgressBar->minimumSizeHint();
>         m_pProgressBar->setMinimumHeight( maximumHeight );
>         m_pProgressBar->setAttribute( Qt::WA_LayoutUsesWidgetRect, true );
>         qDebug() << "new? progBar height=" << m_pProgressBar->height()
>             << "sizeHint:" << m_pProgressBar->sizeHint() << "minSizeHint:" << m_pProgressBar->minimumSizeHint();
>     ```
>     
>     I get (on Linux, we already know what to do on OS X):
>     
>     ```
>     QtCurve:
>     maximumHeight= 18 progBar height= 30 sizeHint: QSize(91, 24) minSizeHint: QSize(91, 18)
>     new? progBar height= 30 sizeHint: QSize(91, 24) minSizeHint: QSize(91, 18)
>     Breeze:
>     maximumHeight= 18 progBar height= 30 sizeHint: QSize(91, 24) minSizeHint: QSize(91, 18)
>     new? progBar height= 30 sizeHint: QSize(91, 24) minSizeHint: QSize(91, 18)
>     Oxygen:
>     maximumHeight= 18 progBar height= 30 sizeHint: QSize(91, 24) minSizeHint: QSize(91, 18)
>     new? progBar height= 30 sizeHint: QSize(91, 24) minSizeHint: QSize(91, 18)
>     ```
>     
>     So using `sizeHint().height()` will give an apparently style-independent height indication, but the wrong one. On Linux we'd have to use `minimumSizeHint().height()` to preserve the current visual aspect or else accept that the widget will be about 50% taller (for a 10pt font; I use Segoe UI Semibold as my standard font). I think that becomes a bit too much (see the screenshot).
>     
>     We could initialise `maximumHeight = m_pProgressBar->minimumSizeHint().height()`, but we'd still have to keep the adjusting code for `macintosh`, so I'm not sure about such a change.
>     
>     Also, the `m_pProgressBar->setMinimumHeight(maximumHeight)` call is apparently redundant for the 3 styles I've tested, but can we be sure that this will always be the case, for all styles and/or stylesheets?

Re: "a bit too much": with Oxygen and QtCurve the effect shown in the latest screenshot is even more in your face: the widget takes on an aspect like on OS X, = a very fat progress bar that draws more attention to itself than I find justified. With the macintosh style we just have to accept that (though I should check if there is no "mini" variant!) but I don't think we should with styles where there's choice.


- René J.V.


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/128201/#review96706
-----------------------------------------------------------


On June 18, 2016, 7:47 p.m., René J.V. Bertin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/128201/
> -----------------------------------------------------------
> 
> (Updated June 18, 2016, 7:47 p.m.)
> 
> 
> Review request for KDevelop and David Faure.
> 
> 
> Repository: kdevplatform
> 
> 
> Description
> -------
> 
> I came across this old bit of code, judging from the use of the deprecated `Q_OS_MAC` token. 
> Some quick testing suggests that using `WA_LayoutUsesWidgetRect` achieves what I think is the intended effect without platform-specific code. (That platform test ought really check for using the `macintosh` widget style btw, rather than "are we running on OS X").
> 
> 
> Diffs
> -----
> 
>   shell/progresswidget/statusbarprogresswidget.cpp 1a32ea8 
> 
> Diff: https://git.reviewboard.kde.org/r/128201/diff/
> 
> 
> Testing
> -------
> 
> For now only on OS X, with the native theme as well as QtCurve, Breeze and Oxygen.
> 
> 
> File Attachments
> ----------------
> 
> OS X/Mac native *without* the patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/16/1498e8dc-4541-473b-b6db-2c2ae138cbc3__Screen_Shot_2016-06-17_at_00.17.17.png
> stock widget under Linux (same layout using Breeze)
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/17/dd352994-1753-4b33-a0d2-cd2a3132df48__progress-stock.png
> OS X/native with the new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/18/8e6a0761-b760-4f41-be67-7f9ba7318349__Screen_Shot_2016-06-18_at_19.21.52.png
> OS X using QtCurve with the new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/18/3535be4c-3034-493d-88c0-61ab9a13844d__Screen_Shot_2016-06-18_at_19.24.46.png
> Linux, Breeze, new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/18/359d5f57-bdaa-45a7-a0b0-6acb5609459f__Screen_Shot_2016-06-18_at_19.16.19.png
> Linux, QtCurve, new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/18/f5eb0902-884a-47e5-bf84-a3581a21bece__Screen_Shot_2016-06-18_at_19.14.17.png
> Linux, Oxygen, new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/18/536d4f09-8409-4eb4-80ca-27d3f744d6a0__Screen_Shot_2016-06-18_at_19.16.56.png
> Linux, Breeze + Breeze icons, new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/19/ee2d687e-69ea-493f-9ae4-87d90be614e2__progress-patched-breeze.png
> Linux, QtCurve + Breeze icons, new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/19/7e3cfc5c-cb80-491c-b4d2-4d6f9c839a48__progress-patched-qtcurve.png
> Linux,Oxygen+Breeze icons, new patch
>   https://git.reviewboard.kde.org/media/uploaded/files/2016/06/19/0b10d97d-3ba6-4d05-a663-3a03e29bc1c9__progress-patched-oxygen.png
> 
> 
> Thanks,
> 
> René J.V. Bertin
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20160619/071b533f/attachment.html>


More information about the KDevelop-devel mailing list