W3C home > Mailing lists > Public > public-html-a11y@w3.org > March 2010

Re: change proposal: Provide accessibility implementation information (in the Canvas 2d Context specification) for focus rectangle and caret

From: Richard Schwerdtfeger <schwer@us.ibm.com>
Date: Mon, 15 Mar 2010 15:07:26 -0500
To: Maciej Stachowiak <mjs@apple.com>
Cc: Steven Faulkner <faulkner.steve@gmail.com>, public-canvas-api@w3.org, HTMLWG WG <public-html@w3.org>, HTML Accessibility Task Force <public-html-a11y@w3.org>, public-html-a11y-request@w3.org, public-html-request@w3.org
Message-ID: <OF2A6320D7.59F89E60-ON862576E7.006C31D6-862576E7.006E8B42@us.ibm.com>

Response in <RSS></RSS>

Rich Schwerdtfeger
CTO Accessibility Software Group

             Maciej Stachowiak                                             
             Sent by:                                                   To 
             public-html-reque         Richard                             
             st@w3.org                 Schwerdtfeger/Austin/IBM@IBMUS      
                                       Steven Faulkner                     
             03/13/2010 12:44          <faulkner.steve@gmail.com>,         
             PM                        public-canvas-api@w3.org, HTMLWG WG 
                                       <public-html@w3.org>, HTML          
                                       Accessibility Task Force            
                                       Re: change proposal: Provide        
                                       accessibility implementation        
                                       information  (in the Canvas 2d      
                                       Context specification) for focus    
                                       rectangle and caret                 

On Mar 13, 2010, at 9:26 AM, Richard Schwerdtfeger wrote:

      Why setCaretPosition rather than setSelectionPosition? It seems to me
      that screen magnifiers or the like may be interested in the screen
      location of non-caret selections too.

      <Rich>When text is selected it is usually following the caret
      position. Accessibility APIs that I work with drive focus by
      following the caret positon. For example, click and hold your mouse
      on the email you are writing and then drag. When you click and hold
      the caret is moved to that location. When you then drag the caret
      moves with the selection and finishes up where you release. The
      magnifier should follow the caret.

At least on Mac OS X, the visual results are that the caret disappears as
soon as I start dragging, and a selection appears instead. When I stop
dragging, the caret does not reappear. Instead, a selection remains. To the
best of my knowledge, this also matches what happens in the DOM -- you
either have a caret selection or a range selection, not both at the same
time. The caret is a special case of the selection, in the case where the
selection start and end points are the same. This also also matches how
carets and selections are treated in Mac OS X system APIs. I don't have
Windows handy right now to test, but I don't recall ever seeing a caret and
a selection appear at the same time.

      <RSS>I confirmed with Frank Olivier (Microsoft) that when you turn on
caret browsing the follows the end of the caret selection drag. Also, on my
Mac, although the caret does not render during selection. If you drag the
selection and then hit the right arrow key the caret appears at the end of
the selection. However, if you hit the down arrow it goes to the next line
at the X Position representing the start of the drag. We need to have the
screen magnifier follow the end of the selection and even if the caret is
not visible I feel you want to follow the end of the select or caret
location. The caret, during a selection should follow the end the selection
drag. It does on Windows for caret browsing mode. The Accessibility API
used to move the "point of regard - a UAAG 1.0 term", on systems I work on
do so by following the caret position and not the selection which is a
selection range vs. a location. I can't see having the magnifier following
a selection range as it could be the whole page.


Maybe I'm misunderstanding what you are saying.)

      Here is the caret move event from IA2:


      When selection changes it is usually for a range of text. So, really
      when you are selecting text you should be following the caret or
      point of regard. This would then need to be synched with the caret
      location in the DOM sub tree.

I don't follow. What's the "point of regard"? How can you follow the caret
when selecting text, if there is no caret when selecting text?

In the API you linked, there appear to be separate TEXT_CARET_MOVED and
TEXT_SELECTION_CHANGED events. That implies to me that changes to both need
to be reported, and that the appropriate one would be sent depending on
wether the selection is currently a caret.

      <RSS>The selection change, you are referring to pertains to a range
      and not a location. In my mind the caret should follow the end of the
      selection because this is where the user is operating. It is also
      important to have a consistent vehicle for maintaining point of

      Here is the definition of Point of Regard from the UAAG 1.0 Glossary:

      The point of regard is a position in rendered content that the user
is presumed to be viewing. The dimensions of the point of regard may vary.
For example, it may be a point (e.g., a moment during an audio rendering
or a cursor position in a graphical rendering), or a range of text (e.g.,
focused text), or a two-dimensional area (e.g., content rendered through a
two-dimensional graphical viewport). The point of regard is almost
always within the viewport, but it may exceed the spatial or temporal
dimensions of the viewport (see the definition of rendered content for more
information about viewport dimensions). The point of regard may
also refer to a particular moment in time for content that changes over
time (e.g., an audio-only presentation). User agents may determine the
point of regard in a number of ways, including based on viewport position
in content, content focus, and selection. The stability of the point of
regard is addressed by guideline 5 and checkpoint 9.4..


      So canDrawCustom really means something like
      wantToDrawCustomUnlessSpecialFocusRingSettingIsInEffect, but that's a
      bit verbose. Perhaps there is a different good short name for the

      <Rich> I recommend we change it to requestDraw and add the caveats
      you indicate ... The default would be false which would leave the
      drawing up the user agent to draw the focus ring. If it is true the
      author is requesting to draw the focus ring. The drawfocusring should
      return a boolean attribute to indicate to the author that they may
      draw the focus ring. If the drawFocus method returns false it
      indicates to the author that the user agent has decided to draw the
      focus ring due a user experience setting such as for a high contrast
      focus ring. </Rich

requestDraw sounds like it would have the opposite of the intended effect
(i.e. request that the UA should draw the focus ring, always.) The boolean
return you suggest is in the draft already.

      <RSS> What I am suggesting is the author is making a request to draw
the focus rectangle when the value is set to "true". The user agent can
return a false value indicating that the author is not allowed to draw the
focus ring based on the points you made.


(image/gif attachment: graycol.gif)

(image/gif attachment: pic24349.gif)

(image/gif attachment: ecblank.gif)

Received on Monday, 15 March 2010 20:08:15 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:55:33 UTC