mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:57:44 +00:00
LibWeb: Add ComputedCSSSstyleDeclaration and support 2 properties :^)
getComputedStyle(element) now returns a ComputedCSSStyleDeclaration object, which is a live view of the computed style of a given element. This works by ComputedCSSStyleDeclaration being a wrapper around an element pointer. When you ask it for a CSS property, it gets the latest computed style values from the element and returns them as a CSS::StyleProperty object. This first cut adds support for computed 'color' and 'display'. In case the element doesn't have a corresponding node in the layout tree, we fall back to using specified style instead. This is achieved by performing an on-the-fly style resolution for the individual element and then grabbing the requested property from that resolved style.
This commit is contained in:
parent
caa9e1f622
commit
8b27bc078c
4 changed files with 146 additions and 4 deletions
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <LibGUI/DisplayLink.h>
|
||||
#include <LibJS/Runtime/FunctionObject.h>
|
||||
#include <LibWeb/CSS/ComputedCSSStyleDeclaration.h>
|
||||
#include <LibWeb/DOM/Document.h>
|
||||
#include <LibWeb/DOM/Event.h>
|
||||
#include <LibWeb/DOM/EventDispatcher.h>
|
||||
|
@ -189,10 +190,7 @@ Page const* Window::page() const
|
|||
|
||||
NonnullRefPtr<CSS::CSSStyleDeclaration> Window::get_computed_style(DOM::Element& element) const
|
||||
{
|
||||
dbgln("Generating CSS computed style for {} @ {:p}", element.node_name(), &element);
|
||||
Vector<CSS::StyleProperty> properties;
|
||||
HashMap<String, CSS::StyleProperty> custom_properties;
|
||||
return CSS::PropertyOwningCSSStyleDeclaration::create(move(properties), move(custom_properties));
|
||||
return CSS::ComputedCSSStyleDeclaration::create(element);
|
||||
}
|
||||
|
||||
NonnullRefPtr<CSS::MediaQueryList> Window::match_media(String media)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue