diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/CameraGizmo.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/CameraGizmo.qml index 6a2a7b3a763..e158128a5fd 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/CameraGizmo.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/CameraGizmo.qml @@ -30,7 +30,7 @@ import CameraGeometry 1.0 IconGizmo { id: cameraGizmo - iconSource: "qrc:///qtquickplugin/mockfiles/images/camera-pick-icon.png" + iconSource: "qrc:///qtquickplugin/mockfiles/images/editor_camera.png" gizmoModel.geometry: cameraGeometry property alias geometryName: cameraGeometry.name // Name must be unique for each geometry property alias viewPortRect: cameraGeometry.viewPortRect @@ -43,7 +43,7 @@ IconGizmo { gizmoModel.materials: [ DefaultMaterial { id: defaultMaterial - emissiveColor: "blue" + emissiveColor: cameraGizmo.targetNode === cameraGizmo.selectedNode ? "#FF0000" : "#555555" lighting: DefaultMaterial.NoLighting cullingMode: Material.DisableCulling } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml index 2c908755229..5ca9ab8f9fb 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml @@ -66,9 +66,11 @@ Window { var component = Qt.createComponent("LightGizmo.qml"); if (component.status === Component.Ready) { var gizmo = component.createObject(overlayScene, - {"view3D": overlayView, "targetNode": obj}); + {"view3D": overlayView, "targetNode": obj, + "selectedNode": selectedNode}); lightGizmos[lightGizmos.length] = gizmo; - gizmo.selected.connect(emitObjectClicked); + gizmo.clicked.connect(emitObjectClicked); + gizmo.selectedNode = Qt.binding(function() {return selectedNode;}); } } @@ -80,10 +82,11 @@ Window { var gizmo = component.createObject( overlayScene, {"view3D": overlayView, "targetNode": obj, "geometryName": geometryName, - "viewPortRect": viewPortRect}); + "viewPortRect": viewPortRect, "selectedNode": selectedNode}); cameraGizmos[cameraGizmos.length] = gizmo; - gizmo.selected.connect(emitObjectClicked); + gizmo.clicked.connect(emitObjectClicked); gizmo.viewPortRect = Qt.binding(function() {return viewPortRect;}); + gizmo.selectedNode = Qt.binding(function() {return selectedNode;}); } } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml index 6fbf17367e0..8623b87a840 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml @@ -32,12 +32,13 @@ Node { property View3D view3D property bool highlightOnHover: true property Node targetNode: null + property Node selectedNode: null property alias gizmoModel: gizmoModel property alias iconSource: iconImage.source signal positionCommit() - signal selected(Node node) + signal clicked(Node node) position: targetNode ? targetNode.scenePosition : Qt.vector3d(0, 0, 0) rotation: targetNode ? targetNode.sceneRotation : Qt.vector3d(0, 0, 0) @@ -57,22 +58,27 @@ Node { parent: view3D Rectangle { - width: 24 - height: 24 + width: iconImage.width + height: iconImage.height x: -width / 2 y: -height color: "transparent" border.color: "#7777ff" - border.width: highlightOnHover && iconMouseArea.containsMouse ? 2 : 0 + border.width: iconGizmo.selectedNode === iconGizmo.targetNode + || (iconGizmo.highlightOnHover && iconMouseArea.containsMouse) ? 2 : 0 radius: 5 + opacity: iconGizmo.selectedNode === iconGizmo.targetNode ? 0.3 : 1 Image { id: iconImage - anchors.fill: parent + fillMode: Image.Pad MouseArea { id: iconMouseArea anchors.fill: parent - onClicked: selected(targetNode) - hoverEnabled: highlightOnHover + onClicked: iconGizmo.clicked(iconGizmo.targetNode) + hoverEnabled: iconGizmo.highlightOnHover + && iconGizmo.selectedNode !== iconGizmo.targetNode + acceptedButtons: iconGizmo.selectedNode !== iconGizmo.targetNode + ? Qt.LeftButton : Qt.NoButton } } } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/camera-pick-icon.png b/share/qtcreator/qml/qmlpuppet/mockfiles/images/camera-pick-icon.png deleted file mode 100644 index 47610f54501..00000000000 Binary files a/share/qtcreator/qml/qmlpuppet/mockfiles/images/camera-pick-icon.png and /dev/null differ diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/camera-pick-icon@2x.png b/share/qtcreator/qml/qmlpuppet/mockfiles/images/camera-pick-icon@2x.png deleted file mode 100644 index 769934ae01c..00000000000 Binary files a/share/qtcreator/qml/qmlpuppet/mockfiles/images/camera-pick-icon@2x.png and /dev/null differ diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/editor_camera.png b/share/qtcreator/qml/qmlpuppet/mockfiles/images/editor_camera.png new file mode 100644 index 00000000000..4b2bf93d414 Binary files /dev/null and b/share/qtcreator/qml/qmlpuppet/mockfiles/images/editor_camera.png differ diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/editor_camera@2x.png b/share/qtcreator/qml/qmlpuppet/mockfiles/images/editor_camera@2x.png new file mode 100644 index 00000000000..1c690433c2b Binary files /dev/null and b/share/qtcreator/qml/qmlpuppet/mockfiles/images/editor_camera@2x.png differ diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc b/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc index deb70ba1453..7cb9e7913e0 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc @@ -28,8 +28,8 @@ mockfiles/meshes/scalerod.mesh mockfiles/meshes/ring.mesh mockfiles/meshes/ringselect.mesh - mockfiles/images/camera-pick-icon.png - mockfiles/images/camera-pick-icon@2x.png + mockfiles/images/editor_camera.png + mockfiles/images/editor_camera@2x.png mockfiles/images/light-pick-icon.png mockfiles/images/light-pick-icon@2x.png mockfiles/images/item_selection_active.png