QmlDesigner: Do not apply smooth rendering if root is a 3D node

Task-number: QDS-7136
Change-Id: I5260153b8d6131160a8d4b67418e81c6f6e4d862
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Thomas Hartmann
2022-06-10 21:08:56 +02:00
parent dedbbc75b5
commit 13c1b6f237

View File

@@ -407,8 +407,6 @@ QImage Qt5NodeInstanceServer::grabItem(QQuickItem *item)
const bool renderEffects = qEnvironmentVariableIsSet("QMLPUPPET_RENDER_EFFECTS");
const bool smoothRendering = qEnvironmentVariableIsSet("QMLPUPPET_SMOOTH_RENDERING");
int scaleFactor = smoothRendering ? 2 : 1;
if (renderEffects) {
if (parentEffectItem(item))
return renderImage;
@@ -430,17 +428,20 @@ QImage Qt5NodeInstanceServer::grabItem(QQuickItem *item)
ServerNodeInstance instance = instanceForObject(item);
const bool rootIs3DObject = rootIsRenderable3DObject();
// Setting layer enabled to false messes up the bounding rect.
// Therefore we calculate it upfront.
QRectF renderBoundingRect;
if (instance.isValid())
renderBoundingRect = instance.boundingRect();
else if (rootIsRenderable3DObject())
else if (rootIs3DObject)
renderBoundingRect = item->boundingRect();
else
renderBoundingRect = ServerNodeInstance::effectAdjustedBoundingRect(item);
const int scaleFactor = (smoothRendering && !rootIs3DObject) ? 2 : 1;
// Hide immediate children that have instances and are QQuickItems so we get only
// the parent item's content, as compositing is handled on creator side.
QSet<QQuickItem *> layerChildren;
@@ -521,7 +522,6 @@ QImage Qt5NodeInstanceServer::grabItem(QQuickItem *item)
if (!isLayerEnabled(pItem))
pItem->derefFromEffectItem(false);
#else
Q_UNUSED(item)
#endif