ladybird/Userland/Libraries/LibWeb/CSS
Sam Atkins 7daf5cdaff LibWeb: Invalidate layout if pseudo-element style changes
Pseudo-elements' style is only computed while building the layout tree.
This meant that previously, they would not have their style recomputed
in some cases. (Such as when :hover is applied to an ancestor.)

Now, when recomputing an element's style, we also return a full
invalidation if one or more pseudo-elements would exist either before or
after style recomputation.

This heuristic produces some false positives, but no false negatives.
Because pseudo-elements' style is computed during layout building, any
computation done here is then thrown away. So this approach minimises
the amount of wasted style computation. Plus it's simple, until we have
data on what approach would be faster.

This fixes the Acid2 nose becoming blue when the .nose div is hovered.
2024-07-30 09:45:45 +02:00
..
Parser LibWeb/CSS: Treat counters() function with 1 argument as invalid 2024-07-29 12:57:43 -04:00
StyleValues Last: LibWeb: Add counter() and counters() functions to content property 2024-07-26 11:04:30 +01:00
SyntaxHighlighter LibWeb/CSS: Remove tiny-oom propagation from CSS Tokenizer 2024-07-26 17:29:20 +02:00
Angle.cpp AK: Add to_radians and to_degrees math functions 2023-09-10 08:38:29 +01:00
Angle.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
AnimationEvent.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
AnimationEvent.h LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
AnimationEvent.idl LibWeb: Add the AnimationEvent IDL objects 2024-02-16 12:02:11 -07:00
BackdropFilter.h LibWeb: Split FilterValueListStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
CalculatedOr.cpp LibWeb: Add method for converting a FooOrCalculated to a StyleValue 2023-12-30 20:11:24 +01:00
CalculatedOr.h LibWeb: Add method for converting a FooOrCalculated to a StyleValue 2023-12-30 20:11:24 +01:00
Clip.cpp LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
Clip.h LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
ColumnCount.h LibWeb: Implement support for parsing CSS column-count property 2023-09-07 20:16:33 +02:00
ComputedValues.h LibWeb: Implement counter-[increment,reset,set] properties 2024-07-26 11:04:30 +01:00
CountersSet.cpp LibWeb: Give DOM Elements a CountersSet 2024-07-26 11:04:30 +01:00
CountersSet.h LibWeb: Give DOM Elements a CountersSet 2024-07-26 11:04:30 +01:00
CSS.cpp LibWeb: Make Serialize functions infallible 2023-08-22 17:51:48 +01:00
CSS.h LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSS.idl LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSSAnimation.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
CSSAnimation.h LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
CSSAnimation.idl LibWeb: Add the CSSAnimation IDL object 2024-02-16 12:02:11 -07:00
CSSConditionRule.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
CSSConditionRule.h LibWeb: Make CSSConditionRule.conditionText read-only 2024-02-28 22:14:58 +01:00
CSSConditionRule.idl LibWeb: Make CSSConditionRule.conditionText read-only 2024-02-28 22:14:58 +01:00
CSSFontFaceRule.cpp LibWeb: Rename CSS::FontFace to CSS::ParsedFontFace 2024-05-08 10:39:16 +02:00
CSSFontFaceRule.h LibWeb: Rename CSS::FontFace to CSS::ParsedFontFace 2024-05-08 10:39:16 +02:00
CSSFontFaceRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSGroupingRule.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
CSSGroupingRule.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CSSGroupingRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSImportRule.cpp AK+LibURL: Move AK::URL into a new URL library 2024-03-18 14:06:28 -04:00
CSSImportRule.h AK+LibURL: Move AK::URL into a new URL library 2024-03-18 14:06:28 -04:00
CSSImportRule.idl LibWeb: Use 'FIXME' extended attribute where possible 2024-05-19 16:24:11 +02:00
CSSKeyframeRule.cpp LibWeb: Implement CSSStyleDeclaration.parentRule 2024-06-14 20:45:37 +02:00
CSSKeyframeRule.h LibWeb: Implement CSSKeyframesRule.cssRuleList 2024-06-14 20:45:37 +02:00
CSSKeyframeRule.idl IDL: Add missing #imports 2023-11-11 08:51:51 +01:00
CSSKeyframesRule.cpp LibWeb: Make CSSKeyframeRule.parentRule actually point to parent rule 2024-06-14 20:45:37 +02:00
CSSKeyframesRule.h LibWeb: Make CSSKeyframeRule.parentRule actually point to parent rule 2024-06-14 20:45:37 +02:00
CSSKeyframesRule.idl LibWeb: Implement CSSKeyframesRule.cssRuleList 2024-06-14 20:45:37 +02:00
CSSMediaRule.cpp LibWeb: Serialize empty media rules with a single newline 2024-05-01 07:21:21 +02:00
CSSMediaRule.h LibWeb: Make CSSConditionRule.conditionText read-only 2024-02-28 22:14:58 +01:00
CSSMediaRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSNamespaceRule.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
CSSNamespaceRule.h LibWeb: Port CSSNamespaceRule to FlyString 2023-12-01 16:03:58 +01:00
CSSNamespaceRule.idl LibWeb: Format all .idl files to use four space indentation 2024-01-18 14:00:06 +01:00
CSSNumericType.cpp LibWeb: Implement CounterStyleValue 2024-07-26 11:04:30 +01:00
CSSNumericType.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
CSSRule.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
CSSRule.h LibWeb: Return String from CSSStyleRule::selector_text() 2023-12-01 20:48:13 +01:00
CSSRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSRuleList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
CSSRuleList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
CSSRuleList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleDeclaration.cpp LibWeb: Implement CSSStyleDeclaration.parentRule 2024-06-14 20:45:37 +02:00
CSSStyleDeclaration.h LibWeb: Implement CSSStyleDeclaration.parentRule 2024-06-14 20:45:37 +02:00
CSSStyleDeclaration.idl LibWeb: Remove unnecessary FIXME marker for CSSStyleDeclaration.cssFloat 2024-06-14 20:45:37 +02:00
CSSStyleRule.cpp LibWeb: Implement CSSStyleDeclaration.parentRule 2024-06-14 20:45:37 +02:00
CSSStyleRule.h LibWeb: Make CSSStyleRule::declaration() return a more specific type 2024-03-19 16:48:22 +01:00
CSSStyleRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleSheet.cpp LibJS+LibWeb: Use new Cell::Visitor helpers to avoid manual iteration 2024-04-16 07:40:01 +02:00
CSSStyleSheet.h LibJS: Make JS::Cell a Weakable 2024-05-04 21:42:59 +02:00
CSSStyleSheet.idl LibWeb: Remove first rule if no argument is given for remove_rule() 2024-02-24 21:59:28 +01:00
CSSSupportsRule.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
CSSSupportsRule.h LibWeb: Make CSSConditionRule.conditionText read-only 2024-02-28 22:14:58 +01:00
CSSSupportsRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSTransition.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
CSSTransition.h LibWeb: Remove TimingFunction in favor of EasingStyleValue::Function 2024-06-16 07:12:46 +02:00
CSSTransition.idl LibWeb: Add the CSSTransition IDL object 2024-03-29 21:58:12 +01:00
Default.css LibWeb: Make details and summary elements display:block in the UA style 2024-07-20 13:09:28 +02:00
Display.cpp LibWeb: Move <display-foo> definitions into Enums.json 2023-09-11 17:03:22 +01:00
Display.h LibWeb: Add display: math 2023-09-11 17:03:22 +01:00
EasingFunctions.json Meta/CodeGenerators+LibWeb: Implement parsing CSS easing functions 2023-07-13 05:10:41 +02:00
EdgeRect.cpp LibWeb: Don't convert to floating point in CSS::EdgeRect 2023-09-01 09:40:14 +02:00
EdgeRect.h LibWeb: Don't convert to floating point in CSS::EdgeRect 2023-09-01 09:40:14 +02:00
ElementCSSInlineStyle.idl LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin 2023-03-20 20:37:40 -04:00
Enums.json LibWeb: Support content-visibility css 2024-07-19 09:04:30 +01:00
Flex.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Flex.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
FontFace.cpp LibWeb/CSS: Make CSS Parser::create() infallible 2024-07-26 17:29:20 +02:00
FontFace.h LibGfx+LibWeb: Rename Gfx::VectorFont to Gfx::Typeface 2024-06-30 13:09:23 +02:00
FontFace.idl LibWeb: Support loading FontFaces constructed with binary data 2024-05-14 12:31:10 -06:00
FontFaceSet.cpp LibWeb/CSS: Implement FontFaceSet.onloadingerror 2024-06-07 19:30:35 +02:00
FontFaceSet.h LibWeb/CSS: Implement FontFaceSet.onloadingerror 2024-06-07 19:30:35 +02:00
FontFaceSet.idl LibWeb/CSS: Implement FontFaceSet.onloadingerror 2024-06-07 19:30:35 +02:00
Frequency.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Frequency.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
GeneralEnclosed.h LibWeb: Port GeneralEnclosed to new Strings 2023-02-19 00:51:16 +01:00
GridTrackPlacement.cpp LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackPlacement.h LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackSize.cpp LibWeb: Implement grid-template function fit-content() 2024-07-25 13:12:26 +02:00
GridTrackSize.h LibWeb: Implement grid-template function fit-content() 2024-07-25 13:12:26 +02:00
Identifiers.json LibWeb: Handle inline-start and inline-end as float values 2024-07-10 17:41:18 +02:00
Length.cpp LibGfx: Remove Bitmap::glyph_spacing() 2024-06-04 18:45:30 +02:00
Length.h LibWeb: Let Length::to_px(Layout::Node) be inline for absolute lengths 2024-03-02 13:00:09 +01:00
LengthBox.cpp LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
LengthBox.h Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LinkStyle.idl LibWeb: Extract the LinkStyle IDL mixin 2022-07-29 17:15:49 +01:00
MathFunctions.json LibWeb: Generate parsing code for CSS math functions 2023-07-15 10:23:33 +02:00
MediaFeatures.json LibWeb: Reformat inconsistent CSS JSON files 2023-08-02 12:49:46 +01:00
MediaList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
MediaList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
MediaList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
MediaQuery.cpp LibWeb: Remove is_media_feature_name function 2024-06-22 14:57:47 +02:00
MediaQuery.h LibWeb: Remove is_media_feature_name function 2024-06-22 14:57:47 +02:00
MediaQueryList.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
MediaQueryList.h LibWeb: Use String for getting/setting MediaQueryList media 2023-12-01 20:48:13 +01:00
MediaQueryList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
MediaQueryListEvent.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
MediaQueryListEvent.h LibWeb: Put most LibWeb GC objects in type-specific heap blocks 2023-11-19 22:00:48 +01:00
MediaQueryListEvent.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
Number.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
ParsedFontFace.cpp LibWeb: Rename CSS::FontFace to CSS::ParsedFontFace 2024-05-08 10:39:16 +02:00
ParsedFontFace.h LibWeb: Rename CSS::FontFace to CSS::ParsedFontFace 2024-05-08 10:39:16 +02:00
Percentage.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
PercentageOr.cpp LibWeb: Add Length::resolved() overload for CSSPixels 2023-08-30 20:09:15 +02:00
PercentageOr.h LibWeb: Add PercentageOr<Length>::to_px() fast path for absolute lengths 2024-03-02 13:00:09 +01:00
PreferredColorScheme.cpp Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case 2023-03-10 13:15:44 +01:00
PreferredColorScheme.h LibWeb: Use StringView in CSS::PreferredColorScheme 2023-02-15 12:48:26 -05:00
PreferredContrast.cpp LibWeb: Add Contrast preference 2024-06-13 11:18:38 +02:00
PreferredContrast.h LibWeb: Add Contrast preference 2024-06-13 11:18:38 +02:00
PreferredMotion.cpp LibWeb: Add motion preference 2024-06-18 10:31:54 -04:00
PreferredMotion.h LibWeb: Add motion preference 2024-06-18 10:31:54 -04:00
Properties.json LibWeb: Implement CounterStyleValue 2024-07-26 11:04:30 +01:00
PseudoClasses.json LibWeb: Implement the :has() pseudo-class 2024-07-15 11:52:03 +01:00
QuirksMode.css LibWeb: Flesh out the default "quirks mode" style sheet 2022-09-20 14:48:07 +02:00
Ratio.cpp LibWeb: Limit ratio parts to 5 decimal places when printing 2024-03-03 19:50:25 +01:00
Ratio.h LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
Resolution.cpp LibWeb: Make resolution calculable 2023-12-30 20:11:24 +01:00
Resolution.h LibWeb: Make resolution calculable 2023-12-30 20:11:24 +01:00
ResolvedCSSStyleDeclaration.cpp LibWeb: Add support for -webkit-text-fill-color 2024-07-10 10:25:04 -06:00
ResolvedCSSStyleDeclaration.h LibWeb: Move use pseudo element styles from TreeBuilder to StyleComputer 2023-12-17 23:12:34 +01:00
Screen.cpp LibWeb: Stub out Window-Management proposal extensions to Screen API 2024-05-27 17:24:51 -06:00
Screen.h LibWeb: Stub out Window-Management proposal extensions to Screen API 2024-05-27 17:24:51 -06:00
Screen.idl LibWeb: Stub out Window-Management proposal extensions to Screen API 2024-05-27 17:24:51 -06:00
ScreenOrientation.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
ScreenOrientation.h LibWeb: Add stubs for the Screen Orientation API 2024-04-03 10:09:58 +01:00
ScreenOrientation.idl LibWeb: Add stubs for the Screen Orientation API 2024-04-03 10:09:58 +01:00
Selector.cpp LibWeb: Implement the :has() pseudo-class 2024-07-15 11:52:03 +01:00
Selector.h LibWeb: Use an ancestor filter to quickly reject many CSS selectors 2024-03-22 18:27:32 +01:00
SelectorEngine.cpp LibWeb: Implement :host and :host(<compound-selector>) selector matching 2024-07-23 18:03:46 +02:00
SelectorEngine.h LibWeb: Implement :host and :host(<compound-selector>) selector matching 2024-07-23 18:03:46 +02:00
Serialize.cpp LibWeb: Limit color alpha values to 4 decimal places when serializing 2024-03-03 19:50:25 +01:00
Serialize.h LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx 2023-12-10 17:32:04 +01:00
Size.cpp LibWeb: Forbid using CSS::Length as reference value in resolved() 2024-01-07 09:03:57 +01:00
Size.h LibWeb: Forbid using CSS::Length as reference value in resolved() 2024-01-07 09:03:57 +01:00
StyleComputer.cpp LibWeb: Implement :host and :host(<compound-selector>) selector matching 2024-07-23 18:03:46 +02:00
StyleComputer.h LibGfx+LibWeb: Rename Gfx::VectorFont to Gfx::Typeface 2024-06-30 13:09:23 +02:00
StyleInvalidation.cpp LibWeb: Support content-visibility css 2024-07-19 09:04:30 +01:00
StyleInvalidation.h LibWeb: Invalidate layout if pseudo-element style changes 2024-07-30 09:45:45 +02:00
StyleProperties.cpp Last: LibWeb: Add counter() and counters() functions to content property 2024-07-26 11:04:30 +01:00
StyleProperties.h Last: LibWeb: Add counter() and counters() functions to content property 2024-07-26 11:04:30 +01:00
StyleProperty.cpp LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
StyleProperty.h LibWeb: Port custom properties to FlyString 2023-11-07 11:33:41 +01:00
StyleSheet.cpp LibWeb: Align StyleSheet title getter with the specification 2024-04-29 08:10:38 +02:00
StyleSheet.h LibWeb: Align StyleSheet title getter with the specification 2024-04-29 08:10:38 +02:00
StyleSheet.idl LibWeb: Align StyleSheet title getter with the specification 2024-04-29 08:10:38 +02:00
StyleSheetList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
StyleSheetList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
StyleSheetList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
StyleValue.cpp LibWeb: Implement CounterStyleValue 2024-07-26 11:04:30 +01:00
StyleValue.h LibWeb: Implement CounterStyleValue 2024-07-26 11:04:30 +01:00
Supports.cpp LibWeb: Don't leak entire realm after parsing CSS @supports rule 2024-04-05 08:14:19 +02:00
Supports.h LibWeb: Don't leak entire realm after parsing CSS @supports rule 2024-04-05 08:14:19 +02:00
SystemColor.cpp LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
SystemColor.h LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
Time.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Time.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Transformation.cpp LibWeb/CSS: Ensure length is absolute before converting to pixels 2024-02-21 19:38:17 +01:00
Transformation.h LibWeb: Allow percentages on CSS transform scale functions 2024-01-10 09:48:25 +01:00
TransformFunctions.json LibWeb: Add missing CSS Transforms Module Level 2 functions 2024-01-10 09:48:25 +01:00
VisualViewport.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
VisualViewport.h LibWeb: Put most LibWeb GC objects in type-specific heap blocks 2023-11-19 22:00:48 +01:00
VisualViewport.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00