Andreas Kling
32bff52c25
LibWeb: Use Vector::in_reverse() in DOM::EventDispatcher
2022-04-13 19:52:25 +02:00
Andreas Kling
b0008c0934
LibWeb: Use Vector::in_reverse() in HTML::StackOfOpenElements
2022-04-13 19:52:25 +02:00
Andreas Kling
6712bbc0ee
LibWeb: Tidy up Layout::TreeBuilder ancestor stack a little bit
...
- Make it a vector of references since we never put null pointers on
the ancestor stack.
- Use Vector::in_reverse() to iterate backwards.
2022-04-13 19:52:25 +02:00
Andreas Kling
5d6c5571c4
LibWeb: Map <pre wrap> presentational hint to CSS white-space:pre-wrap
2022-04-13 16:40:46 +02:00
Andreas Kling
de5de4d99a
LibWeb: Fix typo in CSS::Display::is_outside_and_inside() name
2022-04-13 16:40:46 +02:00
Sam Atkins
431a9938a8
LibWeb: Rename StyleRule -> Rule
...
This name is what's used in the spec, and is a little less confusing.
2022-04-12 23:03:46 +02:00
Sam Atkins
cf24dc2e0c
LibWeb: Break friendship between CSS StyleRule and Parser
...
As before, this requires deviating from the spec slightly to create the
StyleRule fully-formed instead of creating it empty and then modifying
its internals.
2022-04-12 23:03:46 +02:00
Sam Atkins
4bdfc2bb32
LibWeb: Make StyleRule.m_at_rule_name a FlyString
2022-04-12 23:03:46 +02:00
Sam Atkins
d67e817d8e
LibWeb: Break friendship between CSS Function and Parser
...
Again, this means deviating from the spec by creating a complete
Function in one go instead of creating it empty and then poking at its
internals.
2022-04-12 23:03:46 +02:00
Sam Atkins
7d67e428a6
LibWeb: Make Function.m_name a FlyString
2022-04-12 23:03:46 +02:00
Sam Atkins
128d08ecef
LibWeb: Empend instead of Appending DeclarationOrAtRules
2022-04-12 23:03:46 +02:00
Sam Atkins
782cdd6b91
LibWeb: Break friendship between CSS DeclarationOrAtRule and Parser
...
This actually wasn't needed for anything, hooray!
2022-04-12 23:03:46 +02:00
Sam Atkins
269810b954
LibWeb: Break friendship between CSS Declaration and Parser
...
This means deviating slightly from the spec in order to construct a
fully-initialized Declaration instead of creating an empty one and then
poking at its internals.
DeclarationOrAtRule should probably use a Variant, but for now, making
its Declaration member optional is quick and easy.
2022-04-12 23:03:46 +02:00
Sam Atkins
69496f4afd
LibWeb: Make Declaration.m_name a FlyString
2022-04-12 23:03:46 +02:00
Sam Atkins
f235da27d9
LibWeb: Break friendship between CSS Block and Parser
...
This means deviating a little from the spec, so that we create a
complete Block in one go instead of creating an empty one and then
poking at its internals.
2022-04-12 23:03:46 +02:00
Sam Atkins
7128e8e2e6
LibWeb: Break friendship between CSS Number and Tokenizer
2022-04-12 23:03:46 +02:00
Sam Atkins
bf786d66b1
LibWeb: Move Token and Tokenizer into Parser namespace
2022-04-12 23:03:46 +02:00
Sam Atkins
7272997b1b
LibWeb: Move StyleRule to Parser namespace
2022-04-12 23:03:46 +02:00
Sam Atkins
add6babef4
LibWeb: Move Declaration and DeclarationOrAtRule into Parser namespace
2022-04-12 23:03:46 +02:00
Sam Atkins
5f316cffba
LibWeb: Rename StyleRules.cpp -> StyleRule.cpp and tidy up
...
`append_with_to_string()` is no longer needed now that ComponentValue
has a Formatter.
2022-04-12 23:03:46 +02:00
Sam Atkins
ba7149a27d
LibWeb: Move DeclarationOrAtRule code into DeclarationOrAtRule.cpp
2022-04-12 23:03:46 +02:00
Sam Atkins
92320f3000
LibWeb: Add missing include to ComponentValue.h
2022-04-12 23:03:46 +02:00
Sam Atkins
6848a0ef05
LibWeb: Move Declaration code into Declaration.cpp
2022-04-12 23:03:46 +02:00
Sam Atkins
3e49036edf
LibWeb: Move/rename StyleBlockRule to Parser::Block
2022-04-12 23:03:46 +02:00
Sam Atkins
624df40e20
LibWeb: Move StyleBlockRule code into StyleBlockRule.cpp
2022-04-12 23:03:46 +02:00
Sam Atkins
e0b2ebcc7b
LibWeb: Move/rename StyleFunctionRule to Parser::Function
2022-04-12 23:03:46 +02:00
Sam Atkins
084780a0a2
LibWeb: Move StyleFunctionRule code into StyleFunctionRule.cpp
2022-04-12 23:03:46 +02:00
Sam Atkins
d2b8686ae4
LibWeb: Add Formatter for ComponentValues
2022-04-12 23:03:46 +02:00
Sam Atkins
fff2c35f51
LibWeb: Move ComponentValue to CSS::Parser namespace
2022-04-12 23:03:46 +02:00
Sam Atkins
c449cabae3
LibWeb: Move CSS Parser into new Web::CSS::Parser namespace
...
The goal here is to move the parser-internal classes into this namespace
so they can have more convenient names without causing collisions. The
Parser itself won't collide, and would be more convenient to just
remain `CSS::Parser`, but having a namespace and a class with the same
name makes C++ unhappy.
2022-04-12 23:03:46 +02:00
Sam Atkins
1304bf5a21
LibWeb: Stop manually forward-declaring types in CSS Parser.h
2022-04-12 23:03:46 +02:00
Sam Atkins
b7453eafbb
LibWeb: Move ComponentValue code into ComponentValue.cpp
2022-04-12 23:03:46 +02:00
Igor Pissolati
00099a8ade
LibWeb: Bring HTMLOptionElement closer to spec
2022-04-12 19:42:16 +02:00
Igor Pissolati
ae519c6fef
LibWeb: Improve HTMLImageElement::{width,height}()
...
With this change, it will correctly return the width/height when the
image element has an assigned width/height attribute.
2022-04-12 19:42:16 +02:00
Igor Pissolati
e5d978af9f
LibWeb: Bring HTMLImageElement closer to spec
2022-04-12 19:42:16 +02:00
Igor Pissolati
682a4a347a
LibWeb: Bring Node closer to spec
...
Node::base_uri() correct implementation was left as a FIXME.
2022-04-12 19:42:16 +02:00
Igor Pissolati
e2fa5c0cda
LibWeb: Bring Document closer to spec
2022-04-12 19:42:16 +02:00
Andreas Kling
b3d85afd92
LibWeb: Make Layout::Box::set_needs_display() work for all boxes
...
For inline-blocks and inline replaced elements, we previously fell into
a code path that tried to find a corresponding line box fragment to
invalidate. However, we don't need to do any of that, all we need to do
is get the absolute rect from our paintable, and invalidate that.
This makes CRC2D invalidations happen immediately instead of as a side
effect of some other invalidation.
2022-04-12 00:11:48 +02:00
Andreas Kling
f4f850aaf2
LibWeb: Support CSSRule.type
...
We already had the CSSRule::Type enum, but the values were not aligned
with the CSSOM spec. This patch takes care of that, and then exposes
the type of a CSSRule to JavaScript via the "type" attribute.
2022-04-11 21:10:08 +02:00
Andreas Kling
a0ba49a50a
LibWeb: Support CSSStyleDeclaration.getPropertyPriority()
2022-04-11 21:10:07 +02:00
Andreas Kling
a8afb883c1
LibWeb: Implement CSS declaration block's "updating flag"
...
This flag is used to prevent reparsing the style attribute after it is
automatically updated after using the CSSOM API to mutate style.
2022-04-11 21:10:07 +02:00
Andreas Kling
66618a666b
LibWeb: Implement CSSStyleDeclaration.{set,remove}Property close to spec
...
We already had setProperty() but it was full of ad-hoc idiosyncracies.
This patch aligns setProperty() with the CSSOM spec and also implements
removeProperty() since that's actually needed by setProperty() now.
Some things fixed by this:
- We now support the "priority" parameter to setProperty()
- Element "style" attributes now update to reflect CSSOM mutations
2022-04-11 21:10:07 +02:00
Simon Danner
bd90498332
LibWeb: Add SVGDefsElement
...
* Similarly to clipPath, this doesn't need to get rendered, so return no
LayoutNode.
2022-04-11 20:19:10 +02:00
Andreas Kling
b4a8be5dc9
LibWeb: Reset canvas elements when their width/height attribute are set
2022-04-11 03:05:19 +02:00
Andreas Kling
88ef1bff38
LibWeb: Add fast path for CRC2D.drawImage() with simple transform
...
If the transform is a simple translation, we don't need to run the big
and slow transform rasterizer.
2022-04-11 02:29:37 +02:00
Andreas Kling
57feb0f3ec
LibWeb: Add missing null check of independent formatting context in FFC
...
When calling layout_inside() on a flex item that can't have children of
its own, layout_inside() will not return an independent formatting
context, so we need to handle that case here.
2022-04-11 01:20:24 +02:00
Andreas Kling
fc8c4ea23f
LibWeb: Let BFC compute width for block-level replaced elements
...
We never really hit this code path before, but now that IMG elements can
be block-level, we need to get them hooked up with box model metrics.
2022-04-11 01:04:09 +02:00
Andreas Kling
edfa4508a5
LibWeb: Create a no-op formatting context for childless replaced boxes
...
This is a hack that allows block-level replaced elements to be flex
items. Flexbox layout currently assumes (in many places) that it's
always possible to create an independent formatting context for each of
its items.
2022-04-11 01:03:47 +02:00
Andreas Kling
b1a6a8600a
LibWeb: Honor "display:block" on IMG elements
...
Previously we forced all image elements to be inline-level. Now they can
participate in block layout if they prefer. :^)
2022-04-11 01:03:47 +02:00
Andreas Kling
ca2807ba42
AK: Honor box's own intrinsic size in calculate_intrinsic_sizes()
...
If a layout box claims to have both intrinsic width and height, we can
simply return those instead of performing any kind of layout.
2022-04-11 00:11:53 +02:00