Fix an icon centering problem on the actionbar

The actualPixmapSize is different
from the resulting pixmap when using
svg icons. This seems to be a bug
in Qt, but using the resulting pixmap
is safe for now.
This commit is contained in:
Jens Bache-Wiig
2010-02-24 19:54:35 +01:00
parent 7af1e21144
commit b7650d343e
2 changed files with 8 additions and 11 deletions

View File

@@ -105,7 +105,7 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
painter.drawLine(rect().bottomLeft(), rect().bottomRight()); painter.drawLine(rect().bottomLeft(), rect().bottomRight());
painter.restore(); painter.restore();
} else } else
#endif #endif
if (isDown() || isChecked()) { if (isDown() || isChecked()) {
painter.save(); painter.save();
QLinearGradient grad(rect().topLeft(), rect().topRight()); QLinearGradient grad(rect().topLeft(), rect().topRight());
@@ -130,7 +130,6 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
QSizeF halfPixSize = pix.size()/2.0; QSizeF halfPixSize = pix.size()/2.0;
painter.drawPixmap(center-QPointF(halfPixSize.width()-1, halfPixSize.height()-1), pix); painter.drawPixmap(center-QPointF(halfPixSize.width()-1, halfPixSize.height()-1), pix);
// draw popup texts // draw popup texts
if (isTitledAction) { if (isTitledAction) {
QFont normalFont(painter.font()); QFont normalFont(painter.font());
@@ -155,7 +154,7 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
penColor = Qt::gray; penColor = Qt::gray;
painter.setPen(penColor); painter.setPen(penColor);
const QString projectName = defaultAction()->property("heading").toString(); const QString projectName = defaultAction()->property("heading").toString();
QString ellidedProjectName = fm.elidedText(projectName, Qt::ElideMiddle, r.width()); QString ellidedProjectName = fm.elidedText(projectName, Qt::ElideMiddle, r.width() - 6);
if (isEnabled()) { if (isEnabled()) {
const QRectF shadowR = r.translated(0, 1); const QRectF shadowR = r.translated(0, 1);
painter.setPen(QColor(30, 30, 30, 80)); painter.setPen(QColor(30, 30, 30, 80));

View File

@@ -63,15 +63,13 @@ static QIcon createCenteredIcon(const QIcon &icon, const QIcon &overlay)
targetPixmap.fill(Qt::transparent); targetPixmap.fill(Qt::transparent);
QPainter painter(&targetPixmap); QPainter painter(&targetPixmap);
QSize actualSize = icon.actualSize(QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)); QPixmap pixmap = icon.pixmap(Core::Constants::TARGET_ICON_SIZE);
painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - actualSize.width())/2, painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - pixmap.width())/2,
(Core::Constants::TARGET_ICON_SIZE - actualSize.height())/2, (Core::Constants::TARGET_ICON_SIZE - pixmap.height())/2, pixmap);
icon.pixmap(Core::Constants::TARGET_ICON_SIZE));
if (!overlay.isNull()) { if (!overlay.isNull()) {
actualSize = overlay.actualSize(QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)); pixmap = overlay.pixmap(Core::Constants::TARGET_ICON_SIZE);
painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - actualSize.width())/2, painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - pixmap.width())/2,
(Core::Constants::TARGET_ICON_SIZE - actualSize.height())/2, (Core::Constants::TARGET_ICON_SIZE - pixmap.height())/2, pixmap);
overlay.pixmap(Core::Constants::TARGET_ICON_SIZE));
} }
return QIcon(targetPixmap); return QIcon(targetPixmap);
} }