It seems that RenderLayer::enclosingPositionedAncestor() should look for transforms when walking up the RenderLayer tree for a layer to be treated as its positioned ancestor. I noticed this while debugging: convertToLayerCoords() would give the wrong answer if there was an intermediate layer in the tree for a transformed element which was not positioned (will attach sample).
Created attachment 20960 [details] Sample with two sets of divs, one of which has a transform.
Created attachment 22213 [details] Testcase, but it requires visual inspection
Filed bug 19982 on enhancing DRT to dump info about transforms.
Created attachment 22214 [details] Patch Patch to enclosingPositionedAncestor() to respect transforms. Also removed some bogus semicolons.
Comment on attachment 22214 [details] Patch Pretty sure the semicolons were needed to stop some bizarre compile error on some platform. I tried to remove this code in an earlier patch as well and was told it was needed.
Although maybe the empty braces would be sufficient for whatever platform was complaining. I think bdash would remember.
How about rewriting those as while() loops? The for loops make my head hurt.
bdash says that for (...) { } is OK. It's for (...); that had issues.
Created attachment 22249 [details] Patch, testcase, changelog
Comment on attachment 22249 [details] Patch, testcase, changelog r=me
Committing to http://svn.webkit.org/repository/webkit/trunk ... M LayoutTests/ChangeLog A LayoutTests/fast/transforms/transform-positioned-ancestor.html A LayoutTests/platform/mac/fast/transforms/transform-positioned-ancestor-expected.txt M WebCore/ChangeLog M WebCore/rendering/RenderLayer.cpp Committed r35138