LibWeb: Distinguish between integer and number when checking StyleValues

This commit is contained in:
Sam Atkins 2021-10-19 17:03:15 +01:00 committed by Andreas Kling
parent 78e57096e2
commit 04c0c103e0
Notes: sideshowbarker 2024-07-18 02:09:40 +09:00

View file

@ -346,7 +346,8 @@ bool property_accepts_value(PropertyID property_id, StyleValue& style_value)
return true;
)~~~");
} else if (type_name == "number" || type_name == "integer") {
// FIXME: Handle integers separately
auto test_generator = property_generator.fork();
test_generator.set("numbertype", type_name);
StringView min_value;
StringView max_value;
if (!type_args.is_empty()) {
@ -355,17 +356,17 @@ bool property_accepts_value(PropertyID property_id, StyleValue& style_value)
min_value = type_args.substring_view(1, comma_index - 1);
max_value = type_args.substring_view(comma_index + 1, type_args.length() - comma_index - 2);
}
property_generator.append(R"~~~(
if (style_value.has_number())~~~");
test_generator.append(R"~~~(
if (style_value.has_@numbertype@())~~~");
if (!min_value.is_empty()) {
property_generator.set("minvalue", min_value);
property_generator.append(" && (style_value.to_number() >= (float)@minvalue@)");
test_generator.set("minvalue", min_value);
test_generator.append(" && (style_value.to_@numbertype@() >= @minvalue@)");
}
if (!max_value.is_empty()) {
property_generator.set("maxvalue", max_value);
property_generator.append(" && (style_value.to_number() <= (float)@maxvalue@)");
test_generator.set("maxvalue", max_value);
test_generator.append(" && (style_value.to_@numbertype@() <= @maxvalue@)");
}
property_generator.append(R"~~~()
test_generator.append(R"~~~()
return true;
)~~~");
} else if (type_name == "string") {