added Side argument to renderSidePanel

properly deal with right to left layout
wilder-pre-rebase
Hugo Pereira Da Costa 12 years ago
parent 12874e399d
commit c05e190afd
  1. 46
      kstyle/breezehelper.cpp
  2. 2
      kstyle/breezehelper.h
  3. 4
      kstyle/breezestyle.cpp

@ -474,21 +474,51 @@ namespace Breeze
}
//______________________________________________________________________________
void Helper::renderSidePanelFrame( QPainter* painter, const QRect& rect, const QColor& outline ) const
void Helper::renderSidePanelFrame( QPainter* painter, const QRect& rect, const QColor& outline, Side side ) const
{
painter->setRenderHint( QPainter::Antialiasing );
// check color
if( !outline.isValid() ) return;
QRectF frameRect( rect.adjusted( 1, 2, -1, -2 ) );
// adjust rect
QRectF frameRect( rect.adjusted( 1, 1, -1, -1 ) );
frameRect.adjust( 0.5, 0.5, -0.5, -0.5 );
// set pen
if( outline.isValid() )
// setup painter
painter->setRenderHint( QPainter::Antialiasing );
painter->setPen( outline );
// render
switch( side )
{
default:
case SideLeft:
frameRect.adjust( 0, 1, 0, -1 );
painter->drawLine( frameRect.topRight(), frameRect.bottomRight() );
break;
painter->setPen( outline );
frameRect.adjust( 0.5, 0.5, -0.5, -0.5 );
case SideTop:
frameRect.adjust( 1, 0, -1, 0 );
painter->drawLine( frameRect.topLeft(), frameRect.topRight() );
break;
painter->drawLine( frameRect.topRight(), frameRect.bottomRight() );
case SideRight:
frameRect.adjust( 0, 1, 0, -1 );
painter->drawLine( frameRect.topLeft(), frameRect.bottomLeft() );
break;
case SideBottom:
frameRect.adjust( 1, 0, -1, 0 );
painter->drawLine( frameRect.bottomLeft(), frameRect.bottomRight() );
break;
case AllSides:
{
qreal radius( frameRadius() );
radius -= 1.0;
painter->drawRoundedRect( frameRect, radius, radius );
break;
}
}

@ -161,7 +161,7 @@ namespace Breeze
void renderFrame( QPainter*, const QRect&, const QColor& color, const QColor& outline = QColor() ) const;
//* side panel frame
void renderSidePanelFrame( QPainter*, const QRect&, const QColor& outline = QColor() ) const;
void renderSidePanelFrame( QPainter*, const QRect&, const QColor& outline, Side ) const;
//* menu frame
void renderMenuFrame( QPainter*, const QRect&, const QColor& color, const QColor& outline, bool roundCorners = true ) const;

@ -2604,7 +2604,9 @@ namespace Breeze
{
const QColor outline( _helper->sidePanelOutlineColor( palette, hasFocus, opacity, mode ) );
_helper->renderSidePanelFrame( painter, rect, outline );
const bool reverseLayout( option->direction == Qt::RightToLeft );
const Side side( reverseLayout ? SideRight : SideLeft );
_helper->renderSidePanelFrame( painter, rect, outline, side );
} else {

Loading…
Cancel
Save