Re-implemented the possibility to hide titlebars for specific windows

BUG: 344931
wilder-pre-rebase
Hugo Pereira Da Costa 11 years ago
parent fd3ccba86c
commit 32974f572e
  1. 101
      kdecoration/breezedecoration.cpp
  2. 2
      kdecoration/breezedecoration.h
  3. 1
      kdecoration/config/breezeexceptiondialog.cpp

@ -103,7 +103,8 @@ namespace Breeze
QColor Decoration::titleBarColor() const QColor Decoration::titleBarColor() const
{ {
if( m_animation->state() == QPropertyAnimation::Running ) if( hideTitleBar() ) return m_colorSettings.titleBar( false );
else if( m_animation->state() == QPropertyAnimation::Running )
{ {
return KColorUtils::mix( m_colorSettings.inactiveTitleBar(), m_colorSettings.activeTitleBar(), m_opacity ); return KColorUtils::mix( m_colorSettings.inactiveTitleBar(), m_colorSettings.activeTitleBar(), m_opacity );
} else return m_colorSettings.titleBar( client().data()->isActive() ); } else return m_colorSettings.titleBar( client().data()->isActive() );
@ -289,17 +290,22 @@ namespace Breeze
const int right = isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize(); const int right = isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize();
const int bottom = isMaximizedVertically() || c->isShaded() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(true); const int bottom = isMaximizedVertically() || c->isShaded() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(true);
// top border int top = 0;
QFontMetrics fm(s->font()); if( hideTitleBar() ) top = bottom;
int top = qMax(fm.boundingRect(c->caption()).height(), buttonHeight() ); else {
// padding below QFontMetrics fm(s->font());
// extra pixel is used for the active window outline top += qMax(fm.boundingRect(c->caption()).height(), buttonHeight() );
const int baseSize = settings()->smallSpacing();
top += baseSize*Metrics::TitleBar_BottomMargin + 1; // padding below
// extra pixel is used for the active window outline
const int baseSize = settings()->smallSpacing();
top += baseSize*Metrics::TitleBar_BottomMargin + 1;
// padding above // padding above
top += baseSize*TitleBar_TopMargin; top += baseSize*TitleBar_TopMargin;
}
setBorders(QMargins(left, top, right, bottom)); setBorders(QMargins(left, top, right, bottom));
@ -391,12 +397,13 @@ namespace Breeze
painter->setBrush(m_colorSettings.frame(client().data()->isActive())); painter->setBrush(m_colorSettings.frame(client().data()->isActive()));
// clip away the top part // clip away the top part
painter->setClipRect(0, borderTop(), size().width(), size().height() - borderTop(), Qt::IntersectClip); if( !hideTitleBar() ) painter->setClipRect(0, borderTop(), size().width(), size().height() - borderTop(), Qt::IntersectClip);
painter->drawRoundedRect(rect(), Metrics::Frame_FrameRadius, Metrics::Frame_FrameRadius); painter->drawRoundedRect(rect(), Metrics::Frame_FrameRadius, Metrics::Frame_FrameRadius);
painter->restore(); painter->restore();
} }
paintTitleBar(painter, repaintRegion); if( !hideTitleBar() ) paintTitleBar(painter, repaintRegion);
} }
//________________________________________________________________ //________________________________________________________________
@ -474,54 +481,58 @@ namespace Breeze
//________________________________________________________________ //________________________________________________________________
int Decoration::captionHeight() const int Decoration::captionHeight() const
{ return borderTop() - settings()->smallSpacing()*(Metrics::TitleBar_BottomMargin + Metrics::TitleBar_TopMargin ) - 1; } { return hideTitleBar() ? borderTop() : borderTop() - settings()->smallSpacing()*(Metrics::TitleBar_BottomMargin + Metrics::TitleBar_TopMargin ) - 1; }
//________________________________________________________________ //________________________________________________________________
QRect Decoration::captionRect() const QRect Decoration::captionRect() const
{ {
const int leftOffset = m_leftButtons->geometry().x() + m_leftButtons->geometry().width() + Metrics::TitleBar_SideMargin*settings()->smallSpacing(); if( hideTitleBar() ) return QRect();
const int rightOffset = size().width() - m_rightButtons->geometry().x() + Metrics::TitleBar_SideMargin*settings()->smallSpacing(); else {
const int yOffset = settings()->smallSpacing()*Metrics::TitleBar_TopMargin; const int leftOffset = m_leftButtons->geometry().x() + m_leftButtons->geometry().width() + Metrics::TitleBar_SideMargin*settings()->smallSpacing();
const int rightOffset = size().width() - m_rightButtons->geometry().x() + Metrics::TitleBar_SideMargin*settings()->smallSpacing();
const int yOffset = settings()->smallSpacing()*Metrics::TitleBar_TopMargin;
QRect boundingRect( settings()->fontMetrics().boundingRect( client().data()->caption()).toRect() ); QRect boundingRect( settings()->fontMetrics().boundingRect( client().data()->caption()).toRect() );
boundingRect.setTop( yOffset ); boundingRect.setTop( yOffset );
boundingRect.setHeight( captionHeight() ); boundingRect.setHeight( captionHeight() );
switch( m_internalSettings->titleAlignment() ) switch( m_internalSettings->titleAlignment() )
{ {
case Breeze::InternalSettings::AlignLeft: case Breeze::InternalSettings::AlignLeft:
boundingRect.moveLeft( leftOffset ); boundingRect.moveLeft( leftOffset );
break; break;
case Breeze::InternalSettings::AlignRight: case Breeze::InternalSettings::AlignRight:
boundingRect.moveRight( size().width() - rightOffset - 1 ); boundingRect.moveRight( size().width() - rightOffset - 1 );
break; break;
case Breeze::InternalSettings::AlignCenter: case Breeze::InternalSettings::AlignCenter:
boundingRect.moveLeft( leftOffset + (size().width() - leftOffset - rightOffset - boundingRect.width() )/2 ); boundingRect.moveLeft( leftOffset + (size().width() - leftOffset - rightOffset - boundingRect.width() )/2 );
break; break;
default: default:
case Breeze::InternalSettings::AlignCenterFullWidth: case Breeze::InternalSettings::AlignCenterFullWidth:
boundingRect.moveLeft( ( size().width() - boundingRect.width() )/2 ); boundingRect.moveLeft( ( size().width() - boundingRect.width() )/2 );
break; break;
} }
// make sure there is no overlap with buttons // make sure there is no overlap with buttons
if( boundingRect.left() < leftOffset ) if( boundingRect.left() < leftOffset )
{ {
boundingRect.moveLeft( leftOffset ); boundingRect.moveLeft( leftOffset );
boundingRect.setRight( qMin( boundingRect.right(), size().width() - rightOffset - 1 ) ); boundingRect.setRight( qMin( boundingRect.right(), size().width() - rightOffset - 1 ) );
} else if( boundingRect.right() > size().width() - rightOffset - 1 ) { } else if( boundingRect.right() > size().width() - rightOffset - 1 ) {
boundingRect.moveRight( size().width() - rightOffset - 1 ); boundingRect.moveRight( size().width() - rightOffset - 1 );
boundingRect.setLeft( qMax( boundingRect.left(), leftOffset ) ); boundingRect.setLeft( qMax( boundingRect.left(), leftOffset ) );
} }
return boundingRect; return boundingRect;
}
} }

