mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-25 09:34:04 +02:00
don't preserve preset's field tags if presets are sub-presets of each other
fixes #0372
This commit is contained in:
@@ -11,10 +11,15 @@ export function actionChangePreset(entityID, oldPreset, newPreset, skipFieldDefa
|
||||
if (newPreset.addTags) {
|
||||
preserveKeys = preserveKeys.concat(Object.keys(newPreset.addTags));
|
||||
}
|
||||
newPreset.fields().concat(newPreset.moreFields())
|
||||
.filter(f => f.matchGeometry(geometry))
|
||||
.map(f => f.key).filter(Boolean)
|
||||
.forEach(key => preserveKeys.push(key));
|
||||
if (oldPreset && !oldPreset.id.startsWith(newPreset.id)) {
|
||||
// only if old preset is not a sub-preset of the new one:
|
||||
// preserve tags for which the new preset has a field
|
||||
// https://github.com/openstreetmap/iD/issues/9372
|
||||
newPreset.fields().concat(newPreset.moreFields())
|
||||
.filter(f => f.matchGeometry(geometry))
|
||||
.map(f => f.key).filter(Boolean)
|
||||
.forEach(key => preserveKeys.push(key));
|
||||
}
|
||||
}
|
||||
if (oldPreset) tags = oldPreset.unsetTags(tags, geometry, preserveKeys);
|
||||
if (newPreset) tags = newPreset.setTags(tags, geometry, skipFieldDefaults);
|
||||
|
||||
Reference in New Issue
Block a user