diff options
author | bptato <nincsnevem662@gmail.com> | 2024-05-30 22:25:56 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-05-30 22:28:00 +0200 |
commit | a78fa4ee235006239bf9e81d8d83adc59415b524 (patch) | |
tree | 7349f5ad87e357fe7f91a61870043da0c9e9f743 | |
parent | 4af483ee6a6a3ab5853174c2399dc8942d8b2026 (diff) | |
download | chawan-a78fa4ee235006239bf9e81d8d83adc59415b524.tar.gz |
layout: fix a width sizing bug
As expected, the mystery line was just hiding another bug. (In particular, indefinite containing size constraints were not denied in resolveContentWidth, so it only (accidentally) worked with stretched sizes.)
-rw-r--r-- | src/layout/engine.nim | 5 | ||||
-rw-r--r-- | test/layout/max-width-sets-main-width-indefinite-parent.color.expected | 2 | ||||
-rw-r--r-- | test/layout/max-width-sets-main-width-indefinite-parent.html | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/layout/engine.nim b/src/layout/engine.nim index 4d532364..ba9248ca 100644 --- a/src/layout/engine.nim +++ b/src/layout/engine.nim @@ -859,7 +859,7 @@ func spx(l: CSSLength; lctx: LayoutContext; p: SizeConstraint; proc resolveContentWidth(sizes: var ResolvedSizes; widthpx: LayoutUnit; containingWidth: SizeConstraint; computed: CSSComputedValues; isauto = false) = - if not sizes.space.w.isDefinite(): + if not sizes.space.w.isDefinite() or not containingWidth.isDefinite(): # width is indefinite, so no conflicts can be resolved here. return let total = widthpx + sizes.margin.dimSum(dtHorizontal) + @@ -940,9 +940,6 @@ proc resolveBlockWidth(sizes: var ResolvedSizes; sizes.maxWidth = maxWidth if sizes.space.w.t in {scStretch, scFitContent} and maxWidth < sizes.space.w.u or sizes.space.w.t == scMaxContent: - # Warning: the following line seems to make no sense, but *is* needed. - #TODO figure out why. - sizes.space.w = stretch(maxWidth) if sizes.space.w.t == scStretch: # available width would stretch over max-width sizes.space.w = stretch(maxWidth) diff --git a/test/layout/max-width-sets-main-width-indefinite-parent.color.expected b/test/layout/max-width-sets-main-width-indefinite-parent.color.expected new file mode 100644 index 00000000..9ef30269 --- /dev/null +++ b/test/layout/max-width-sets-main-width-indefinite-parent.color.expected @@ -0,0 +1,2 @@ + [48;2;0;0;255mtesting testing testing testing testing[49m + diff --git a/test/layout/max-width-sets-main-width-indefinite-parent.html b/test/layout/max-width-sets-main-width-indefinite-parent.html new file mode 100644 index 00000000..524a4ebe --- /dev/null +++ b/test/layout/max-width-sets-main-width-indefinite-parent.html @@ -0,0 +1,4 @@ +<table> +<tr> +<td> +<div style="max-width: 100ch; background: blue">testing testing testing testing testing |