forked from qt-creator/qt-creator
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:
@@ -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));
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user