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.

Reply via email to