diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2023-06-05 17:36:32 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2023-06-06 11:54:09 +0200 |
commit | 1ae50dc4f816f37df50bfcb9d97c071fdf1e143f (patch) | |
tree | 43f9df48af4da29ffab0185ec18564b5e247cafc /svx | |
parent | 1bdc67de20cf3090f07412513dfece356024ef0b (diff) |
Sort languages in Edit Modules dialog
After commit e855481ead996a3b8270fae91bd23d6c8d75ef25, these languages
are already ordered according to css::lang::Locale sorting implemented
there; but this ordering does not follow the UI language sorting rules.
TODO: put language without country/variant before respective languages
having country/variant.
Change-Id: Ic98b50ef4a500c799110611f7c35c74b4a239ed4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152641
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/dialog/langbox.cxx | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/svx/source/dialog/langbox.cxx b/svx/source/dialog/langbox.cxx index 8142f0425687..6ce694ca0cc5 100644 --- a/svx/source/dialog/langbox.cxx +++ b/svx/source/dialog/langbox.cxx @@ -88,7 +88,7 @@ static bool lcl_SeqHasLang( const Sequence< sal_Int16 > & rLangSeq, sal_Int16 nL namespace { -bool lcl_isPrerequisite( LanguageType nLangType ) +bool lcl_isPrerequisite(LanguageType nLangType, bool requireSublang) { return nLangType != LANGUAGE_DONTKNOW && @@ -96,7 +96,7 @@ bool lcl_isPrerequisite( LanguageType nLangType ) nLangType != LANGUAGE_NONE && nLangType != LANGUAGE_USER_KEYID && !MsLangId::isLegacy( nLangType) && - MsLangId::getSubLanguage( nLangType); + (!requireSublang || MsLangId::getSubLanguage( nLangType)); } bool lcl_isScriptTypeRequested( LanguageType nLangType, SvxLanguageListFlags nLangList ) @@ -167,11 +167,11 @@ void SvxLanguageBox::set_active_id(const LanguageType eLangType) } void SvxLanguageBox::AddLanguages(const std::vector< LanguageType >& rLanguageTypes, - SvxLanguageListFlags nLangList, std::vector<weld::ComboBoxEntry>& rEntries) + SvxLanguageListFlags nLangList, std::vector<weld::ComboBoxEntry>& rEntries, bool requireSublang) { for ( auto const & nLangType : rLanguageTypes ) { - if (lcl_isPrerequisite( nLangType )) + if (lcl_isPrerequisite(nLangType, requireSublang)) { LanguageType nLang = MsLangId::getReplacementForObsoleteLanguage( nLangType ); if (lcl_isScriptTypeRequested( nLang, nLangList)) @@ -280,7 +280,7 @@ void SvxLanguageBox::SetLanguageList(SvxLanguageListFlags nLangList, bool bHasLa nLangType = aKnown[i]; else nLangType = SvtLanguageTable::GetLanguageTypeAtIndex( i ); - if ( lcl_isPrerequisite( nLangType ) && + if ( lcl_isPrerequisite( nLangType, true ) && (lcl_isScriptTypeRequested( nLangType, nLangList) || (bool(nLangList & SvxLanguageListFlags::FBD_CHARS) && MsLangId::hasForbiddenCharacters(nLangType)) || @@ -298,7 +298,7 @@ void SvxLanguageBox::SetLanguageList(SvxLanguageListFlags nLangList, bool bHasLa { // Spell checkers, hyphenators and thesauri may add language tags // unknown so far. - AddLanguages(aAvailLang, nLangList, aEntries); + AddLanguages(aAvailLang, nLangList, aEntries, true); } SortLanguages(aEntries); @@ -315,6 +315,14 @@ void SvxLanguageBox::InsertLanguage(const LanguageType nLangType) m_xControl->append(aEntry); } +void SvxLanguageBox::InsertLanguages(const std::vector<LanguageType>& rLanguageTypes) +{ + std::vector<weld::ComboBoxEntry> entries; + AddLanguages(rLanguageTypes, SvxLanguageListFlags::ALL, entries, false); + SortLanguages(entries); + m_xControl->insert_vector(entries, true); +} + weld::ComboBoxEntry SvxLanguageBox::BuildEntry(const LanguageType nLangType, sal_Int16 nType) { LanguageType nLang = MsLangId::getReplacementForObsoleteLanguage(nLangType); |