mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 23:37:35 +00:00
LibWeb: Include standard SVG user agent style sheet
For now, part of this is commented-out. Our current implementations of `<mask>` and `<symbol>` rely on creating layout nodes, so they can't be `display: none`.
This commit is contained in:
parent
a6131634f1
commit
ae4b8d86df
7 changed files with 68 additions and 2 deletions
|
@ -655,6 +655,7 @@ set(GENERATED_SOURCES
|
|||
CSS/TransformFunctions.cpp
|
||||
CSS/ValueID.cpp
|
||||
MathML/MathMLStyleSheetSource.cpp
|
||||
SVG/SVGStyleSheetSource.cpp
|
||||
)
|
||||
|
||||
serenity_lib(LibWeb web)
|
||||
|
|
|
@ -239,6 +239,16 @@ static CSSStyleSheet& mathml_stylesheet(DOM::Document const& document)
|
|||
return *sheet;
|
||||
}
|
||||
|
||||
static CSSStyleSheet& svg_stylesheet(DOM::Document const& document)
|
||||
{
|
||||
static JS::Handle<CSSStyleSheet> sheet;
|
||||
if (!sheet.cell()) {
|
||||
extern StringView svg_stylesheet_source;
|
||||
sheet = JS::make_handle(parse_css_stylesheet(CSS::Parser::ParsingContext(document), svg_stylesheet_source));
|
||||
}
|
||||
return *sheet;
|
||||
}
|
||||
|
||||
template<typename Callback>
|
||||
void StyleComputer::for_each_stylesheet(CascadeOrigin cascade_origin, Callback callback) const
|
||||
{
|
||||
|
@ -247,6 +257,7 @@ void StyleComputer::for_each_stylesheet(CascadeOrigin cascade_origin, Callback c
|
|||
if (document().in_quirks_mode())
|
||||
callback(quirks_mode_stylesheet(document()));
|
||||
callback(mathml_stylesheet(document()));
|
||||
callback(svg_stylesheet(document()));
|
||||
}
|
||||
if (cascade_origin == CascadeOrigin::User) {
|
||||
if (m_user_style_sheet)
|
||||
|
|
39
Userland/Libraries/LibWeb/SVG/Default.css
Normal file
39
Userland/Libraries/LibWeb/SVG/Default.css
Normal file
|
@ -0,0 +1,39 @@
|
|||
/* https://svgwg.org/svg2-draft/styling.html#UAStyleSheet */
|
||||
|
||||
@namespace url(http://www.w3.org/2000/svg);
|
||||
@namespace xml url(http://www.w3.org/XML/1998/namespace);
|
||||
|
||||
svg:not(:root), image, marker, pattern, symbol { overflow: hidden; }
|
||||
|
||||
*:not(svg),
|
||||
*:not(foreignObject) > svg {
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
|
||||
*[xml|space=preserve] {
|
||||
text-space-collapse: preserve-spaces;
|
||||
}
|
||||
|
||||
/* FIXME: Allow setting the rest of these to `display: none`.
|
||||
Currently that breaks <use> and <mask> and probably others. */
|
||||
desc, title, metadata,
|
||||
pattern, linearGradient, radialGradient,
|
||||
script, style {
|
||||
display: none !important;
|
||||
}
|
||||
/*
|
||||
defs,
|
||||
clipPath, mask, marker,
|
||||
desc, title, metadata,
|
||||
pattern, linearGradient, radialGradient,
|
||||
script, style,
|
||||
symbol {
|
||||
display: none !important;
|
||||
}
|
||||
*/
|
||||
:host(use) > symbol {
|
||||
display: inline !important;
|
||||
}
|
||||
:link, :visited {
|
||||
cursor: pointer;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue