https://bugs.kde.org/show_bug.cgi?id=453229

--- Comment #2 from Paul McAuley <k...@paulmcauley.com> ---
I should also mention that the above 2 screenshots are at 250% scaling.

I was looking into this more, and guessing this is probably because in Wayland
scaled rendering is done relative to a smaller 100% scaled grid (e.g. at 250%
scaling with a 2840x2160 display, rendering is done relative to 1536x864), so
on Wayland you probably need to use floating point values for more precise
shapes on screens with scaling > 100%.

You can, however, only construct a QRegion using integers (QRect and QPolygon;
not QRectF and QPolygonF).

In my own window decoration (
https://github.com/paulmcauley/classik/commit/fe48c052f529e889706214c9af3db200fbfdb2a8#diff-1c44374ff8b2c6b8bea9596fe31ea4878a23bea2f62d2ce01dcbdf119dc98474R1319
) I convert from a QPainterPath (in the shape of the window) to a  QPolygonF to
a QPolygon and finally to a QRegion.

If my assumption about the cause of this problem is correct,  I would then
propose extending the setBlurRegion() API in the decoration to accept a
QPainterPath or a QPolygonF. A QPolygonF can then be easily converted to a
QPolygon (just converts qreal to int) and then to a QRegion at the last minute
after scaling and directly before the effect is applied to the actual pixels on
screen.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to