From c4542f1e35cb16bce525710a983f6d47bf3c4fd5 Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Wed, 13 Mar 2013 20:27:32 +0000 Subject: [PATCH] GcLabel paint is a CPU hog .. and for no good reason. --- src/GcCalendar.cpp | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/GcCalendar.cpp b/src/GcCalendar.cpp index 9ebb0bd8c..49a78600a 100644 --- a/src/GcCalendar.cpp +++ b/src/GcCalendar.cpp @@ -147,13 +147,12 @@ GcLabel::event(QEvent *e) } void -GcLabel::paintEvent(QPaintEvent *e) +GcLabel::paintEvent(QPaintEvent *) { - int x,y,w,l; - + QPainter painter(this); + painter.save(); if (bg) { - QPainter painter(this); // setup a painter and the area to paint QRect all(0,0,width(),height()); if (!underMouse()) painter.fillRect(all, bgColor); @@ -164,32 +163,23 @@ GcLabel::paintEvent(QPaintEvent *e) } if (selected) { - QPainter painter(this); QRect all(0,0,width(),height()); painter.fillRect(all, GColor(CCALCURRENT)); } if (xoff || yoff) { - // save settings - QPalette p = palette(); - getContentsMargins(&x,&y,&w,&l); - // adjust for emboss - setContentsMargins(x+xoff,y+yoff,w,l); - QPalette r; - r.setColor(QPalette::WindowText, QColor(220,220,220,160)); - setPalette(r); - QLabel::paintEvent(e); - - // Now normal - setContentsMargins(x,y,w,l); - setPalette(p); + // draw text in white behind... + QRectF off(xoff,yoff,width(),height()); + painter.setPen(QColor(220,220,220,160)); + painter.drawText(off, alignment(), text()); } - QPalette r; // want gray - r.setColor(QPalette::WindowText, QColor(0,0,0,170)); - setPalette(r); - QLabel::paintEvent(e); + QRectF norm(0,0,width(),height()); + painter.setPen(QColor(0,0,0,170)); + painter.drawText(norm, alignment(), text()); + + painter.restore(); } void