don't paint the title if there isn't a title to paint

svn path=/trunk/KDE/kdelibs/; revision=1111855
This commit is contained in:
Aaron J. Seigo 2010-04-06 20:26:05 +00:00
parent 65ca45681f
commit 61ca96b034

View File

@ -523,34 +523,37 @@ void ExtenderItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti
rect = QRectF(0, 0, 30, d->titleRect().height()); rect = QRectF(0, 0, 30, d->titleRect().height());
} }
QPixmap pixmap(d->titleRect().size().toSize()); QSize titleSize = d->titleRect().size().toSize();
pixmap.fill(Qt::transparent); if (!titleSize.isEmpty()) {
QPixmap pixmap(titleSize);
pixmap.fill(Qt::transparent);
QPainter p(&pixmap); QPainter p(&pixmap);
p.setPen(theme->color(Plasma::Theme::TextColor)); p.setPen(theme->color(Plasma::Theme::TextColor));
p.setFont(font); p.setFont(font);
p.drawText(QRectF(QPointF(0, 0), d->titleRect().size()), p.drawText(QRectF(QPointF(0, 0), d->titleRect().size()),
Qt::TextSingleLine | Qt::AlignVCenter | Qt::AlignLeft, Qt::TextSingleLine | Qt::AlignVCenter | Qt::AlignLeft,
d->title); d->title);
// Create the alpha gradient for the fade out effect // Create the alpha gradient for the fade out effect
QLinearGradient alphaGradient(0, 0, 1, 0); QLinearGradient alphaGradient(0, 0, 1, 0);
alphaGradient.setCoordinateMode(QGradient::ObjectBoundingMode); alphaGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
//TODO: correct handling of right to left text. //TODO: correct handling of right to left text.
if (option->direction == Qt::LeftToRight) { if (option->direction == Qt::LeftToRight) {
alphaGradient.setColorAt(0, QColor(0, 0, 0, 255)); alphaGradient.setColorAt(0, QColor(0, 0, 0, 255));
alphaGradient.setColorAt(1, QColor(0, 0, 0, 0)); alphaGradient.setColorAt(1, QColor(0, 0, 0, 0));
} else { } else {
alphaGradient.setColorAt(1, QColor(0, 0, 0, 255)); alphaGradient.setColorAt(1, QColor(0, 0, 0, 255));
alphaGradient.setColorAt(0, QColor(0, 0, 0, 0)); alphaGradient.setColorAt(0, QColor(0, 0, 0, 0));
}
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(rect, alphaGradient);
p.end();
painter->drawPixmap(d->titleRect().topLeft(), pixmap);
} }
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(rect, alphaGradient);
p.end();
painter->drawPixmap(d->titleRect().topLeft(), pixmap);
} }
void ExtenderItem::moveEvent(QGraphicsSceneMoveEvent *event) void ExtenderItem::moveEvent(QGraphicsSceneMoveEvent *event)