In the testcase, clicking Test grows the blue div, which causes the outer div to grow, but the grey div that should stick to the outer div's bottom doesn't move until you resize the window to force relayout. In Safari RSS, this happens with the white article footers, for example if an article contains an image that takes some time to load and resizes it when it's loaded.
Created attachment 6028 [details] Testcase
Created attachment 6032 [details] Relayout positioned children if the containing block's height changed
Comment on attachment 6032 [details] Relayout positioned children if the containing block's height changed r=me
Actually, the relayoutChildren = true in the if clause to which you added the else clause is incorrect. That code was the attempt to get the behavior you have now (correctly) added, so I believe that line can also be removed. Could that be added to the patch?
(Your new clause then doesn't have to be an else... it can just be a standalone if statement underneath the previous if statement.)
You also neglected to patch render_flexbox.cpp, which suffers from the same bug.
Created attachment 6038 [details] Updated patch Addressed Dave's comments.
Comment on attachment 6038 [details] Updated patch This does seem to address Hyatt's comment, and looks great to me. r=me
Yup. r=me too
Verified in r12540 nightly
*** Bug 5948 has been marked as a duplicate of this bug. ***
I think this bug (or a similar one) is affecting our application. We float images in div blocks, given the blocks a fixed width, but no height. 3 fit to a row, and there is a footer at the bottom. The footer always draws randomly in the middle of the images in Safari. FireFox, IE, Opera all draw the footer correctly at the bottom after all of the floated images. Any workaround suggestions would be most welcome.