diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp index 52518a28499..25d91fab4fc 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp @@ -188,6 +188,16 @@ void Edit3DWidget::createContextMenu() }); + m_contextMenu->addSeparator(); + + m_alignCameraAction = m_contextMenu->addAction(tr("Align Camera to View"), [&] { + view()->emitView3DAction(View3DActionType::AlignCamerasToView, true); + }); + + m_alignViewAction = m_contextMenu->addAction(tr("Align View to Camera"), [&] { + view()->emitView3DAction(View3DActionType::AlignViewToCamera, true); + }); + m_contextMenu->addSeparator(); } @@ -312,11 +322,14 @@ void Edit3DWidget::showContextMenu(const QPoint &pos, const ModelNode &modelNode const bool isValid = modelNode.isValid(); const bool isModel = modelNode.metaInfo().isQtQuick3DModel(); - const bool isValidNotRoot = isValid && !modelNode.isRootNode(); + const bool isNotRoot = isValid && !modelNode.isRootNode(); + const bool isCamera = isValid && modelNode.metaInfo().isQtQuick3DCamera(); m_editMaterialAction->setEnabled(isModel); - m_deleteAction->setEnabled(isValidNotRoot); - m_copyAction->setEnabled(isValidNotRoot); + m_deleteAction->setEnabled(isNotRoot); + m_copyAction->setEnabled(isNotRoot); + m_alignCameraAction->setEnabled(isCamera); + m_alignViewAction->setEnabled(isCamera); m_contextMenu->popup(mapToGlobal(pos)); } diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h index 59493281c1e..3ce3e1a9f37 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h @@ -63,6 +63,8 @@ private: QPointer m_editMaterialAction; QPointer m_deleteAction; QPointer m_copyAction; + QPointer m_alignCameraAction; + QPointer m_alignViewAction; QPointer m_createSubMenu; ModelNode m_contextMenuTarget; QVector3D m_contextMenuPos3d;