From 1d288980aedf5310ca7048db22b04cdde8a9427c Mon Sep 17 00:00:00 2001 From: Syres916 <46537884+Syres916@users.noreply.github.com> Date: Sat, 1 May 2021 11:58:46 +0100 Subject: [PATCH] [Gui] Preferences - Selection Fix Bug for new... ... users who save an unrelated Preference such as Stylesheet from loosing the default selection settings. See discussion : https://forum.freecadweb.org/viewtopic.php?f=3&t=58215 --- src/Gui/DlgSettingsSelection.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Gui/DlgSettingsSelection.cpp b/src/Gui/DlgSettingsSelection.cpp index aff8d341d2..9c52d37d90 100644 --- a/src/Gui/DlgSettingsSelection.cpp +++ b/src/Gui/DlgSettingsSelection.cpp @@ -58,6 +58,29 @@ void DlgSettingsSelection::saveSettings() void DlgSettingsSelection::loadSettings() { auto handle = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/TreeView"); + + // Stop new users loosing a number of default settings when changing an unrelated Preference Setting + bool treePreSelectionFalse = handle->GetBool("PreSelection", false); + bool treePreSelectionTrue = handle->GetBool("PreSelection", true); + bool treeRecordSelectionFalse = handle->GetBool("RecordSelection", false); + bool treeRecordSelectionTrue = handle->GetBool("RecordSelection", true); + bool treeSyncSelectionFalse = handle->GetBool("SyncSelection", false); + bool treeSyncSelectionTrue = handle->GetBool("SyncSelection", true); + bool treeSyncViewFalse = handle->GetBool("SyncView", false); + bool treeSyncViewTrue = handle->GetBool("SyncView", true); + if (treePreSelectionFalse != treePreSelectionTrue) { + handle->SetBool("PreSelection", true); + } + if (treeRecordSelectionFalse != treeRecordSelectionTrue) { + handle->SetBool("RecordSelection", true); + } + if (treeSyncSelectionFalse != treeSyncSelectionTrue) { + handle->SetBool("SyncSelection", true); + } + if (treeSyncViewFalse != treeSyncViewTrue) { + handle->SetBool("SyncView", true); + } + ui->checkBoxAutoSwitch->setChecked(handle->GetBool("SyncView")); ui->checkBoxAutoExpand->setChecked(handle->GetBool("SyncSelection")); ui->checkBoxPreselect->setChecked(handle->GetBool("PreSelection"));