CLOSED FIXED 42474
Spatial navigation: do not consider outline for focusable element boundaries
https://bugs.webkit.org/show_bug.cgi?id=42474
Summary Spatial navigation: do not consider outline for focusable element boundaries
Antonio Gomes
Reported 2010-07-16 11:35:50 PDT
Currently in WebCore::renderRectRelativeToRootDocument function , we are calling RenderObject::absoluteClippedOverflowRect to obtain the rect boundary of a given renderer/element. This method deals with outline, which is out of elements boundary. // Returns the rect that should be repainted whenever this object changes. The rect is in the view's // coordinate space. This method deals with outlines and overflow. IntRect absoluteClippedOverflowRect() { ... } It makes spatial navigation to fail on common sites like google.gom: "Web, Images, Map, etc" are inaccessible. Patch with a test coming ...
Attachments
patch - use getRect instead of absoluteClippedOverflowRect (2.92 KB, patch)
2010-07-16 11:45 PDT, Antonio Gomes
no flags
(r63572, r=smfr) patch v2 - right patch (7.33 KB, patch)
2010-07-16 11:50 PDT, Antonio Gomes
no flags
Antonio Gomes
Comment 1 2010-07-16 11:45:33 PDT
Created attachment 61832 [details] patch - use getRect instead of absoluteClippedOverflowRect It fixes problem of zero-margin content (see layout test in the patch).
Antonio Gomes
Comment 2 2010-07-16 11:50:34 PDT
Created attachment 61834 [details] (r63572, r=smfr) patch v2 - right patch Right patch this time. See comment #1 for description.
Simon Fraser (smfr)
Comment 3 2010-07-16 11:52:27 PDT
Comment on attachment 61834 [details] (r63572, r=smfr) patch v2 - right patch r=me, but note that getRect() respects CSS transforms now, where absoluteClippedOverflowRect() did not, iirc.
Antonio Gomes
Comment 4 2010-07-16 11:58:39 PDT
(In reply to comment #3) > (From update of attachment 61834 [details]) > r=me, Thank you! > but note that getRect() respects CSS transforms now, where absoluteClippedOverflowRect() did not, iirc. getRect is not currently transform-aware, although it could be. It calls RenderObject::absoluteBoundingBoxRect (which is transform-aware), but look at the call site and method signature. IntRect Node::getRect() const { // FIXME: broken with transforms if (renderer()) return renderer()->absoluteBoundingBoxRect(); .. // FIXME: useTransforms should go away eventually IntRect absoluteBoundingBoxRect(bool useTransforms = false); The caller 'd have to be absoluteBoundingBoxRect(true); Should I fix that in another bug?
Simon Fraser (smfr)
Comment 5 2010-07-16 12:11:58 PDT
The patch in bug 41259 changes getRect().
Antonio Gomes
Comment 6 2010-07-16 12:50:09 PDT
Comment on attachment 61834 [details] (r63572, r=smfr) patch v2 - right patch Clearing flags on attachment: 61834 Committed r63572: <http://trac.webkit.org/changeset/63572>
Simon Hausmann
Comment 7 2010-07-26 04:15:16 PDT
Revision r63572 cherry-picked into qtwebkit-2.0 with commit e70ca4c61a9dfc24875482c3184faaa34c08fb96
Note You need to log in before you can comment on or make changes to this bug.