[whatwg] drawFocusRing Review

Charles Pritchard chuck at jumis.com
Fri Aug 5 10:49:20 PDT 2011


The current description of draw*FocusRing does not have "inform the 
user" in the correct priority.
It currently follows cases where the user should be informed, but the 
steps have been aborted.

Please review the following an provide feedback. This attempts to serve 
the use cases put
forward for focus ring management. In the first case, the system manages 
the focus ring,
using its own style or using the style set out by the current canvas 
context. The canvas
is not dirtied, though the author does have an opportunity to continue 
drawing focus indicators
onto the canvas.

In the second example, it is up to the author to decide on what 
visualizations they will use.
They will likely draw to the canvas, but they may decide to handle the 
visualization differently (such
as moving another canvas layer over the current canvas, and painting a 
bounding box).

In both examples, the accessibility api is informed of the current focus.


Change proposal follows:


The |drawFocusRing(element)| method, when invoked, must run the 
following steps:

 1.

    If the element is not focused or is not a descendant of the element
    with focus, then return false and abort these steps.

 2.

    If supporting accessibility, inform the user that the focus ring is
    at the location computed from the bounds of the path. User agents
    may wait until the next time the event loop reaches its "update the
    rendering" step to inform the user.

 3.

    If the user has requested the use of particular focus rings (e.g.
    high-contrast focus rings) then draw a focus ring of the appropriate
    style along the path, following platform conventions.

    Some platforms only draw focus rings around elements that have been
    focused from the keyboard, and not those focused from the mouse.
    Other platforms simply don't draw focus rings around some elements
    at all unless relevant accessibility features are enabled. This API
    is intended to follow these conventions. User agents that implement
    distinctions based on the manner in which the element was focused
    are encouraged to classify focus driven by the |focus()| method
    based on the kind of user interaction event from which the call was
    triggered (if any).

    The focus ring should not be subject to the shadow effects, the
    global alpha, or the global composition operators, but /should/ be
    subject to the clipping region.

 4. Otherwise, draw a focus along the path using the current path style
    settings.

    The focus ring should not be subject to the shadow effects, the
    global alpha, or the global composition operators, but /should/ be
    subject to the clipping region.

 5.

    Return true.

The |drawCustomFocusRing(element)| method, when invoked, must run the 
following steps:

 1.

    If the element is not focused or is not a descendant of the element
    with focus, then return false and abort these steps.

 2.

    If supporting accessibility, inform the user that the focus ring is
    at the location computed from the bounds of the path. User agents
    may wait until the next time the event loop reaches its "update the
    rendering" step to inform the user.

 3.

    Return true.



More information about the whatwg mailing list