1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 18:28:10 +00:00
serenity/Libraries/LibWeb/DOM
Andreas Kling e1a24edfa9 LibWeb: Reorganize layout system in terms of formatting contexts
This is a first (huge) step towards modernizing the layout architecture
and bringing it closer to spec language.

Layout is now performed by a stack of formatting contexts, operating on
the box tree (or layout tree, if you will.)

There are currently three types of formatting context:

- BlockFormattingContext (BFC)
- InlineFormattingContext (IFC)
- TableFormattingContext (TFC)

Document::layout() creates the initial BlockFormattingContext (BFC)
which lays out the initial containing block (ICB), and then we recurse
through the tree, creating BFC, IFC or TFC as appropriate and handing
over control at the context boundaries.

The majority of this patch is just refactoring the old logic spread out
in LayoutBlock and LayoutTableRowGroup, and turning into these context
classes instead. A lot more cleanup will be needed.

There are many architectural wins here, the main one being that layout
is no longer performed by boxes themselves, which gives us much greater
flexibility in the outer/inner layout of a given box.
2020-11-22 14:36:56 +01:00
..
Attribute.h LibWeb: Move Attribute to its own header file 2020-05-22 21:45:00 +02:00
CharacterData.cpp LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
CharacterData.h LibWeb: Add CharacterData and Text IDL interfaces 2020-08-03 20:50:45 +02:00
CharacterData.idl LibWeb: Add CharacterData and Text IDL interfaces 2020-08-03 20:50:45 +02:00
Comment.cpp LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
Comment.h LibWeb: Add Comment and DocumentFragment bindings, move querySelector... 2020-08-17 22:57:05 +02:00
Comment.idl LibWeb: Add Comment and DocumentFragment bindings, move querySelector... 2020-08-17 22:57:05 +02:00
Document.cpp LibWeb: Reorganize layout system in terms of formatting contexts 2020-11-22 14:36:56 +01:00
Document.h LibWeb: Use standardized encoding names, add encoding attribute to document 2020-11-14 10:14:03 +01:00
Document.idl LibWeb: Use standardized encoding names, add encoding attribute to document 2020-11-14 10:14:03 +01:00
DocumentFragment.cpp LibWeb: Add Comment and DocumentFragment bindings, move querySelector... 2020-08-17 22:57:05 +02:00
DocumentFragment.h Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
DocumentFragment.idl LibWeb: Add Comment and DocumentFragment bindings, move querySelector... 2020-08-17 22:57:05 +02:00
DocumentType.cpp LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
DocumentType.h LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
DocumentType.idl LibWeb: Implement quirks mode detection 2020-07-21 01:08:32 +02:00
DOMImplementation.cpp LibWeb: Add initial implementation of document.implementation 2020-11-13 09:51:07 +01:00
DOMImplementation.h LibWeb: Add initial implementation of document.implementation 2020-11-13 09:51:07 +01:00
DOMImplementation.idl LibWeb: Add initial implementation of document.implementation 2020-11-13 09:51:07 +01:00
Element.cpp LibWeb: Move innerText from DOM::Element to HTML::HTMLElement 2020-11-11 12:15:05 +01:00
Element.h LibWeb: Move innerText from DOM::Element to HTML::HTMLElement 2020-11-11 12:15:05 +01:00
Element.idl LibWeb: Move innerText from DOM::Element to HTML::HTMLElement 2020-11-11 12:15:05 +01:00
ElementFactory.cpp LibWeb: Add almost all obsolete but required IDL attributes 2020-11-12 10:38:26 +01:00
ElementFactory.h LibWeb: Add namespace to Element 2020-10-22 15:24:42 +02:00
Event.h LibWeb: Add UIEvent class (base of MouseEvent, and others) 2020-07-28 19:39:17 +02:00
Event.idl LibWeb: Generate Event and MouseEvent bindings from IDL :^) 2020-06-21 16:12:28 +02:00
EventDispatcher.cpp LibWeb: Fix EventDispatcher::dispatch() 2020-10-15 20:40:35 +02:00
EventDispatcher.h LibWeb: Move DOM event dispatch to its own class 2020-09-06 14:48:14 +02:00
EventListener.cpp LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
EventListener.h LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
EventTarget.cpp LibWeb: Add Bindings::ScriptExecutionContext 2020-09-20 19:22:44 +02:00
EventTarget.h LibWeb: Add Bindings::ScriptExecutionContext 2020-09-20 19:22:44 +02:00
EventTarget.idl LibWeb: Add EventTarget.removeEventListener() 2020-06-21 12:37:34 +02:00
Node.cpp LibWeb: Break reference cycles so DOM::Document actually gets deleted 2020-10-22 23:41:32 +02:00
Node.h LibWeb: Use smart pointers between DOM and Layout tree 2020-10-22 20:26:32 +02:00
Node.idl LibWeb: Add Node.textContent 2020-08-17 21:23:11 +02:00
NonDocumentTypeChildNode.h LibWeb: Add NonDocumentTypeChildNode::next_element_in_pre_order() 2020-08-15 00:05:45 +02:00
NonElementParentNode.h LibWeb: Use RefPtrs more in getElementById() and getElementsByName() 2020-10-07 12:47:17 +02:00
ParentNode.cpp LibWeb: Add more document tests, add comment, text and mixin tests 2020-08-17 22:57:05 +02:00
ParentNode.h LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
Position.cpp LibWeb: Add a basic DOM::Position class 2020-08-02 17:34:50 +02:00
Position.h LibWeb: Allow inserting text at the cursor by typing characters :^) 2020-08-02 17:34:50 +02:00
TagNames.cpp LibWeb: Use modern namespaces and fix clang-format comments in tag names 2020-10-22 15:24:42 +02:00
TagNames.h LibWeb: Use modern namespaces and fix clang-format comments in tag names 2020-10-22 15:24:42 +02:00
Text.cpp LibWeb: Move CSS classes into the Web::CSS namespace 2020-07-26 20:05:15 +02:00
Text.h LibWeb: Add CharacterData and Text IDL interfaces 2020-08-03 20:50:45 +02:00
Text.idl LibWeb: Add CharacterData and Text IDL interfaces 2020-08-03 20:50:45 +02:00
Timer.cpp LibWeb: Remove a bunch of unnecessary <LibJS/Interpreter.h> includes 2020-09-29 17:04:16 +02:00
Timer.h LibWeb: Move DOM classes into the Web::DOM namespace 2020-07-26 20:05:15 +02:00
Window.cpp LibWeb: Make Frame point weakly to Page 2020-11-12 18:29:55 +01:00
Window.h LibWeb: Make DOM::Window into an EventTarget 2020-10-18 13:43:44 +02:00
XMLHttpRequest.cpp LibWeb: Enforce Same-Origin Policy (SOP) for XMLHttpRequest requests 2020-11-01 10:23:08 +01:00
XMLHttpRequest.h LibWeb: Move DOM event dispatch to its own class 2020-09-06 14:48:14 +02:00