From b539dc118efb0a37826ac101b610f21483bf2498 Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland Date: Tue, 31 May 2022 09:50:45 +0200 Subject: Avoid menu separators disappearing under fractional dpr scaling An aliased line painted directly on top of the top edge of the clip rect will work fine when there is no scaling, since the coordinates will snap downwards. When a fractional scaling is applied however, the main part of the line width will sometimes fall outside the clip rect, and so the coordinates will snap it outside, and hence it will not be painted. Fix by shifting the y coordinate by .5, to place the center coordinate of the line to the center of the intended pixel. Fixes: QTBUG-88934 Task-number: QTBUG-96223 Pick-to: 6.3 6.2 Change-Id: I3ab042bc964eac6ce359d40428c4d79cde9cb78c Reviewed-by: Nodir Temirkhodjaev Reviewed-by: Volker Hilsheimer --- src/widgets/styles/qfusionstyle.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/widgets/styles/qfusionstyle.cpp') diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index f923c4562e..9ee6a30810 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -1519,8 +1519,9 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio } painter->setPen(shadow.lighter(106)); const bool reverse = menuItem->direction == Qt::RightToLeft; - painter->drawLine(menuItem->rect.left() + margin + (reverse ? 0 : w), menuItem->rect.center().y(), - menuItem->rect.right() - margin - (reverse ? w : 0), menuItem->rect.center().y()); + qreal y = menuItem->rect.center().y() + 0.5f; + painter->drawLine(QPointF(menuItem->rect.left() + margin + (reverse ? 0 : w), y), + QPointF(menuItem->rect.right() - margin - (reverse ? w : 0), y)); painter->restore(); break; } -- cgit v1.2.3