From d031696a922e03cb43adf013b8d9b1b052ddf735 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Wed, 23 Feb 2022 20:44:22 +0100 Subject: [PATCH] Fix rating pixmap alignment on high-dpi screens When calculating layout geometry based on the pixmap size, one needs to divide by `devicePixelRatio` --- src/kitemviews/kstandarditemlistwidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 9c527fa17..62beb6e53 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -403,7 +403,7 @@ void KStandardItemListWidget::paint(QPainter* painter, const QStyleOptionGraphic QPointF pos = ratingTextInfo->pos; const Qt::Alignment align = ratingTextInfo->staticText.textOption().alignment(); if (align & Qt::AlignHCenter) { - pos.rx() += (size().width() - m_rating.width()) / 2 - 2; + pos.rx() += (size().width() - m_rating.width() / m_rating.devicePixelRatioF()) / 2 - 2; } painter->drawPixmap(pos, m_rating); } @@ -1277,7 +1277,7 @@ void KStandardItemListWidget::updateIconsLayoutTextCache() requiredWidth = m_customizedFontMetrics.horizontalAdvance(elidedText); } else if (role == "rating") { // Use the width of the rating pixmap, because the rating text is empty. - requiredWidth = m_rating.width(); + requiredWidth = m_rating.width() / m_rating.devicePixelRatioF(); } } layout.endLayout(); -- 2.47.3