Takeout inner part of the shadow to avoid artifacts for semi-transparent windows, and

adjust metrics.
wilder-pre-rebase
Hugo Pereira Da Costa 10 years ago
parent 54fb9fe29c
commit e40195693c
  1. 2
      kdecoration/breeze.h
  2. 11
      kdecoration/breezedecoration.cpp

@ -47,7 +47,7 @@ namespace Breeze
TitleBar_ButtonSpacing = 2,
// shadow dimensions (pixels)
Shadow_Overlap = 2,
Shadow_Overlap = 3,
};

@ -640,14 +640,21 @@ namespace Breeze
painter.setCompositionMode(QPainter::CompositionMode_Source);
painter.fillRect( image.rect(), radialGradient);
// contrast pixel
QRectF innerRect = QRectF(
g_shadowSize - shadowOffset - Metrics::Shadow_Overlap, g_shadowSize - shadowOffset - Metrics::Shadow_Overlap,
shadowOffset + 2*Metrics::Shadow_Overlap,shadowOffset + 2*Metrics::Shadow_Overlap )
.adjusted( -0.5, -0.5, 0.5, 0.5 );
shadowOffset + 2*Metrics::Shadow_Overlap,shadowOffset + 2*Metrics::Shadow_Overlap );
painter.setPen( gradientStopColor( g_shadowColor, g_shadowStrength ) );
painter.setBrush( Qt::NoBrush );
painter.drawRoundedRect( innerRect, 2.5, 2.5 );
// mask out inner rect
painter.setPen( Qt::NoPen );
painter.setBrush( Qt::black );
painter.setCompositionMode(QPainter::CompositionMode_DestinationOut );
painter.drawRoundedRect( innerRect, 2.5, 2.5 );
painter.end();
g_sShadow = QSharedPointer<KDecoration2::DecorationShadow>::create();

Loading…
Cancel
Save