QmlDesigner: Store 3D edit tool states per document

This way we avoid interference from scenes in other documents.

3D Edit view content is also cleared whenever a model is detached,
and puppet resize is automatically triggered if incorrectly sized
image is received to keep edit 3D view content up to date.

Change-Id: Ic7a71f1d89f0ebfe5a62b49ea62570242b8f5b1d
Fixes: QDS-1734
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Miikka Heikkinen
2020-03-06 16:14:12 +02:00
parent 42f34c8a55
commit e8f76f0050
4 changed files with 19 additions and 3 deletions

View File

@@ -73,6 +73,10 @@ Edit3DWidget *Edit3DView::edit3DWidget() const
void Edit3DView::renderImage3DChanged(const QImage &img)
{
edit3DWidget()->canvas()->updateRenderImage(img);
// Notify puppet to resize if received image wasn't correct size
if (img.size() != canvasSize())
edit3DViewResized(canvasSize());
}
void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
@@ -118,6 +122,15 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
m_editLightAction->action()->setChecked(false);
}
void Edit3DView::modelAboutToBeDetached(Model *model)
{
Q_UNUSED(model)
// Clear the image when model is detached (i.e. changing documents)
QImage emptyImage;
edit3DWidget()->canvas()->updateRenderImage(emptyImage);
}
void Edit3DView::sendInputEvent(QInputEvent *e) const
{
nodeInstanceView()->sendInputEvent(e);