From 2c37e22f5cac5f9fabff7c70817c480839d21523 Mon Sep 17 00:00:00 2001 From: gekeleda Date: Tue, 25 Nov 2025 10:27:10 +0100 Subject: [PATCH] [android] Ensure correct system language order in map lang selection Signed-off-by: gekeleda Co-authored-by: gekeleda Co-committed-by: gekeleda --- .../app/organicmaps/editor/LanguagesFragment.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java b/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java index 1355ad4a7..12be7e79c 100644 --- a/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java @@ -15,6 +15,7 @@ import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Objects; import java.util.Set; public class LanguagesFragment extends BaseMwmRecyclerFragment @@ -40,7 +41,9 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment LocaleListCompat systemLocales = ConfigurationCompat.getLocales(config); List languages = new ArrayList<>(); - List systemLanguages = new ArrayList<>(); + List systemLanguages = new ArrayList<>(systemLocales.size()); + for (int i = 0; i < systemLocales.size(); i++) + systemLanguages.add(null); for (Language lang : Editor.nativeGetSupportedLanguages(false)) { @@ -49,7 +52,10 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment { Locale locale = systemLocales.get(i); if (locale != null && locale.getLanguage().equals(lang.code)) - systemLanguages.add(lang); + { + systemLanguages.add(i, lang); + break; + } } if (existingLanguages.contains(lang.code) || systemLanguages.contains(lang)) @@ -60,7 +66,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment Collections.sort(languages, Comparator.comparing(lhs -> lhs.name)); - languages.addAll(0, systemLanguages); + languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList()); return new LanguagesAdapter(this, languages.toArray(new Language[languages.size()])); }