Compare commits

..

6 Commits

Author SHA1 Message Date
map-per
876616ad1d [editor] Add alt and old name to language selection
Signed-off-by: map-per <map-per@gmx.de>
2026-01-09 20:31:41 +01:00
map-per
88c0860a3c [edior] Reliably hide existingLanguages
Signed-off-by: map-per <map-per@gmx.de>
2026-01-09 20:15:22 +01:00
Jean-Baptiste
b7733786df [android] Remove useless property apply in main TextView style
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2026-01-09 13:56:15 +01:00
Henry Sternberg
245646c45d [routing] parking_aisle fixes v2
Signed-off-by: Henry Sternberg <henry@bluelightmaps.com>
2026-01-09 12:23:33 +00:00
Jean-Baptiste
6799f17c1b [android] Rework text style applied on title in app bar
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2026-01-09 11:44:18 +01:00
Henry Sternberg
e3abbc712b [routing] Fix crash on 32-bit devices with conditional access
The deserialization of conditional road access data was using
size_t which is 8 bytes on 64-bit (where maps are generated)
but only 4 bytes on 32-bit devices. This caused stream
misalignment and eventual std::length_error when garbage data
was interpreted as a huge vector size.

Fix by using uint64_t to always read 8 bytes, matching what
64-bit build servers write.

Signed-off-by: Henry Sternberg <henry@bluelightmaps.com>
2026-01-09 11:15:38 +01:00
10 changed files with 21 additions and 41 deletions

View File

@@ -132,7 +132,6 @@ import app.organicmaps.widget.placepage.PlacePageViewModel;
import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.textview.MaterialTextView;
import java.util.ArrayList;
import java.util.Objects;
@@ -712,7 +711,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (!TextUtils.isEmpty(appName))
{
setTitle(appName);
((MaterialTextView) mPointChooser.findViewById(R.id.title)).setText(appName);
}
}

View File

@@ -237,7 +237,7 @@ public class EditorHostFragment
for (LocalizedName name : sNames)
languages.add(name.lang);
args.putStringArrayList(LanguagesFragment.EXISTING_LOCALIZED_NAMES, languages);
args.putBoolean(LanguagesFragment.INCLUDE_LOCAL_LANGUAGE, false);
args.putBoolean(LanguagesFragment.IS_MAP_LANGUAGE_SELECTION, false);
editWithFragment(Mode.LANGUAGE, R.string.choose_language, args, LanguagesFragment.class, false);
}

View File

