From be53343375f3527360f34ffa6733a15e178ef316 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Wed, 3 Aug 2022 09:39:15 +0200 Subject: [PATCH] do not align to scene coordinates for transformations beyond translations --- src/controls/QskSkinlet.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/controls/QskSkinlet.cpp b/src/controls/QskSkinlet.cpp index 8bce57ba..c515fab3 100644 --- a/src/controls/QskSkinlet.cpp +++ b/src/controls/QskSkinlet.cpp @@ -31,8 +31,16 @@ #include #include +QSK_QT_PRIVATE_BEGIN +#include +QSK_QT_PRIVATE_END + static inline QRectF qskSceneAlignedRect( const QQuickItem* item, const QRectF& rect ) { + const auto transform = QQuickItemPrivate::get( item )->itemToWindowTransform(); + if ( transform.type() > QTransform::TxTranslate ) + return rect; + /* Aligning rect according to scene coordinates, so that we don't run into rounding issues downstream, where values @@ -42,7 +50,7 @@ static inline QRectF qskSceneAlignedRect( const QQuickItem* item, const QRectF& const auto ratio = item->window()->devicePixelRatio(); - const auto pos = item->mapToScene( rect.topLeft() ) * ratio; + const auto pos = transform.map( rect.topLeft() ) * ratio; const auto size = rect.size() * ratio; const qreal x = qRound( pos.x() ) / ratio;