diff options
author | bptato <nincsnevem662@gmail.com> | 2025-01-25 18:21:47 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-01-25 18:21:47 +0100 |
commit | 0195586128131d19ef6460ed18a045029671ba7b (patch) | |
tree | ae3b097a88965cc0476cc0553d11bbaafdb96242 | |
parent | 72513f0c4c8159032283c0989efc0399274e6b0b (diff) | |
download | chawan-0195586128131d19ef6460ed18a045029671ba7b.tar.gz |
cascade, layout: blockify flex in cascade
Both simpler and more efficient.
-rw-r--r-- | src/css/cascade.nim | 4 | ||||
-rw-r--r-- | src/css/layout.nim | 23 |
2 files changed, 4 insertions, 23 deletions
diff --git a/src/css/cascade.nim b/src/css/cascade.nim index 137d216b..37661ec0 100644 --- a/src/css/cascade.nim +++ b/src/css/cascade.nim @@ -340,7 +340,9 @@ proc applyDeclarations(rules: RuleList; parent, element: Element; if result{"position"} in {PositionAbsolute, PositionFixed}: if result{"display"} == DisplayInline: result{"display"} = DisplayInlineBlock - elif result{"float"} != FloatNone: + elif result{"float"} != FloatNone or + ctx.parentComputed != nil and + ctx.parentComputed{"display"} == DisplayFlex: result{"display"} = result{"display"}.blockify() if (result{"overflow-x"} in {OverflowVisible, OverflowClip}) != (result{"overflow-y"} in {OverflowVisible, OverflowClip}): diff --git a/src/css/layout.nim b/src/css/layout.nim index b2a45aa6..aaac434a 100644 --- a/src/css/layout.nim +++ b/src/css/layout.nim @@ -3274,29 +3274,8 @@ proc buildBlock(ctx: var BlockBuilderContext) = ctx.inline = nil ctx.flushInlineGroup() -proc buildInnerFlex(ctx: var BlockBuilderContext) = - let inlineComputed = ctx.outer.computed.inheritProperties() - for child in ctx.styledNode.children: - case child.t - of stElement: - let display = child.computed{"display"}.blockify() - let computed = if display != child.computed{"display"}: - let computed = child.computed.copyProperties() - computed{"display"} = display - computed - else: - child.computed - ctx.buildFromElem(child, computed) - of stText: - let text = child.text - if ctx.canBuildAnonInline(ctx.outer.computed, text.data): - ctx.pushInlineText(inlineComputed, ctx.styledNode.element, text) - of stReplacement: - ctx.buildReplacement(child, ctx.styledNode.element, inlineComputed) - ctx.iflush() - proc buildFlex(ctx: var BlockBuilderContext) = - ctx.buildInnerFlex() + ctx.buildInnerBlock() # Flush anonymous tables here, to avoid setting inline layout with tables. ctx.flushTable() # (flush here, because why not) |