- From: Richard Schwerdtfeger <schwer@us.ibm.com>
- Date: Sat, 13 Mar 2010 11:26:49 -0600
- 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
- Message-ID: <OFF4E4C1C6.6EDB1B50-ON862576E5.005BD083-862576E5.005FD68E@us.ibm.com>
Response between <Rich></Rich>
Rich Schwerdtfeger
CTO Accessibility Software Group
Maciej Stachowiak
<mjs@apple.com>
To
03/11/2010 11:37 Richard
AM Schwerdtfeger/Austin/IBM@IBMUS
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
Subject
Re: change proposal: Provide
accessibility implementation
information (in the Canvas 2d
Context specification) for focus
rectangle and caret
On Mar 11, 2010, at 7:43 AM, Richard Schwerdtfeger wrote:
Hi Maciej,
First, this is great feedback. I tried to stay in line with what was
in the 2D Context draft that was out there, which in the fine print,
indicated that the focus rectangle was also used for caret. It was
unclear how much of the drawFocusRing() was implemented and I tried
not to break things. So, I also had problems with reusing the same
method.
Here is the the text in the existing text that I am referring to:
"The position of the center of the control, or of the editing caret
if the control has one, should be given in the x and y arguments."
So, it appears you are in agreement with simply having caret API that
says setCaretPosition with a set of coordinates. As it states it
would be bound to an element in the subdom which has a logical
character position which the author would synch with. This we have in
the proposal. I will simply separate them out.
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.
Here is the caret move event from IA2:
http://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/_accessible_event_id_8idl.html#e26846b6d521727ab696d20c3f43c0b51d10f0c96c8c085baa648f166866d8c1
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.
<Rich>
Second, if we require the author to do all the caret drawing I see a
problem with not honoring blink rate settings that the author does
not have access to. If the blink rate is high enough (greater than 3
times a second) this may call seizures in some users. Should we not
provide the ability for the user agent to override the drawing in
some way?
We may have to expose the blink rate. I think it would be hard for the UA
to properly handle the blinking, because in general content may overlap the
caret, but canvas has no data model other than a bitmap. For carets in
native controls, the UA has to ensure that overlayed content is drawn over
the caret, but in the canvas case, it would be the responsibility of the
Web content.
<Rich> I agree that it will be hard for the UA to handle the blind rate. I
will add an API to query the blink rate </Rich>
Third, what I and others are struggling with is canDrawCustom on
drawFocusRing():
"If the canDrawCustom argument is true, then the focus ring is only drawn
if the user has configured his system to draw focus rings in a particular
manner. (For example, high contrast focus rings.)"
This does not make sense. The parameter, my name, indicates that the author
can draw a custom focus rectangle. It would make more sense to say that the
focus ring is drawn, by the user agent, only if the user has configured the
system to draw focus rings in a particular matter. ... meaning the user has
configured the desktop to draw focus rings in a standard way and the author
should not override that. Do you agree?
canDrawCustom is a bit of a funny name. I believe the intent of the
parameter is as follows:
- If canDrawCustom is false or omitted, the UA takes care of drawing the
focus ring, no matter what. This is the simplest form of the call to use.
<Rich> That makes sense </Rich>
- If canDrawCustom is true, then the Web application is indicating its
intent to draw the focus ring in a custom way; but if the UA would draw
focus rings in a way that respects a special accessibility setting, such as
high contrast, then it still does the drawing. The Web application can tell
whether it should do its custom focus ring drawing from the return value.
So canDrawCustom really means something like
wantToDrawCustomUnlessSpecialFocusRingSettingIsInEffect, but that's a bit
verbose. Perhaps there is a different good short name for the parameter.
<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>
Regards,
Maciej
Attachments
- image/gif attachment: graycol.gif
- image/gif attachment: pic12288.gif
- image/gif attachment: ecblank.gif
Received on Saturday, 13 March 2010 17:27:27 UTC