QmlDesigner: Fix 3D split preset display issues

Checkmark will now show correct split mode when switching between
two different 3D scenes if they have different split modes.
Also, clicking already checked mode will not uncheck it.

Fixes: QDS-15334
Change-Id: I6ec9b24e95ce5f118cb8497958b4270f30b9bfd2
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
Miikka Heikkinen
2025-05-12 12:52:18 +03:00
parent 1460a46eb3
commit b4c0721d72
2 changed files with 17 additions and 0 deletions

View File

@@ -275,6 +275,11 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
else else
m_syncEnvBackgroundAction->action()->setChecked(false); m_syncEnvBackgroundAction->action()->setChecked(false);
if (sceneState.contains(activePresetKey))
syncActivePresetCheckedState(sceneState[activePresetKey].toString());
else
syncActivePresetCheckedState("Single");
// Selection context change updates visible and enabled states // Selection context change updates visible and enabled states
SelectionContext selectionContext(this); SelectionContext selectionContext(this);
selectionContext.setUpdateMode(SelectionContext::UpdateMode::Fast); selectionContext.setUpdateMode(SelectionContext::UpdateMode::Fast);
@@ -731,6 +736,8 @@ void Edit3DView::createViewportPresetActions()
for (Edit3DAction *action : std::as_const(m_viewportPresetActions)) { for (Edit3DAction *action : std::as_const(m_viewportPresetActions)) {
if (action->menuId() != targetAction->menuId()) if (action->menuId() != targetAction->menuId())
action->action()->setChecked(false); action->action()->setChecked(false);
else
action->action()->setChecked(true);
} }
emitView3DAction(View3DActionType::ViewportPreset, label); emitView3DAction(View3DActionType::ViewportPreset, label);
}; };
@@ -912,6 +919,15 @@ void Edit3DView::syncCameraSpeedToNewView()
setCameraSpeedAuxData(speed, multiplier); setCameraSpeedAuxData(speed, multiplier);
} }
void Edit3DView::syncActivePresetCheckedState(const QString &preset)
{
m_viewportPresetSingleAction->action()->setChecked(preset == "Single");
m_viewportPresetQuadAction->action()->setChecked(preset == "Quad");
m_viewportPreset3Left1RightAction->action()->setChecked(preset == "3Left1Right");
m_viewportPreset2HorizontalAction->action()->setChecked(preset == "2Horizontal");
m_viewportPreset2VerticalAction->action()->setChecked(preset == "2Vertical");
}
QmlObjectNode Edit3DView::currentSceneEnv() QmlObjectNode Edit3DView::currentSceneEnv()
{ {
PropertyName envProp{"environment"}; PropertyName envProp{"environment"};

View File

@@ -151,6 +151,7 @@ private:
void createViewportPresetActions(); void createViewportPresetActions();
void createSeekerSliderAction(); void createSeekerSliderAction();
void syncCameraSpeedToNewView(); void syncCameraSpeedToNewView();
void syncActivePresetCheckedState(const QString &preset);
QmlObjectNode currentSceneEnv(); QmlObjectNode currentSceneEnv();
void storeCurrentSceneEnvironment(); void storeCurrentSceneEnvironment();