about summary refs log tree commit diff stats
path: root/src/css
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-11-14 19:28:14 +0100
committerbptato <nincsnevem662@gmail.com>2024-11-14 19:41:17 +0100
commit3415826c80f3a3ad9d090e18ee9d3d360a08f591 (patch)
tree0cbec19b5244ae9bdab1af49ccf4341b629da7ba /src/css
parent440fe613a03084a8efb72db2b9e20545ffbbda73 (diff)
downloadchawan-3415826c80f3a3ad9d090e18ee9d3d360a08f591.tar.gz
layout: fix another flex sizing bug
Diffstat (limited to 'src/css')
-rw-r--r--src/css/layout.nim9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/css/layout.nim b/src/css/layout.nim
index 76c36b93..39047178 100644
--- a/src/css/layout.nim
+++ b/src/css/layout.nim
@@ -2299,6 +2299,13 @@ proc flushMain(fctx: var FlexContext; mctx: var FlexMainContext;
     # Do not grow shrink-to-fit sizes.
     if wt == fwtShrink or fctx.redistSpace.t == scStretch:
       mctx.redistributeMainSize(diff, wt, dim, lctx)
+  elif sizes.minMaxSizes[dim].start > 0:
+    # Override with min-width/min-height, but *only* if we are smaller
+    # than the desired size. (Otherwise, we would incorrectly limit
+    # max-content size when only a min-width is requested.)
+    if sizes.minMaxSizes[dim].start > mctx.totalSize[dim]:
+      let diff = sizes.minMaxSizes[dim].start - mctx.totalSize[dim]
+      mctx.redistributeMainSize(diff, fwtGrow, dim, lctx)
   let h = mctx.maxSize[odim] + mctx.maxMargin[odim].sum()
   var offset = fctx.offset
   for it in mctx.pending.mitems:
@@ -2336,7 +2343,7 @@ proc layoutFlex(bctx: var BlockContext; box: BlockBox; sizes: ResolvedSizes) =
     offset: offset(x = sizes.padding.left, y = sizes.padding.top),
     redistSpace: sizes.space[dim]
   )
-  if fctx.redistSpace.t != scStretch and sizes.minMaxSizes[dim].start > 0:
+  if fctx.redistSpace.t == scFitContent and sizes.minMaxSizes[dim].start > 0:
     fctx.redistSpace = stretch(sizes.minMaxSizes[dim].start)
   if fctx.redistSpace.isDefinite:
     fctx.redistSpace.u = fctx.redistSpace.u.minClamp(sizes.minMaxSizes[dim])