@ -96,6 +96,7 @@ namespace Breeze
inline bool isMaximized( void ) const; inline bool isMaximized( void ) const;
inline bool isMaximizedHorizontally( void ) const; inline bool isMaximizedHorizontally( void ) const;
inline bool isMaximizedVertically( void ) const; inline bool isMaximizedVertically( void ) const;
inline bool hideTitleBar( void ) const;
//@} //@}
public Q_SLOTS: public Q_SLOTS:
@ -166,6 +167,7 @@ namespace Breeze
bool Decoration::isMaximized( void ) const { return client().data()->isMaximized() && !m_internalSettings->drawBorderOnMaximizedWindows(); } bool Decoration::isMaximized( void ) const { return client().data()->isMaximized() && !m_internalSettings->drawBorderOnMaximizedWindows(); }
bool Decoration::isMaximizedHorizontally( void ) const { return client().data()->isMaximizedHorizontally() && !m_internalSettings->drawBorderOnMaximizedWindows(); } bool Decoration::isMaximizedHorizontally( void ) const { return client().data()->isMaximizedHorizontally() && !m_internalSettings->drawBorderOnMaximizedWindows(); }
bool Decoration::isMaximizedVertically( void ) const { return client().data()->isMaximizedVertically() && !m_internalSettings->drawBorderOnMaximizedWindows(); } bool Decoration::isMaximizedVertically( void ) const { return client().data()->isMaximizedVertically() && !m_internalSettings->drawBorderOnMaximizedWindows(); }
bool Decoration::hideTitleBar( void ) const { return m_internalSettings->hideTitleBar() && !client().data()->isShaded(); }
} }

@ -40,7 +40,6 @@ namespace Breeze
{ {
m_ui.setupUi( this ); m_ui.setupUi( this );
m_ui.hideTitleBar->hide();
connect( m_ui.buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL(clicked()), this, SLOT(close()) ); connect( m_ui.buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL(clicked()), this, SLOT(close()) );

Loading…
Cancel
Save