diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2020-03-30 15:00:14 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2020-03-30 12:30:33 +0000 |
commit | 9a2eedf1962e1acd01aba40ea3ce4604c855c1b9 (patch) | |
tree | e0d0433f576201882c42be1bd4d6239817370363 | |
parent | df1152dd9503ed9577754700f9e603f572807c53 (diff) |
QmlDesigner: Show selection and gizmo for scene root light/camera
Change-Id: Ib650a5e331cf2936ef20a47abec5086bb08f06d2
Fixes: QDS-1857
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 67a031ee50..4331e35ddc 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -1045,24 +1045,26 @@ void Qt5InformationNodeInstanceServer::changeSelection(const ChangeSelectionComm if (firstSceneRoot && sceneRoot == firstSceneRoot && instance.isSubclassOf("QQuick3DNode")) object = instance.internalObject(); - auto instanceIsModelOrComponent = [&]() -> bool { - bool retval = instance.isSubclassOf("QQuick3DModel"); + auto isSelectableAsRoot = [&]() -> bool { #ifdef QUICK3D_MODULE - if (!retval) { - // Node is a component if it has node children that have no instances - auto node = qobject_cast<QQuick3DNode *>(object); - if (node) { - const auto childItems = node->childItems(); - for (const auto &childItem : childItems) { - if (qobject_cast<QQuick3DNode *>(childItem) && !hasInstanceForObject(childItem)) - return true; - } + if (qobject_cast<QQuick3DModel *>(object) + || qobject_cast<QQuick3DCamera *>(object) + || qobject_cast<QQuick3DAbstractLight *>(object)) { + return true; + } + // Node is a component if it has node children that have no instances + auto node = qobject_cast<QQuick3DNode *>(object); + if (node) { + const auto childItems = node->childItems(); + for (const auto &childItem : childItems) { + if (qobject_cast<QQuick3DNode *>(childItem) && !hasInstanceForObject(childItem)) + return true; } } #endif - return retval; + return false; }; - if (object && (firstSceneRoot != object || instanceIsModelOrComponent())) + if (object && (firstSceneRoot != object || isSelectableAsRoot())) selectedObjs << objectToVariant(object); } } |