From 2656cdb86f1cb1eae2abc22f8458826d44efd0a4 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 12 May 2025 14:43:40 +0300 Subject: [PATCH] QmlDesigner: Fix mouse cursor state handling in 3D view Mouse cursor state is always reported separately and it should not affect other tool state handling, so handle it first and don't do any default handling if the key is missing. Fixes: QDS-15342 Change-Id: I190713b3b97707749f3503ebd9058c72e0b401e5 Reviewed-by: Mahmoud Badri --- .../qmldesigner/components/edit3d/edit3dview.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index 5023fb0f013..c21883b2299 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -128,6 +128,13 @@ void Edit3DView::renderImage3DChanged(const QImage &img) void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState) { + const QString mouseCursorKey = QStringLiteral("mouseCursor"); + if (sceneState.contains(mouseCursorKey)) { + setMouseCursor(sceneState[mouseCursorKey].toInt()); + // Mouse cursor state is always reported separately, as we never want to persist this state + return; + } + const QString activeViewportKey = QStringLiteral("activeViewport"); if (sceneState.contains(activeViewportKey)) { setActiveViewport(sceneState[activeViewportKey].toInt()); @@ -139,15 +146,6 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState) setActiveViewport(0); } - const QString mouseCursorKey = QStringLiteral("mouseCursor"); - if (sceneState.contains(mouseCursorKey)) { - setMouseCursor(sceneState[mouseCursorKey].toInt()); - if (sceneState.size() == 1) - return; - } else { - setMouseCursor(-1); - } - const QString sceneKey = QStringLiteral("sceneInstanceId"); const QString selectKey = QStringLiteral("selectionMode"); const QString transformKey = QStringLiteral("transformMode");