[Webkit-unassigned] [Bug 116689] Regression(r145959) Convert <select> to new flex box causes strange positioning problems

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue May 28 21:07:11 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=116689





--- Comment #6 from Roger Fong <roger_fong at apple.com>  2013-05-28 21:05:42 PST ---
I have done a little more investigating however. Prepare for spew!!!

Let's consider the case where RenderMenuList was still a RenderDeprecatedFlexibleBox:
It's layoutBlock code has the following:
    // Update our scrollbars if we're overflow:auto/scroll/hidden now that we know if
    // we overflow or not.
    if (hasOverflowClip())
        layer()->updateScrollInfoAfterLayout();

This is the code that updates the scroll information before all that baselinePositioning code gets called.
It finds the select element to have overflowTop.y = 1 and border.top.y = 1 (from the user agent style sheet, maybe this is why chrome isn't seeing issues), thus setting scroll origin to 0, thus setting ignoreBaseline to false, thus setting the baseline correctly.

Now,
Let's consider when RenderMenuList is a RenderFlexibleBox.
    // Update our scroll information if we're overflow:auto/scroll/hidden now that we know if
    // we overflow or not.
    updateScrollInfoAfterLayout();
(which seems fishy for starters.) Anyways, no layer scroll updates happen.

SIDE NOTE: if I change this code to match RenderDeprecatedFLexibleBox, we get the correct behaviour. It even sets scrollOrigin correctly!

The containing element (in this case the body which is a RenderDeprecatedFlexibleBox) continues on to call all that baselinePosition code. 
Then we get to RenderBlock::finishDelayUpdateScrollInfo(); in RenderDeprecatedFlexibleBox::layoutHorizontalBox which finds that the DelayedUpdateScrollInfoSet is not empty and proceeds to updates the scroll info, but incorrectly as it sets scroll origin to -1 because it thinks that overflowTop() is 0 and borderTop is 1.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list