Fixed rendering of progress bar hole

Fixed positioning when text is hidden
wilder-pre-rebase
Hugo Pereira Da Costa 12 years ago
parent 61ffdcffdf
commit d653992108
  1. 52
      kstyle/breezestyle.cpp

@ -553,20 +553,33 @@ namespace Breeze
QRect Style::progressBarGrooveRect( const QStyleOption* option, const QWidget* ) const
{
// cast option
const QStyleOptionProgressBar* progressBarOption = qstyleoption_cast<const QStyleOptionProgressBar*>( option );
if( !progressBarOption ) return option->rect;
// get direction
const State& flags( option->state );
const bool horizontal( flags&State_Horizontal );
QRect rect( option->rect );
if( horizontal ) rect.setTop( rect.height() - Metrics::ProgressBar_Thickness );
else {
if( progressBarOption->textVisible )
{
if( horizontal ) rect.setTop( rect.height() - Metrics::ProgressBar_Thickness );
else {
const bool reverseLayout( option->direction == Qt::RightToLeft );
if( reverseLayout ) rect.setLeft( rect.width() - Metrics::ProgressBar_Thickness );
else rect.setWidth( Metrics::ProgressBar_Thickness );
const bool reverseLayout( option->direction == Qt::RightToLeft );
if( reverseLayout ) rect.setLeft( rect.width() - Metrics::ProgressBar_Thickness );
else rect.setWidth( Metrics::ProgressBar_Thickness );
}
}
} else {
// center everything, if text is hidden
if( horizontal ) return centerRect( rect, rect.width(), Metrics::ProgressBar_Thickness );
else return centerRect( rect, Metrics::ProgressBar_Thickness, rect.height() );
}
return rect;
}
@ -580,6 +593,10 @@ namespace Breeze
Q_UNUSED( widget );
// cast option
const QStyleOptionProgressBar* progressBarOption = qstyleoption_cast<const QStyleOptionProgressBar*>( option );
if( !( progressBarOption && progressBarOption->textVisible ) ) return QRect();
// get direction
const State& flags( option->state );
const bool horizontal( flags&State_Horizontal );
@ -742,6 +759,14 @@ namespace Breeze
//______________________________________________________________
QSize Style::progressBarSizeFromContents( const QStyleOption* option, const QSize& contentsSize, const QWidget* ) const
{
// cast option
const QStyleOptionProgressBar* progressBarOption = qstyleoption_cast<const QStyleOptionProgressBar*>( option );
if( !progressBarOption ) return contentsSize;
const bool textVisible( progressBarOption->textVisible );
// make local copy
QSize size( contentsSize );
// get direction
@ -751,12 +776,14 @@ namespace Breeze
if( horizontal ) {
size.setWidth( qMax( size.width(), (int) Metrics::ProgressBar_Thickness ) );
size.rheight() += Metrics::ProgressBar_Thickness + Metrics::ProgressBar_BoxTextSpace;
if( textVisible ) size.rheight() += Metrics::ProgressBar_Thickness + Metrics::ProgressBar_BoxTextSpace;
else size.setHeight( Metrics::ProgressBar_Thickness );
} else {
size.setHeight( qMax( size.height(), (int) Metrics::ProgressBar_Thickness ) );
size.rwidth() += Metrics::ProgressBar_Thickness + Metrics::ProgressBar_BoxTextSpace;
if( textVisible ) size.rwidth() += Metrics::ProgressBar_Thickness + Metrics::ProgressBar_BoxTextSpace;
else size.setWidth( Metrics::ProgressBar_Thickness );
}
@ -1063,7 +1090,7 @@ namespace Breeze
{
const QPalette& palette( option->palette );
const QColor color( _helper->alphaColor( palette.color( QPalette::WindowText ), 0.3 ) );
renderScrollBarHole( painter, option->rect, color );
renderProgressBarHole( painter, option->rect, color );
return true;
}
@ -1095,12 +1122,9 @@ namespace Breeze
painter->rotate( -90.0 );
}
/*
Figure out the geometry of the indicator.
This is copied from drawProgressBarContentsControl
*/
const QRect textRect( horizontal? r : QRect( 0, 0, r.height(), r.width() ) );
// define text rect
const QRect textRect( horizontal? r : QRect( 0, 0, r.height(), r.width() ) );
Qt::Alignment hAlign( ( progressBarOption->textAlignment == Qt::AlignLeft ) ? Qt::AlignHCenter : progressBarOption->textAlignment );
drawItemText( painter, textRect, Qt::AlignVCenter | hAlign, palette, enabled, progressBarOption->text, QPalette::WindowText );

Loading…
Cancel
Save