From c6ea26a70c80c561ca1b726dc5efdfd35540201f Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Mon, 28 Mar 2022 19:00:10 +0200 Subject: [PATCH] Gui: fix algorithmic issue in language change If number format mode is "Selected language", even if this mode isn't modified, we need to force 'setLocale' to update if "Language" has been changed --- src/Gui/DlgGeneralImp.cpp | 13 ++++++++----- src/Gui/DlgGeneralImp.h | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Gui/DlgGeneralImp.cpp b/src/Gui/DlgGeneralImp.cpp index d9e2e65bf4..c184f74352 100644 --- a/src/Gui/DlgGeneralImp.cpp +++ b/src/Gui/DlgGeneralImp.cpp @@ -120,7 +120,7 @@ void DlgGeneralImp::setRecentFileSize() } } -void DlgGeneralImp::setLanguage() +bool DlgGeneralImp::setLanguage() { ParameterGrp::handle hGrp = WindowParameter::getDefaultParameter()->GetGroup("General"); QString lang = QLocale::languageToString(QLocale().language()); @@ -129,15 +129,17 @@ void DlgGeneralImp::setLanguage() if (current != language) { hGrp->SetASCII("Language", current.constData()); Translator::instance()->activateLanguage(current.constData()); + return true; } + return false; } -void DlgGeneralImp::setNumberLocale() +void DlgGeneralImp::setNumberLocale(bool force/* = false*/) { int localeFormat = ui->UseLocaleFormatting->currentIndex(); // Only make the change if locale setting has changed - if (localeIndex == localeFormat) + if (!force && localeIndex == localeFormat) return; if (localeFormat == 0) { @@ -167,8 +169,9 @@ void DlgGeneralImp::saveSettings() ui->SplashScreen->onSave(); setRecentFileSize(); - setLanguage(); - setNumberLocale(); + bool force = setLanguage(); + // In case type is "Selected language", we need to force locale change + setNumberLocale(force); ParameterGrp::handle hGrp = WindowParameter::getDefaultParameter()->GetGroup("General"); QVariant size = ui->toolbarIconSize->itemData(ui->toolbarIconSize->currentIndex()); diff --git a/src/Gui/DlgGeneralImp.h b/src/Gui/DlgGeneralImp.h index 6cfa09c918..7ea991d203 100644 --- a/src/Gui/DlgGeneralImp.h +++ b/src/Gui/DlgGeneralImp.h @@ -64,8 +64,8 @@ private: void setRecentFileSize(); void saveAsNewPreferencePack(); void revertToSavedConfig(); - void setLanguage(); - void setNumberLocale(); + bool setLanguage(); //Returns true if language has been changed + void setNumberLocale(bool force = false); private: int localeIndex;