浏览代码

LibWeb: Parse the CSS `opacity` property with `strtof()` for now

With the new parser, we started interpreting the `opacity` property as a
string value, which made it turn into `auto` and so anything with
opacity ended up not visible (e.g the header on google.com)

This patch restores our old behavior for `opacity` by interpreting it
as a numeric value with optional decimals.
Andreas Kling 3 年之前
父节点
当前提交
f58e2350dc
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

+ 6 - 0
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -2869,6 +2869,12 @@ RefPtr<StyleValue> Parser::parse_css_value(ParsingContext const& context, Proper
         }
         }
     }
     }
 
 
+    // FIXME: This is a hack for the `opacity` property which should really take an <alpha-value>
+    if (property_id == PropertyID::Opacity && component_value.is(Token::Type::Number)) {
+        String string = component_value.token().number_string_value();
+        return LengthStyleValue::create(Length::make_px(strtof(string.characters(), nullptr)));
+    }
+
     if (auto builtin_or_dynamic = parse_builtin_or_dynamic_value(context, component_value))
     if (auto builtin_or_dynamic = parse_builtin_or_dynamic_value(context, component_value))
         return builtin_or_dynamic;
         return builtin_or_dynamic;