From adb9f37ccac51be7896724b75f148e33ec04f73d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 12 Apr 2021 17:21:33 +0200 Subject: [PATCH] [locale] Set *locale* GS key when needed The code path for setting the locale / language automatically emits currentLanguageStatusChanged(), but the code that updates GS connects to currentLanguageCodeChaged(). This was altered in the 3.2.28 release cycle. Since then, automcatic locale selection wasn't setting *locale* in GS, so that a click-through kind of locale selection would not set it; then the packages module has no *locale* setting for localization packages. The combination of status and code signals (machine- and human- readable) is ok. Introduce a setter to the language that does the necessary signalling, so that setting the language automatically also DTRT. FIXES #1671 --- src/modules/locale/Config.cpp | 18 +++++++++++++----- src/modules/locale/Config.h | 2 ++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp index 1417e5b89..854d65eef 100644 --- a/src/modules/locale/Config.cpp +++ b/src/modules/locale/Config.cpp @@ -259,8 +259,7 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* location auto newLocale = automaticLocaleConfiguration(); if ( !m_selectedLocaleConfiguration.explicit_lang ) { - m_selectedLocaleConfiguration.setLanguage( newLocale.language() ); - emit currentLanguageStatusChanged( currentLanguageStatus() ); + setLanguage( newLocale.language() ); } if ( !m_selectedLocaleConfiguration.explicit_lc ) { @@ -302,11 +301,20 @@ Config::localeConfiguration() const void Config::setLanguageExplicitly( const QString& language ) { - m_selectedLocaleConfiguration.setLanguage( language ); m_selectedLocaleConfiguration.explicit_lang = true; + setLanguage( language ); +} - emit currentLanguageStatusChanged( currentLanguageStatus() ); - emit currentLanguageCodeChanged( currentLanguageCode() ); +void +Config::setLanguage( const QString& language ) +{ + if ( language != m_selectedLocaleConfiguration.language() ) + { + m_selectedLocaleConfiguration.setLanguage( language ); + + emit currentLanguageStatusChanged( currentLanguageStatus() ); + emit currentLanguageCodeChanged( currentLanguageCode() ); + } } void diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h index 4383f6bb0..bcdaf0bbf 100644 --- a/src/modules/locale/Config.h +++ b/src/modules/locale/Config.h @@ -95,6 +95,8 @@ private: } public Q_SLOTS: + /// Set the language, but do not mark it as user-choice + void setLanguage( const QString& language ); /// Set a language by user-choice, overriding future location changes void setLanguageExplicitly( const QString& language ); /// Set LC (formats) by user-choice, overriding future location changes