Commit 102f5c88 authored by Jakob Leben's avatar Jakob Leben

Qt: polish location bar geometry

parent 8fa5fb96
...@@ -467,6 +467,7 @@ LocationBar::LocationBar( PLModel *m ) ...@@ -467,6 +467,7 @@ LocationBar::LocationBar( PLModel *m )
box = new QHBoxLayout; box = new QHBoxLayout;
box->setSpacing( 0 ); box->setSpacing( 0 );
box->setContentsMargins( 0, 0, 0, 0 );
setLayout( box ); setLayout( box );
} }
...@@ -514,6 +515,8 @@ LocationButton::LocationButton( const QString &text, bool bold, bool arrow ) ...@@ -514,6 +515,8 @@ LocationButton::LocationButton( const QString &text, bool bold, bool arrow )
setText( text ); setText( text );
} }
#define PADDING 4
void LocationButton::paintEvent ( QPaintEvent * event ) void LocationButton::paintEvent ( QPaintEvent * event )
{ {
QStyleOptionButton option; QStyleOptionButton option;
...@@ -524,22 +527,31 @@ void LocationButton::paintEvent ( QPaintEvent * event ) ...@@ -524,22 +527,31 @@ void LocationButton::paintEvent ( QPaintEvent * event )
//option.state |= isChecked() ? QStyle::State_On : QStyle::State_Off; //option.state |= isChecked() ? QStyle::State_On : QStyle::State_Off;
//if( isDown() ) option.state |= QStyle::State_Sunken; //if( isDown() ) option.state |= QStyle::State_Sunken;
QPainter p( this ); QPainter p( this );
if( underMouse() ) if( underMouse() )
style()->drawControl( QStyle::CE_PushButtonBevel, &option, &p ); style()->drawControl( QStyle::CE_PushButtonBevel, &option, &p );
if( b_arrow ) option.rect.setLeft( 18 );
else option.rect.setLeft( 6 ); int margin = style()->pixelMetric(QStyle::PM_DefaultFrameWidth,0,this) + PADDING;
p.drawText( option.rect, Qt::AlignVCenter,
fontMetrics().elidedText( text(), Qt::ElideRight, option.rect.width() - 3 ) ); QRect rect = option.rect.adjusted( b_arrow ? 15 + margin : margin, 0, margin * -1, 0 );
p.drawText( rect, Qt::AlignVCenter,
fontMetrics().elidedText( text(), Qt::ElideRight, rect.width() ) );
if( b_arrow ) if( b_arrow )
{ {
option.rect = QRect( 0, 0, 18, height() ); option.rect.setX( margin );
option.rect.setWidth( 8 );
style()->drawPrimitive( QStyle::PE_IndicatorArrowRight, &option, &p ); style()->drawPrimitive( QStyle::PE_IndicatorArrowRight, &option, &p );
} }
} }
QSize LocationButton::sizeHint() const QSize LocationButton::sizeHint() const
{ {
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth,0,this);
QSize s( fontMetrics().boundingRect( text() ).size() ); QSize s( fontMetrics().boundingRect( text() ).size() );
s += QSize( b_arrow ? 24 : 12, 15 ); s.setWidth( s.width() + ( 2 * frameWidth ) + ( 2 * PADDING ) + ( b_arrow ? 15 : 0 ) );
s.setHeight( QPushButton::sizeHint().height() );
return s; return s;
} }
#undef PADDING
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment