From ccc095d378b01cbf0afe4f0d7c658e6cfbc8208e Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 12 May 2025 17:00:44 +0300 Subject: [PATCH] QmlDesigner: Fix camera view and split view interaction Fixed camera view position on each split preset and also made sure camera view is drawn over the splitter if they overlap. Fixes: QDS-15328 Change-Id: I820f8d3071bc23b5d537dc337b75deccae606409 Reviewed-by: Mahmoud Badri --- .../qmlpuppet/mockfiles/qt6/EditView3D.qml | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/tools/qmlpuppet/mockfiles/qt6/EditView3D.qml b/src/tools/qmlpuppet/mockfiles/qt6/EditView3D.qml index 0d222de47d7..d99301ae3a2 100644 --- a/src/tools/qmlpuppet/mockfiles/qt6/EditView3D.qml +++ b/src/tools/qmlpuppet/mockfiles/qt6/EditView3D.qml @@ -140,11 +140,13 @@ Item { _generalHelper.storeToolState(sceneId, "activePreset", activePreset); _generalHelper.requestOverlayUpdate(); applyViewportPreset() + cameraView.updateSnapping() } onActiveViewportChanged: { _generalHelper.storeToolState(sceneId, "activeViewport", activeViewport); cameraControls[activeViewport].forceActiveFocus(); notifyActiveViewportChange(activeViewport); + cameraView.updateSnapping() } onActiveSceneChanged: updateActiveScene() @@ -760,7 +762,6 @@ Item { updateViewRects(); updateSplitResizers(); - cameraView.updateSnapping(); viewRoot.updateMouseCursor(); } @@ -1078,7 +1079,7 @@ Item { border.width: 2 border.color: "#57B9FC" color: "transparent" - z: 1000 // Edge case to make sure selection rect drawn over everything + z: 500 } // Vertical divider (left/right) @@ -1335,21 +1336,25 @@ Item { preferredCamera: _generalHelper.activeScenePreferredCamera preferredSize: Qt.size(viewRoot.width * 0.3, viewRoot.height * 0.3) viewPortSize: Qt.size(viewRoot.viewPortRect.width, viewRoot.viewPortRect.height) + z: 1000 function updateSnapping() { - const rect = viewRoot.viewRects[viewRoot.activeViewport]; - if (!rect || !rect.visible) - return; - - const centerX = rect.x + rect.width / 2; - cameraView.snapLeft = centerX < viewContainer.width / 2; - } - - Connections { - target: viewRoot - function onActiveViewportChanged() - { - cameraView.updateSnapping() + switch (viewRoot.activePreset) { + case "Single": + cameraView.snapLeft = true + break + case "2Vertical": + cameraView.snapLeft = viewRoot.activeViewport == 1 + break + case "2Horizontal": + cameraView.snapLeft = true + break + case "Quad": + cameraView.snapLeft = viewRoot.activeViewport != 2 + break + case "3Left1Right": + cameraView.snapLeft = false + break } } }