[css-flexbox] Simplification to "Distribute free space proportional to the flex factors" step

Hi Tab & Fantasai,

In the CR version of the resolving-flexible-lengths algorithm[1], step 4
part c is currently:

 # c. Distribute free space proportional to the flex factors.
 #      If using the flex grow factor and the
 #      remaining free space is positive
 #        [...]
 #      If using the flex shrink factor the
 #      remaining free space is negative
 #         [...]

I have two tweaks to this (but the second obsoletes the first).

The first tweak is a minor typofix:
  s/shrink factor/shrink factor and/

The second tweak is: I think we can drop the "and the free space is
[positive|negative]" qualifiers completely. We really only need to check
whether the free space is nonzero. (And if it is nonzero, its sign
*must* be what we want it to be.)

We *used* to need to check that the sign matched the type of flexing
that we're doing -- and if it didn't match, we'd skip straight to the
"fix min/max violations" step and clamp whichever items were too
extreme. However, nowadays, we'll have fixed those violations
ahead-of-time, in the "Size inflexible items" (a.k.a. "early freeze")
step that was added to the spec in the past few weeks.

With that early-freeze step, I don't think it's possible for us to hit
step 4c with an incorrectly-signed-free-space value anymore. If we're
growing, any flex items with absurdly-large flex base sizes (greater
than their max-size) will already have been clamped. (and similar for
min-size, if we're shrinking)

I'd suggest replacing step 4 part c with text like this, using an early
0-check:

 # c. Distribute free space proportional to the flex factors.
 #      If the remaining free space is 0, skip this step. Otherwise
 #      If using the flex grow factor
 #        [...]
 #      If using the flex shrink factor
 #        [...]

(If I'm missing something, though, I'd love to see a counterexample
where we actually do need to check whether the sign is positive or
negative.)

Thanks,
~Daniel

[1]
http://dev.w3.org/csswg/css-flexbox/#resolve-flexible-lengths-flex-factors

Received on Friday, 16 May 2014 00:54:27 UTC