QmlDesigner: Port 3D edit view to Qt6

Task-number: QDS-2899
Change-Id: Iedbe5e8561e5ab71ef32922e69da43cd3cc57e90
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Miikka Heikkinen
2020-10-08 10:50:15 +03:00
parent 49a8266d58
commit 6b8d8e414a
35 changed files with 742 additions and 182 deletions
@@ -262,10 +262,8 @@ QStringList QuickItemNodeInstance::allStates() const
void QuickItemNodeInstance::updateDirtyNode(QQuickItem *item)
{
if (s_unifiedRenderPath) {
item->update();
if (s_unifiedRenderPath)
return;
}
DesignerSupport::updateDirtyNode(item);
}
@@ -417,23 +415,24 @@ QImage QuickItemNodeInstance::renderImage() const
static double devicePixelRatio = qgetenv("FORMEDITOR_DEVICE_PIXEL_RATIO").toDouble();
size *= devicePixelRatio;
// Fake render loop signaling to update things like QML items as 3D textures
nodeInstanceServer()->quickView()->beforeSynchronizing();
nodeInstanceServer()->quickView()->beforeRendering();
QImage renderImage;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
if (s_unifiedRenderPath)
if (s_unifiedRenderPath) {
renderImage = nodeInstanceServer()->quickView()->grabWindow();
else
} else {
// Fake render loop signaling to update things like QML items as 3D textures
nodeInstanceServer()->quickView()->beforeSynchronizing();
nodeInstanceServer()->quickView()->beforeRendering();
renderImage = designerSupport()->renderImageForItem(quickItem(), renderBoundingRect, size);
nodeInstanceServer()->quickView()->afterRendering();
}
#else
renderImage = nodeInstanceServer()->quickView()->grabWindow();
#endif
nodeInstanceServer()->quickView()->afterRendering();
renderImage.setDevicePixelRatio(devicePixelRatio);
return renderImage;
@@ -447,27 +446,27 @@ QImage QuickItemNodeInstance::renderPreviewImage(const QSize &previewImageSize)
static double devicePixelRatio = qgetenv("FORMEDITOR_DEVICE_PIXEL_RATIO").toDouble();
const QSize size = previewImageSize * devicePixelRatio;
if (quickItem()->isVisible()) {
// Fake render loop signaling to update things like QML items as 3D textures
nodeInstanceServer()->quickView()->beforeSynchronizing();
nodeInstanceServer()->quickView()->beforeRendering();
QImage image;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
if (s_unifiedRenderPath)
if (s_unifiedRenderPath) {
image = nodeInstanceServer()->quickView()->grabWindow();
else
} else {
// Fake render loop signaling to update things like QML items as 3D textures
nodeInstanceServer()->quickView()->beforeSynchronizing();
nodeInstanceServer()->quickView()->beforeRendering();
image = designerSupport()->renderImageForItem(quickItem(),
previewItemBoundingRect,
size);
nodeInstanceServer()->quickView()->afterRendering();
}
#else
image = nodeInstanceServer()->quickView()->grabWindow();
#endif
image = image.scaledToWidth(size.width());
nodeInstanceServer()->quickView()->afterRendering();
return image;
} else {
QImage transparentImage(size, QImage::Format_ARGB32_Premultiplied);
@@ -686,7 +685,8 @@ void QuickItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParen
if (quickItem()->parentItem()) {
refresh();
DesignerSupport::updateDirtyNode(quickItem());
updateDirtyNode(quickItem());
if (instanceIsValidLayoutable(oldParentInstance, oldParentProperty))
oldParentInstance->refreshLayoutable();