mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:37:37 +00:00
LibWeb: Move line boxes from Layout::Box to BlockContainer
Per the spec, only a BlockContainer" can have line boxes, so let's not clutter up every Layout::Box with line boxes. This also allows us to establish an invariant that BFC and IFC always operate on a Layout::BlockContainer. Note that if BlockContainer has all block-level children, its line boxes are not used for anything. They are only used in the all inline-level children scenario.
This commit is contained in:
parent
a0bea52a5f
commit
f73aa8e2bd
13 changed files with 80 additions and 74 deletions
|
@ -8,17 +8,18 @@
|
|||
|
||||
#include <AK/Types.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
#include <LibWeb/Layout/BlockContainer.h>
|
||||
#include <LibWeb/Layout/FormattingContext.h>
|
||||
|
||||
namespace Web::Layout {
|
||||
|
||||
class InlineFormattingContext final : public FormattingContext {
|
||||
public:
|
||||
InlineFormattingContext(Box& containing_block, FormattingContext* parent);
|
||||
InlineFormattingContext(BlockContainer& containing_block, FormattingContext* parent);
|
||||
~InlineFormattingContext();
|
||||
|
||||
Box& containing_block() { return context_box(); }
|
||||
const Box& containing_block() const { return context_box(); }
|
||||
BlockContainer& containing_block() { return static_cast<BlockContainer&>(context_box()); }
|
||||
BlockContainer const& containing_block() const { return static_cast<BlockContainer const&>(context_box()); }
|
||||
|
||||
virtual void run(Box&, LayoutMode) override;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue