소스 검색

LibWeb: Distinguish between integer and number when checking StyleValues

Sam Atkins 3 년 전
부모
커밋
04c0c103e0
1개의 변경된 파일9개의 추가작업 그리고 8개의 파일을 삭제
  1. 9 8
      Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp

+ 9 - 8
Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp

@@ -346,7 +346,8 @@ bool property_accepts_value(PropertyID property_id, StyleValue& style_value)
             return true;
             return true;
 )~~~");
 )~~~");
                         } else if (type_name == "number" || type_name == "integer") {
                         } 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 min_value;
                             StringView max_value;
                             StringView max_value;
                             if (!type_args.is_empty()) {
                             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);
                                 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);
                                 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()) {
                             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()) {
                             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;
             return true;
 )~~~");
 )~~~");
                         } else if (type_name == "string") {
                         } else if (type_name == "string") {