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 Change-Id: I3ab042bc964eac6ce359d40428c4d79cde9cb78c Reviewed-by: Nodir Temirkhodjaev <nodir.temir@gmail.com> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit b539dc118efb0a37826ac101b610f21483bf2498) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
e9a0ff7bbd
commit
04b9c31b02
@ -1554,8 +1554,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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user