aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2020-03-30 15:00:14 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2020-03-30 12:30:33 +0000
commit9a2eedf1962e1acd01aba40ea3ce4604c855c1b9 (patch)
treee0d0433f576201882c42be1bd4d6239817370363
parentdf1152dd9503ed9577754700f9e603f572807c53 (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.cpp28
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);
}
}