do not align to scene coordinates for transformations beyond

translations
This commit is contained in:
Uwe Rathmann 2022-08-03 09:39:15 +02:00
parent 966d8a6a2e
commit be53343375

View File

@ -31,8 +31,16 @@
#include <qquickwindow.h>
#include <qsgsimplerectnode.h>
QSK_QT_PRIVATE_BEGIN
#include <private/qquickitem_p.h>
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;