Re: [SVGMobile12], Focus navigation and circular dependencies

Andrew Shellshear wrote:

> Faik Siddiqi wrote:
>
>> We have a question about focus navigation behavior when the SVG content
>> is used as a component within a compound document.
>> According to the rules specified in section 13.12.1 Navigation behavior
>> <http://www.w3.org/TR/SVGMobile12/interact.html#navigationbehaviour>,
>> the focus should be offered back to the User Agent if/when there is no
>> focusable next element:
>>
>> "3. If the focus is held by an element in the document, then the next
>> element in navigation order shall be the entity that first matches the
>> following criteria:
>>    1. the element referenced by the 'nav-next' attribute on the focused
>> element,
>>    2. the next focusable element in document order,
>>    3. the User Agent"
>>
>> So, the use of the 'nav-next' attribute allows for the creation of
>> circular focus rings. Is it correct that the User Agent is never offered
>> the focus again when the focus ring has a circular dependency?
>>
>> If the SVG content is used as a component within a compound document,
>> that would mean that the focus would never leave the SVG document once
>> it has been released by the User Agent and focusable elements in the
>> host document would never be reached.
>
>
> You are correct, and we agree that this needs to be fixed.
>
>> It seems to us that some kind of concept of a "last" element in a focus
>> ring should be introduced. If this "last" element holds the focus and
>> the user tries to navigate to the next element, then the User Agent
>> should first be offered the focus. Only after the User Agent releases
>> focus, the focus should be given to the element reference by 'nav-next'.
>>
>> Our suggestion is that the "last" element in the focus ring is defined
>> as the element that, using 'nav-next', references a previous element in
>> the focus ring. There can only be one element that fulfills this
>> criteria.
>>
>> By allowing the User Agent to regain focus when navigating from the
>> "last" element in the SVG document focus ring, focusable elements within
>> a host document may be reached even when circular dependencies exist in
>> the SVG document focus ring.
>>
>> The corresponding problem exists when navigating backwards using the
>> 'nav-prev' attribute in a ring with circular dependencies, so a
>> definition of a "first" element would be needed too.
>
>
> However, we think there are some problems with this proposed solution.
> Automatically going to the user agent at various times (next from last,
> previous from first) is non-intuitive, and the time at which it occurs
> depends on document order, rather than any graphical order - it relies
> on the user ordering the elements so that the last element occurs at 
> the correct place.
>
> Instead, we are adding an event "focusEscape".  This event triggers
> when the user does the buttonpress/keyclick/whatever that the 
> user-agent decides should exit the user from the focus ring.
>
> This also allows the user to go around the focus ring without being
> kicked out, which may be the desired behaviour in some instances.

OK, on second thoughts (and this is why I should always modify the spec 
*before* sending the reply), this is the wording, which we've added to 
the end of the section 13.12.1 Navigation behavior:

---
User agents should provide a mechanism for a user to escape from a focus 
ring.  When the user activates this mechanism, the user agent should 
change focus to the user agent, sending the appropriate focusOut event 
to the element currently in focus.
---

So, rather than an event being generated when the user uses the escape 
mechanism, we just automatically move focus to the user agent (which is 
what we would be doing anyway).

Thank you for your thorough review.  Please let us know shortly if  this 
does not address your concerns.

Andrew.

Received on Monday, 8 May 2006 14:15:06 UTC