diff options
| author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-09-16 18:25:17 +0300 |
|---|---|---|
| committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-09-16 21:45:46 +0300 |
| commit | d79175d2c8542b216815f80772d618016fc8da2a (patch) | |
| tree | af337a57954ba858f6a24d9e2f8c007f64ca6f63 | |
| parent | 99492ff5e733733cf4bf2bdd210cccf3ab4fc5ab (diff) | |
| download | qtlocation-mapboxgl-upstream/alexshalamov_fix_has_override.tar.gz | |
[core] Fix for FormatSectionOverrides::hasOverrideupstream/alexshalamov_fix_has_override
| -rw-r--r-- | src/mbgl/style/layers/symbol_layer_impl.hpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/mbgl/style/layers/symbol_layer_impl.hpp b/src/mbgl/style/layers/symbol_layer_impl.hpp index 9b63e0e8d6..ca9505a5f3 100644 --- a/src/mbgl/style/layers/symbol_layer_impl.hpp +++ b/src/mbgl/style/layers/symbol_layer_impl.hpp @@ -74,7 +74,7 @@ struct FormatSectionOverrides<TypeList<PaintProperty...>> { }, [&checkLiteral] (const PropertyExpression<TextField::Type>& property) { bool expressionHasOverrides = false; - const auto checkExpression = [&](const expression::Expression& e) { + const std::function<void(const expression::Expression&)> checkExpression = [&](const expression::Expression& e) { if (expressionHasOverrides) { return; } @@ -87,9 +87,7 @@ struct FormatSectionOverrides<TypeList<PaintProperty...>> { expressionHasOverrides = true; } return; - } - - if (e.getKind() == expression::Kind::FormatExpression) { + } else if (e.getKind() == expression::Kind::FormatExpression) { const auto* formatExpr = static_cast<const expression::FormatExpression*>(&e); for (const auto& section : formatExpr->getSections()) { if (Property::hasOverride(section)) { @@ -97,17 +95,12 @@ struct FormatSectionOverrides<TypeList<PaintProperty...>> { break; } } + } else { + e.eachChild(checkExpression); } }; - // Check root property expression and return early. checkExpression(property.getExpression()); - if (expressionHasOverrides) { - return true; - } - - // Traverse thru children and check whether any of them have overrides. - property.getExpression().eachChild(checkExpression); return expressionHasOverrides; }, [] (const auto&) { |
