fixed calculation of title bounding rects when there is only one title being shown, to avoid issues when smooth title transition is enabled

svn path=/trunk/KDE/kdebase/workspace/; revision=1088001
This commit is contained in:
Hugo Pereira Da Costa 2010-02-09 23:07:34 +00:00
parent a2f94886d0
commit 58b8722a6b
2 changed files with 10 additions and 22 deletions

View file

@ -419,14 +419,6 @@ namespace Oxygen
QRect OxygenClient::titleBoundingRect( const QFont& font, QRect rect, const QString& caption ) const QRect OxygenClient::titleBoundingRect( const QFont& font, QRect rect, const QString& caption ) const
{ {
// check bounding rect against titleRect
if( titleRectCanConflict() )
{
QRect titleRect( OxygenClient::titleRect() );
if( titleRect.left() > rect.left() ) { rect.setLeft( titleRect.left() ); }
if( titleRect.right() < rect.right() ) { rect.setRight( titleRect.right() ); }
}
// get title bounding rect // get title bounding rect
QRect boundingRect = QFontMetrics( font ).boundingRect( rect, configuration().titleAlignment() | Qt::AlignVCenter, caption ); QRect boundingRect = QFontMetrics( font ).boundingRect( rect, configuration().titleAlignment() | Qt::AlignVCenter, caption );
@ -927,20 +919,25 @@ namespace Oxygen
const QList< ClientGroupItem >& items( clientGroupItems() ); const QList< ClientGroupItem >& items( clientGroupItems() );
QString caption( itemCount == 1 ? OxygenClient::caption() : items[index].title() ); QString caption( itemCount == 1 ? OxygenClient::caption() : items[index].title() );
// make sure title rect never conflicts with decoration buttons // always make sure that titleRect never conflicts with window buttons
if( titleRectCanConflict() ) QRect titleRect( OxygenClient::titleRect() );
{ textRect = titleBoundingRect( painter->font(), textRect, caption ); } if( titleRect.left() > textRect.left() ) { textRect.setLeft( titleRect.left() ); }
if( titleRect.right() < textRect.right() ) { textRect.setRight( titleRect.right() ); }
// title outline // title outline
if( itemCount == 1 ) if( itemCount == 1 )
{ {
if( itemData_.isAnimated() ) { if( itemData_.isAnimated() ) {
textRect = titleBoundingRect( painter->font(), textRect, caption );
renderTitleOutline( painter, item.boundingRect_, palette ); renderTitleOutline( painter, item.boundingRect_, palette );
} else if( (isActive()||glowIsAnimated()) && configuration().drawTitleOutline() ) { } else if( (isActive()||glowIsAnimated()) && configuration().drawTitleOutline() ) {
// adjust textRect
textRect = titleBoundingRect( painter->font(), textRect, caption );
// adjusts boundingRect accordingly // adjusts boundingRect accordingly
QRect boundingRect( item.boundingRect_ ); QRect boundingRect( item.boundingRect_ );
boundingRect.setLeft( textRect.left() - layoutMetric( LM_TitleBorderLeft ) ); boundingRect.setLeft( textRect.left() - layoutMetric( LM_TitleBorderLeft ) );

View file

@ -302,15 +302,6 @@ namespace Oxygen
!isPreview(); !isPreview();
} }
//! returns true if drawn item can conflict with buttons.
/*!
this might happen either
- when there is only one item in the group
- when there are two items but the second is being dragged in or away
*/
bool titleRectCanConflict( void ) const
{ return ( itemData_.count() == 1 || ( itemData_.count() == 2 && (itemData_.animationType()&AnimationSameTarget) ) ); }
//! calculate mask //! calculate mask
QRegion calcMask( void ) const; QRegion calcMask( void ) const;