From 361a65d3fd3f3da217748b845875d4de3464e9a5 Mon Sep 17 00:00:00 2001 From: Akseli Lahtinen Date: Mon, 18 Aug 2025 14:40:43 +0300 Subject: KItemListWidget: Use strokePath instead of drawPath StrokePath gives the focus frame a less blurry look Since the path is bit thinner now, we need to adjust the alpha level to make it easier to see. This is especially visible in dark themes. BUG: 507005 --- src/kitemviews/kitemlistwidget.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/kitemviews/kitemlistwidget.cpp') diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index c06e46339..154196a3c 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -623,14 +623,15 @@ void KItemListWidget::drawItemStyleOption(QPainter *painter, QWidget *widget, QS { QStyleOptionViewItem viewItemOption; constexpr int roundness = 5; // From Breeze style. - constexpr qreal penWidth = 1.5; + constexpr qreal penWidth = 1.25; initStyleOption(&viewItemOption); viewItemOption.state = styleState; viewItemOption.viewItemPosition = QStyleOptionViewItem::OnlyOne; viewItemOption.showDecorationSelected = true; viewItemOption.rect = selectionRectFull().toRect(); QPainterPath path; - path.addRoundedRect(selectionRectFull().adjusted(penWidth, penWidth, -penWidth, -penWidth), roundness, roundness); + const qreal adjustment = 0.5 * penWidth; // Use same adjustments as Breeze strokedRect uses, to snap to pixelGrid. + path.addRoundedRect(selectionRectFull().adjusted(adjustment, adjustment, -adjustment, -adjustment), roundness, roundness); QColor backgroundColor{widget->palette().color(QPalette::Accent)}; painter->setRenderHint(QPainter::Antialiasing); bool current = m_current && styleState & QStyle::State_Active; @@ -658,12 +659,11 @@ void KItemListWidget::drawItemStyleOption(QPainter *painter, QWidget *widget, QS if (current) { QColor focusColor{widget->palette().color(QPalette::Accent)}; focusColor = m_styleOption.palette.color(QPalette::Base).lightnessF() > 0.5 ? focusColor.darker(110) : focusColor.lighter(110); - focusColor.setAlphaF(m_selected || m_hovered ? 0.8 : 0.6); + focusColor.setAlphaF(m_selected || m_hovered ? 1.0 : 0.8); // Set the pen color lighter or darker depending on background color QPen pen{focusColor, penWidth}; pen.setCosmetic(true); - painter->setPen(pen); - painter->drawPath(path); + painter->strokePath(path, pen); } } -- cgit v1.3