瀏覽代碼

LibWeb: Support min-inline-size & max-inline-size

Currently this assumes that writing-mode is horizontal, and therefore
only affects the min-width/max-width
Karthik Karanth 2 年之前
父節點
當前提交
733b74af7c
共有 2 個文件被更改,包括 30 次插入0 次删除
  1. 10 0
      Userland/Libraries/LibWeb/CSS/Properties.json
  2. 20 0
      Userland/Libraries/LibWeb/CSS/StyleComputer.cpp

+ 10 - 0
Userland/Libraries/LibWeb/CSS/Properties.json

@@ -1227,6 +1227,11 @@
       "unitless-length"
     ]
   },
+  "max-inline-size": {
+    "logical-alias-for": "max-width",
+    "__comment": "Also a logical alias for max-height",
+    "initial": "none"
+  },
   "max-width": {
     "inherited": false,
     "initial": "none",
@@ -1257,6 +1262,11 @@
       "unitless-length"
     ]
   },
+  "min-inline-size": {
+    "logical-alias-for": "min-width",
+    "__comment": "Also a logical alias for min-height",
+    "initial": "0"
+  },
   "min-width": {
     "inherited": false,
     "initial": "auto",

+ 20 - 0
Userland/Libraries/LibWeb/CSS/StyleComputer.cpp

@@ -675,6 +675,26 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope
         return;
     }
 
+    if (property_id == CSS::PropertyID::MaxInlineSize || property_id == CSS::PropertyID::MinInlineSize) {
+        // FIXME: Use writing-mode to determine if we should set width or height.
+        bool is_horizontal = true;
+
+        if (is_horizontal) {
+            if (property_id == CSS::PropertyID::MaxInlineSize) {
+                style.set_property(CSS::PropertyID::MaxWidth, value);
+            } else {
+                style.set_property(CSS::PropertyID::MinWidth, value);
+            }
+        } else {
+            if (property_id == CSS::PropertyID::MaxInlineSize) {
+                style.set_property(CSS::PropertyID::MaxHeight, value);
+            } else {
+                style.set_property(CSS::PropertyID::MinHeight, value);
+            }
+        }
+        return;
+    }
+
     style.set_property(property_id, value);
 }