diff --git a/clients/kwmtheme/kwmthemeclient.cpp b/clients/kwmtheme/kwmthemeclient.cpp index 1035bfe754..845d50367b 100644 --- a/clients/kwmtheme/kwmthemeclient.cpp +++ b/clients/kwmtheme/kwmthemeclient.cpp @@ -290,9 +290,18 @@ KWMThemeClient::KWMThemeClient( Workspace *ws, WId w, QWidget *parent, setBackgroundMode(NoBackground); } -void KWMThemeClient::drawTitle(QPainter &p) +void KWMThemeClient::drawTitle(QPainter &dest) { - QRect r = titlebar->geometry(); + QRect titleRect = titlebar->geometry(); + QRect r(0, 0, titleRect.width(), titleRect.height()); + QPixmap buffer; + + if(buffer.width() == r.width()) + return; + + buffer.resize(r.size()); + QPainter p; + p.begin(&buffer); if(titleSunken){ qDrawShadeRect(&p, r, options->colorGroup(Options::Frame, isActive()), @@ -324,8 +333,12 @@ void KWMThemeClient::drawTitle(QPainter &p) r.setLeft(r.left()+5); r.setRight(r.right()-5); p.drawText(r, titleAlign, caption()); + p.end(); + + dest.drawPixmap(titleRect.x(), titleRect.y(), buffer); } + void KWMThemeClient::resizeEvent( QResizeEvent* e) { Client::resizeEvent( e ); diff --git a/clients/kwmtheme/kwmthemeclient.h b/clients/kwmtheme/kwmthemeclient.h index f13d070e59..a80ab8a500 100644 --- a/clients/kwmtheme/kwmthemeclient.h +++ b/clients/kwmtheme/kwmthemeclient.h @@ -40,6 +40,7 @@ protected: protected slots: void slotReset(); private: + QPixmap buffer; KPixmap *aGradient, *iGradient; MyButton *maxBtn, *stickyBtn; QSpacerItem *titlebar;