From 58622f431b0d7d347333a4bc7b2f57fe17878f9d Mon Sep 17 00:00:00 2001 From: Travis Burrows Date: Thu, 26 May 2022 12:38:22 +0000 Subject: [PATCH] Extend selection rectangle to left edge This commit changes it so the sizes of selection rectangles and hover highlights in compact and details view mode is identical for all items. Before this commit, selection rectangles in lists would have varying indentation of the left edge of the selection rectangle depending on the preview image's width-to-height ratio. This would cause a sort of "ragged edge" in both compact and details list view when multiple items were selected. This commit doesn't change anything about icon view mode. BUG: 453046 --- src/kitemviews/kstandarditemlistwidget.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 7adcc85396..d0eef5ef47 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -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()) {