X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/cd8190655040566f5b2865f34b3e1d80511fed0b..eb7a2e18ed00183199e616b7595decd8f40151e2:/src/kitemviews/kstandarditemlistwidget.cpp diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index c5621840a..d0eef5ef4 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -419,7 +419,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); } @@ -509,7 +509,7 @@ QRectF KStandardItemListWidget::selectionRect() const QRectF adjustedIconRect = iconRect().adjusted(-padding, -padding, padding, padding); QRectF result = adjustedIconRect | m_textRect; if (m_highlightEntireRow) { - result.setRight(m_columnWidthSum + leadingPadding()); + result.setRight(m_columnWidthSum + sidePadding()); } return result; } @@ -727,7 +727,7 @@ void KStandardItemListWidget::columnWidthChanged(const QByteArray& role, m_dirtyLayout = true; } -void KStandardItemListWidget::leadingPaddingChanged(qreal padding) { +void KStandardItemListWidget::sidePaddingChanged(qreal padding) { Q_UNUSED(padding) m_dirtyLayout = true; } @@ -957,7 +957,7 @@ void KStandardItemListWidget::updateExpansionArea() const qreal inc = (widgetHeight - widgetIconSize) / 2; const qreal x = expandedParentsCount * widgetHeight + inc; const qreal y = inc; - const qreal xPadding = m_highlightEntireRow ? leadingPadding() : 0; + const qreal xPadding = m_highlightEntireRow ? sidePadding() : 0; m_expansionArea = QRectF(xPadding + x, y, widgetIconSize, widgetIconSize); return; } @@ -1104,7 +1104,16 @@ void KStandardItemListWidget::updatePixmapCache() } - m_iconRect = QRectF(m_pixmapPos, QSizeF(m_scaledPixmapSize)); + if (m_layout == IconsLayout) { + m_iconRect = QRectF(m_pixmapPos, QSizeF(m_scaledPixmapSize)); + } else { + const qreal widthOffset = widgetIconSize - m_scaledPixmapSize.width(); + const qreal heightOffset = widgetIconSize - m_scaledPixmapSize.height(); + const QPointF squareIconPos(m_pixmapPos.x() - 0.5 * widthOffset, + m_pixmapPos.y() - 0.5 * heightOffset); + const QSizeF squareIconSize(widgetIconSize, widgetIconSize); + m_iconRect = QRectF(squareIconPos, squareIconSize); + } // Prepare the pixmap that is used when the item gets hovered if (isHovered()) { @@ -1196,7 +1205,11 @@ QString KStandardItemListWidget::elideRightKeepExtension(const QString &text, in QString ret = m_customizedFontMetrics.elidedText(text.chopped(extensionLength), Qt::ElideRight, elidingWidth - extensionWidth); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) ret.append(text.rightRef(extensionLength)); +#else + ret.append(QStringView(text).right(extensionLength)); +#endif return ret; } } @@ -1310,7 +1323,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(); @@ -1393,7 +1406,7 @@ void KStandardItemListWidget::updateDetailsLayoutTextCache() if (m_supportsItemExpanding) { firstColumnInc += (m_expansionArea.left() + m_expansionArea.right() + widgetHeight) / 2; } else { - firstColumnInc += option.padding + leadingPadding(); + firstColumnInc += option.padding + sidePadding(); } qreal x = firstColumnInc; @@ -1409,7 +1422,7 @@ void KStandardItemListWidget::updateDetailsLayoutTextCache() const bool isTextRole = (role == "text"); if (isTextRole) { - availableTextWidth -= firstColumnInc - leadingPadding(); + availableTextWidth -= firstColumnInc - sidePadding(); } if (requiredWidth > availableTextWidth) { @@ -1431,7 +1444,7 @@ void KStandardItemListWidget::updateDetailsLayoutTextCache() // The column after the name should always be aligned on the same x-position independent // from the expansion-level shown in the name column - x -= firstColumnInc - leadingPadding(); + x -= firstColumnInc - sidePadding(); } else if (isRoleRightAligned(role)) { textInfo->pos.rx() += roleWidth - requiredWidth - columnWidthInc; }