nsBlockReflowState::mLastFloaterY isn't sufficient to enforce that a float can't be above an earlier float. I'll attach a testcase to show this. It needs to be on the space manager.
Note that this patch also includes the patch for bug 115153, simply because I haven't checked it in yet.
Comment on attachment 116876 [details] [diff] [review] patch I dislike #if 0. Is there a good reason to leave this in?
I'm not really sure. nsSpaceManager was originally written to be rather general, and I've already polluted it with a good bit of block-specific/float-specific stuff, but I think it really needs to go more in that direction (see bug 191448) and, furthermore, that we're unlikely to need the code for anything other than floats. So I guess I'm inclined to just remove it if you like that idea as well. (cc:ing kin if he wants to chime in as well.)
I can't think of anything that we're going to need "space management" for beyond floats, at least for the forseeable future. (I can imagine at some point we might want support for positioned elements that siblings flow around, but you can't even do that in CSS3 ... right?) Even if we could forsee a potential broader use, it's probably better to get floats working well and then figure out how to extend the code later.
Created attachment 116883 [details] [diff] [review] patch with removal instead of #if 0
Ran the regression tests. Saw only noise. Will add attachment 116872 [details] to the block/bugs regression tests.
Fix checked in to trunk, 2003-03-11 15:56 PST.