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 <mahmoud.badri@qt.io>
This commit is contained in:
Miikka Heikkinen
2025-05-12 17:00:44 +03:00
parent 2656cdb86f
commit ccc095d378

View File

@@ -140,11 +140,13 @@ Item {
_generalHelper.storeToolState(sceneId, "activePreset", activePreset); _generalHelper.storeToolState(sceneId, "activePreset", activePreset);
_generalHelper.requestOverlayUpdate(); _generalHelper.requestOverlayUpdate();
applyViewportPreset() applyViewportPreset()
cameraView.updateSnapping()
} }
onActiveViewportChanged: { onActiveViewportChanged: {
_generalHelper.storeToolState(sceneId, "activeViewport", activeViewport); _generalHelper.storeToolState(sceneId, "activeViewport", activeViewport);
cameraControls[activeViewport].forceActiveFocus(); cameraControls[activeViewport].forceActiveFocus();
notifyActiveViewportChange(activeViewport); notifyActiveViewportChange(activeViewport);
cameraView.updateSnapping()
} }
onActiveSceneChanged: updateActiveScene() onActiveSceneChanged: updateActiveScene()
@@ -760,7 +762,6 @@ Item {
updateViewRects(); updateViewRects();
updateSplitResizers(); updateSplitResizers();
cameraView.updateSnapping();
viewRoot.updateMouseCursor(); viewRoot.updateMouseCursor();
} }
@@ -1078,7 +1079,7 @@ Item {
border.width: 2 border.width: 2
border.color: "#57B9FC" border.color: "#57B9FC"
color: "transparent" color: "transparent"
z: 1000 // Edge case to make sure selection rect drawn over everything z: 500
} }
// Vertical divider (left/right) // Vertical divider (left/right)
@@ -1335,21 +1336,25 @@ Item {
preferredCamera: _generalHelper.activeScenePreferredCamera preferredCamera: _generalHelper.activeScenePreferredCamera
preferredSize: Qt.size(viewRoot.width * 0.3, viewRoot.height * 0.3) preferredSize: Qt.size(viewRoot.width * 0.3, viewRoot.height * 0.3)
viewPortSize: Qt.size(viewRoot.viewPortRect.width, viewRoot.viewPortRect.height) viewPortSize: Qt.size(viewRoot.viewPortRect.width, viewRoot.viewPortRect.height)
z: 1000
function updateSnapping() { function updateSnapping() {
const rect = viewRoot.viewRects[viewRoot.activeViewport]; switch (viewRoot.activePreset) {
if (!rect || !rect.visible) case "Single":
return; cameraView.snapLeft = true
break
const centerX = rect.x + rect.width / 2; case "2Vertical":
cameraView.snapLeft = centerX < viewContainer.width / 2; cameraView.snapLeft = viewRoot.activeViewport == 1
} break
case "2Horizontal":
Connections { cameraView.snapLeft = true
target: viewRoot break
function onActiveViewportChanged() case "Quad":
{ cameraView.snapLeft = viewRoot.activeViewport != 2
cameraView.updateSnapping() break
case "3Left1Right":
cameraView.snapLeft = false
break
} }
} }
} }