diff --git a/clients/modernsystem/modernsys.cpp b/clients/modernsystem/modernsys.cpp index ae045eaf1f..75fc66cc2a 100644 --- a/clients/modernsystem/modernsys.cpp +++ b/clients/modernsystem/modernsys.cpp @@ -56,7 +56,7 @@ static QPixmap *iButtonPixDown=0; static QColor buttonFg; static bool pixmaps_created = false; -static void make_button_fx(const QColor &btnColor, QPixmap *pix) +static void make_button_fx(const QColorGroup &g, QPixmap *pix, bool light=false) { static QBitmap bDark1(14, 15, bmap_6a696a_bits, true); static QBitmap bDark2(14, 15, bmap_949194_bits, true); @@ -69,16 +69,31 @@ static void make_button_fx(const QColor &btnColor, QPixmap *pix) bDark3.setMask(bDark3); bLight1.setMask(bLight1); } - pix->fill(btnColor); + + pix->fill(g.background()); QPainter p(pix); - p.setPen(btnColor.dark(120)); - p.drawPixmap(0, 0, bDark3); - p.setPen(btnColor.dark(140)); - p.drawPixmap(0, 0, bDark2); - p.setPen(btnColor.dark(150)); - p.drawPixmap(0, 0, bDark1); - p.setPen(btnColor.light(130)); - p.drawPixmap(0, 0, bLight1); + if(QPixmap::defaultDepth() > 8){ + QColor btnColor = g.background(); + if(light) + btnColor = btnColor.light(120); + p.setPen(btnColor.dark(120)); + p.drawPixmap(0, 0, bDark3); + p.setPen(btnColor.dark(140)); + p.drawPixmap(0, 0, bDark2); + p.setPen(btnColor.dark(150)); + p.drawPixmap(0, 0, bDark1); + p.setPen(btnColor.light(130)); + p.drawPixmap(0, 0, bLight1); + } + else{ + p.setPen(g.dark()); + p.drawPixmap(0, 0, bDark2); + p.drawPixmap(0, 0, bDark1); + p.setPen(g.mid()); + p.drawPixmap(0, 0, bDark3); + p.setPen(g.light()); + p.drawPixmap(0, 0, bLight1); + } p.end(); } @@ -89,33 +104,35 @@ static void create_pixmaps() return; pixmaps_created = true; - aUpperGradient = new KPixmap; - aUpperGradient->resize(32, 18); - iUpperGradient = new KPixmap; - iUpperGradient->resize(32, 18); - KPixmapEffect::gradient(*aUpperGradient, - options->color(Options::TitleBar, true).light(130), - options->color(Options::TitleBlend, true), - KPixmapEffect::VerticalGradient); - KPixmapEffect::gradient(*iUpperGradient, - options->color(Options::TitleBar, false).light(130), - options->color(Options::TitleBlend, false), - KPixmapEffect::VerticalGradient); + if(QPixmap::defaultDepth() > 8){ + aUpperGradient = new KPixmap; + aUpperGradient->resize(32, 18); + iUpperGradient = new KPixmap; + iUpperGradient->resize(32, 18); + KPixmapEffect::gradient(*aUpperGradient, + options->color(Options::TitleBar, true).light(130), + options->color(Options::TitleBlend, true), + KPixmapEffect::VerticalGradient); + KPixmapEffect::gradient(*iUpperGradient, + options->color(Options::TitleBar, false).light(130), + options->color(Options::TitleBlend, false), + KPixmapEffect::VerticalGradient); + } // buttons - QColor btnColor(options->color(Options::ButtonBg, true)); + QColorGroup btnColor(options->colorGroup(Options::ButtonBg, true)); buttonPix = new QPixmap(14, 15); make_button_fx(btnColor, buttonPix); buttonPixDown = new QPixmap(14, 15); - make_button_fx(btnColor.light(120), buttonPixDown); + make_button_fx(btnColor, buttonPixDown, true); - btnColor = options->color(Options::ButtonBg, false); + btnColor = options->colorGroup(Options::ButtonBg, false); iButtonPix = new QPixmap(14, 15); make_button_fx(btnColor, iButtonPix); iButtonPixDown = new QPixmap(14, 15); - make_button_fx(btnColor.light(120), iButtonPixDown); + make_button_fx(btnColor, iButtonPixDown, true); - if(qGray(btnColor.rgb()) < 100) + if(qGray(btnColor.background().rgb()) < 150) buttonFg = Qt::white; else buttonFg = Qt::black; @@ -172,11 +189,12 @@ void ModernSys::slotReset() if(aUpperGradient){ delete aUpperGradient; delete iUpperGradient; - delete buttonPix; - delete buttonPixDown; - delete iButtonPix; - delete iButtonPixDown; } + delete buttonPix; + delete buttonPixDown; + delete iButtonPix; + delete iButtonPixDown; + pixmaps_created = false; create_pixmaps(); titleBuffer.resize(0, 0);