diff --git a/windec/kdecoration2/breezedeco.cpp b/windec/kdecoration2/breezedeco.cpp index 0e4d97b8..51ca23ec 100644 --- a/windec/kdecoration2/breezedeco.cpp +++ b/windec/kdecoration2/breezedeco.cpp @@ -181,9 +181,13 @@ void Decoration::paint(QPainter *painter) painter->fillRect(rect(), Qt::transparent); painter->save(); painter->setRenderHint(QPainter::Antialiasing); - painter->setPen(m_colorSettings.frame(client()->isActive())); + painter->setPen(Qt::NoPen); painter->setBrush(m_colorSettings.frame(client()->isActive())); + // clip away the top part + painter->save(); + painter->setClipRect(0, borderTop(), size().width(), size().height() - borderTop(), Qt::IntersectClip); painter->drawRoundedRect(rect(), 5.0, 5.0); + painter->restore(); paintTitleBar(painter); @@ -202,7 +206,18 @@ void Decoration::paintTitleBar(QPainter *painter) gradient.setColorAt(0.0, titleBarColor.lighter(client()->isActive() ? 120.0 : 100.0)); gradient.setColorAt(0.8, titleBarColor); gradient.setColorAt(1.0, titleBarColor); - painter->fillRect(titleRect, gradient); + gradient.setFinalStop(0.0, titleRect.height()); + painter->save(); + painter->setBrush(gradient); + painter->setPen(Qt::NoPen); + if (client()->isMaximized()) { + painter->drawRect(titleRect); + } else { + painter->setClipRect(titleRect, Qt::IntersectClip); + // we make the rect a little bit larger to be able to clip away the rounded corners on bottom + painter->drawRoundedRect(titleRect.adjusted(0, 0, 0, 5), 5.0, 5.0); + } + painter->restore(); const int titleBarSpacer = KDecoration2::DecorationSettings::self()->smallSpacing(); if (true) { // TODO: should be config option @@ -217,6 +232,7 @@ void Decoration::paintTitleBar(QPainter *painter) painter->setFont(KDecoration2::DecorationSettings::self()->font()); const QRect cR = captionRect(); const QString caption = painter->fontMetrics().elidedText(client()->caption(), Qt::ElideMiddle, cR.width()); + painter->setPen(m_colorSettings.frame(client()->isActive())); painter->drawText(cR, Qt::AlignCenter | Qt::TextSingleLine, caption); // draw all buttons