diff options
author | Marko Kangas <marko.kangas@digia.com> | 2015-02-16 16:37:05 +0200 |
---|---|---|
committer | Marko Kangas <marko.kangas@digia.com> | 2015-02-24 07:07:21 +0000 |
commit | c97445945501acf13ba6d4f314161bf9689a8a95 (patch) | |
tree | 6f3b430db054d6af7dd412ed5beffccb57f015b4 | |
parent | 341a32bceef417fe819cb6d33e32af4cb5796b6b (diff) |
Fix fusion style QPushButton icon on HiDPI mode
Change-Id: Ie05012266abe52bc33bb9c2e19c93353cac3307f
Task-number: QTBUG-44502
Reviewed-by: Jens Bache-Wiig <jensbw@gmail.com>
-rw-r--r-- | src/widgets/styles/qfusionstyle.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index cf2f3ea26b..0cc1211cc0 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -1738,8 +1738,8 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio state = QIcon::On; QPixmap pixmap = button->icon.pixmap(button->iconSize, mode, state); - int w = pixmap.width(); - int h = pixmap.height(); + int w = pixmap.width() / pixmap.devicePixelRatio(); + int h = pixmap.height() / pixmap.devicePixelRatio(); if (!button->text.isEmpty()) w += button->fontMetrics.boundingRect(option->rect, tf, button->text).width() + 2; @@ -1747,15 +1747,17 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio point = QPoint(ir.x() + ir.width() / 2 - w / 2, ir.y() + ir.height() / 2 - h / 2); + w = pixmap.width() / pixmap.devicePixelRatio(); + if (button->direction == Qt::RightToLeft) - point.rx() += pixmap.width(); + point.rx() += w; painter->drawPixmap(visualPos(button->direction, button->rect, point), pixmap); if (button->direction == Qt::RightToLeft) ir.translate(-point.x() - 2, 0); else - ir.translate(point.x() + pixmap.width(), 0); + ir.translate(point.x() + w, 0); // left-align text if there is if (!button->text.isEmpty()) |