@@ -25,7 +25,7 @@ import java.util.Set;
public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
{
final static String EXISTING_LOCALIZED_NAMES = "ExistingLocalizedNames";
final static String INCLUDE_LOCAL_LANGUAGE = "IncludeLocalLanguage";
final static String IS_MAP_LANGUAGE_SELECTION = "IsMapLanguageSelection";
public interface Listener
{
@@ -39,8 +39,8 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
protected LanguagesAdapter createAdapter()
{
Bundle args = getArguments();
boolean includeLocalLanguage =
args != null ? args.getBoolean(INCLUDE_LOCAL_LANGUAGE) : true;
boolean isMapLanguageSelection =
args != null ? args.getBoolean(IS_MAP_LANGUAGE_SELECTION) : true;
Set<String> existingLanguages =
args != null ? new HashSet<>(args.getStringArrayList(EXISTING_LOCALIZED_NAMES)) : new HashSet<>();
@@ -52,8 +52,14 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
for (int i = 0; i < systemLocales.size(); i++)
systemLanguages.add(null);
for (Language lang : Editor.nativeGetSupportedLanguages(false))
// service languages are old_name, alt_name, ...
boolean includeServiceLangs = !isMapLanguageSelection;
for (Language lang : Editor.nativeGetSupportedLanguages(includeServiceLangs))
{
if (existingLanguages.contains(lang.code))
continue;
// Separately extract system languages
for (int i = 0; i < systemLocales.size(); i++)
{
@@ -65,7 +71,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
}
}
if (existingLanguages.contains(lang.code) || systemLanguages.contains(lang))
if (systemLanguages.contains(lang))
continue;
languages.add(lang);
@@ -75,7 +81,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList());
if (includeLocalLanguage) {
if (isMapLanguageSelection) {
String localLanguageLabel = getString(R.string.pref_maplanguage_local);
Language localLanguage = new Language(DEFAULT_LANG_CODE, localLanguageLabel);
languages.add(0, localLanguage);

View File

@@ -20,8 +20,8 @@
android:gravity="center"
android:layout_gravity="end|center_vertical"
android:background="?selectableItemBackgroundBorderless"
android:textSize="@dimen/text_size_toolbar"
android:padding="@dimen/margin_half"
android:textAppearance="@style/MwmTextAppearance.Toolbar.Title"
android:text="@string/editor_report_problem_send_button"/>
</com.google.android.material.appbar.MaterialToolbar>

View File

@@ -15,15 +15,8 @@
android:theme="@style/MwmWidget.ToolbarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/margin_half"
android:text="@string/editor_add_select_location"
android:textAppearance="@style/MwmTextAppearance.Toolbar.Title"/>
app:layout_constraintTop_toTopOf="parent"
app:title="@string/editor_add_select_location">
</com.google.android.material.appbar.MaterialToolbar>
<com.google.android.material.textview.MaterialTextView

View File

@@ -98,16 +98,6 @@
<item name="android:textColorHint">@color/text_light_hint</item>
</style>
<style name="MwmTextAppearance.Toolbar.Title" parent="android:TextAppearance.Material.Widget.ActionBar.Title">
<item name="android:textSize">@dimen/text_size_toolbar</item>
<item name="android:textColor">@color/text_light</item>
<item name="android:textColorHint">@color/text_light_hint</item>
</style>
<style name="MwmTextAppearance.Toolbar.Title.Light">
<item name="android:textColor">@color/bg_cards</item>
</style>
<style name="MwmTextAppearance.NavMenu">
<item name="android:textStyle">bold</item>
</style>

View File

@@ -143,8 +143,7 @@
<item name="android:background">?colorPrimary</item>
<item name="android:displayOptions">homeAsUp|showTitle</item>
<item name="contentInsetStart">0dp</item>
<item name="android:titleTextAppearance">@style/MwmTextAppearance.Toolbar.Title</item>
<item name="titleTextAppearance">@style/MwmTextAppearance.Toolbar.Title</item>
<item name="titleTextColor">@color/text_light</item>
<item name="buttonGravity">center_vertical</item>
</style>
@@ -169,9 +168,7 @@
<item name="android:cacheColorHint">@android:color/transparent</item>
</style>
<style name="MwmWidget.TextView" parent="Widget.MaterialComponents.TextView">
<item name="android:background">@android:color/transparent</item>
</style>
<style name="MwmWidget.TextView" parent="Widget.MaterialComponents.TextView" />
<style name="MwmWidget.TextView.Item">
<item name="android:layout_width">match_parent</item>

View File

@@ -57,6 +57,8 @@ TagMapping const kMotorCarTagMapping = {
{OsmElement::Tag("motorcar", "private"), RoadAccess::Type::Private},
{OsmElement::Tag("motorcar", "destination"), RoadAccess::Type::Destination},
{OsmElement::Tag("motorcar", "permit"), RoadAccess::Type::Permit},
{OsmElement::Tag("service", "parking_aisle"), RoadAccess::Type::Destination},
{OsmElement::Tag("amenity", "parking_entrance"), RoadAccess::Type::Destination},
};
TagMapping const kMotorVehicleTagMapping = {
@@ -77,8 +79,6 @@ TagMapping const kVehicleTagMapping = {
{OsmElement::Tag("vehicle", "private"), RoadAccess::Type::Private},
{OsmElement::Tag("vehicle", "destination"), RoadAccess::Type::Destination},
{OsmElement::Tag("vehicle", "permit"), RoadAccess::Type::Permit},
{OsmElement::Tag("service", "parking_aisle"), RoadAccess::Type::Private},
{OsmElement::Tag("amenity", "parking_entrance"), RoadAccess::Type::Private},
};
TagMapping const kCarBarriersTagMapping = {
@@ -136,8 +136,6 @@ TagMapping const kDefaultTagMapping = {
{OsmElement::Tag("access", "agricultural"), RoadAccess::Type::Private},
{OsmElement::Tag("access", "forestry"), RoadAccess::Type::Private},
{OsmElement::Tag("locked", "yes"), RoadAccess::Type::Locked},
{OsmElement::Tag("service", "parking_aisle"), RoadAccess::Type::Private},
{OsmElement::Tag("amenity", "parking_entrance"), RoadAccess::Type::Private},
};
// Removed secondary, tertiary from car list. Example https://www.openstreetmap.org/node/8169922700

View File

@@ -120,13 +120,11 @@ static std::pair<UniString, UniString> const kPreprocessReplacements[] = {
{MakeUniString("ι"), MakeUniString("ιερά μονή")},
{MakeUniString("ι.ν"), MakeUniString("ιερός ναός")},
{MakeUniString("κων/νου"), MakeUniString("κωνσταντίνου")},
{MakeUniString("б-р"), MakeUniString("бульвар")},
{MakeUniString("д-р"), MakeUniString("доктор")},
{MakeUniString("м-н"), MakeUniString("микрорайон")},
{MakeUniString("наб-я"), MakeUniString("набережная")},
{MakeUniString("пр-д"), MakeUniString("проезд")},
{MakeUniString("пр-т"), MakeUniString("проспект")},
{MakeUniString("р"), MakeUniString("район")},
{MakeUniString("আ/এ"), MakeUniString("আবাসিক এলাকা")},
};

View File

@@ -458,7 +458,7 @@ private:
positionsAccessConditional.clear();
auto openingHoursDeserializer = GetOpeningHoursSerDesForRouting();
auto const size = ReadPrimitiveFromSource<size_t>(src);
auto const size = ReadPrimitiveFromSource<uint64_t>(src);
positionsAccessConditional.reserve(size);
uint32_t prevFeatureId = 0;