diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index 9b4f6b134dd..c17926b9283 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1695,12 +1695,15 @@ void editIn3dView(const SelectionContext &selectionContext) } if (targetNode.isValid()) { + qint32 id = targetNode.internalId(); + Model *model = selectionContext.model(); QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("Editor3D", true); if (scenePos.isNull()) { - selectionContext.model()->emitView3DAction(View3DActionType::AlignViewToCamera, true); + model->emitView3DAction(View3DActionType::AlignViewToCamera, true); } else { - selectionContext.view()->emitCustomNotification("pick_3d_node_from_2d_scene", - {targetNode}, {scenePos}); + model->emitCustomNotification(selectionContext.view(), + "pick_3d_node_from_2d_scene", + {}, {scenePos, id}); } } } diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index 8f9d5fd9cbd..ed86218d37b 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -456,16 +456,16 @@ void Edit3DView::customNotification([[maybe_unused]] const AbstractView *view, [[maybe_unused]] const QList &nodeList, [[maybe_unused]] const QList &data) { - if (identifier == "pick_3d_node_from_2d_scene" && data.size() == 1 && nodeList.size() == 1) { + if (identifier == "pick_3d_node_from_2d_scene" && data.size() == 2) { // Pick via 2D view, data has pick coordinates in main scene coordinates QTimer::singleShot(0, this, [=, self = QPointer{this}]() { if (!self) return; self->emitView3DAction(View3DActionType::GetNodeAtMainScenePos, - QVariantList{data[0], nodeList[0].internalId()}); + QVariantList{data[0], data[1]}); self->m_nodeAtPosReqType = NodeAtPosReqType::MainScenePick; - self->m_pickView3dNode = nodeList[0]; + self->m_pickView3dNode = self->modelNodeForInternalId(qint32(data[1].toInt())); }); } } diff --git a/src/plugins/qmldesigner/components/formeditor/view3dtool.cpp b/src/plugins/qmldesigner/components/formeditor/view3dtool.cpp index a494d467752..841c68b8633 100644 --- a/src/plugins/qmldesigner/components/formeditor/view3dtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/view3dtool.cpp @@ -54,9 +54,11 @@ void View3DTool::mouseReleaseEvent(const QList &, QGraphicsSceneMouseEvent *event) { if (m_view3dNode.isValid()) { + Model *model = view()->model(); + qint32 id = m_view3dNode.internalId(); QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("Editor3D", true); - view()->emitCustomNotification("pick_3d_node_from_2d_scene", - {m_view3dNode}, {event->scenePos()}); + model->emitCustomNotification(view(), "pick_3d_node_from_2d_scene", + {}, {event->scenePos(), id}); } view()->changeToSelectionTool();