The slider seen here http://www.mozilla.org/access/dhtml/pretty-slider.htm shows that it has an embed character but has a childCount=0. This should not occur because embed characters to children should be a 1:1 match.
Here are a couple more examples that demonstrate the problem:
Please note that testing was done on the Gecko/2007091604 build, which was before the build that caused many issues.
Scott, is this still a problem?
Yes, this is still an issue. However, Orca now has safe guards for this so it is a low priority item.
ROLE_SLIDER is in nsAccessible::MustPrune()
So the childCount is always zero.
Do we want to change that?
btw: the child in the slider is <span class "bar">, the moving square bar.
Ginn, we don't want extra image children in a slider. It confuses screen readers like JAWS that have doc browsing modes.
It would be better if MustPrune()==TRUE means that there are no embedded object chars in something, and that it doesn't support nsIAccessibleHyperText.
Actually I'm not sure, because nsIAccessible does have the children. We'd need the embedded object chars when exposing it there and not when exposing it to ATK. Yuck.
Ginn, I am looking at it from an ATK point of view where I am only given a slider object. It should have no children either in the Accessible::childCount field or as and embed character in the text interface.
I just checked with Accerciser and it is still an issue. As mentioned earlier, this is no longer a major issue for Orca.
Scott, BTW, any image child of the slider should probably be role="presentation". But, I believe there is a funky 0x0 object there which takes focus, which is odd in any case.
Sorry, I'm confused.
The child of the slider is not focusable.
Can we just disable AccessibleText interface and AccessibleTextEditable interface for slider?
Ginn, that will help with slider, it's a good idea.
It won't help with button though, and other items where MustPrune() is true, because we need to expose AccessibleText interface there. However, they could have an image child.
if we don't care nsIAccessible, can we just replace kEmbeddedObjectChar to whitespace in this case?
Sounds like a simple solution?
Created attachment 288494 [details] [diff] [review]
quick ginn's version
Comment on attachment 288494 [details] [diff] [review]
quick ginn's version
TextLength() and other things that increment the offset by 1 for embedded objects would need to be changed. I think that's why Ginn was suggesting a space character as opposed to no character.
Surkov, another problem with this approach is described in comment 7. When MustPrune() is true we only prune for ATK, AT-SPI and UA. We dan't prune for nsIAccessible.
This is going to take a little more thought.
(In reply to comment #15)
> Surkov, another problem with this approach is described in comment 7. When
> MustPrune() is true we only prune for ATK, AT-SPI and UA. We dan't prune for
We do (http://lxr.mozilla.org/mozilla/source/accessible/src/msaa/nsAccessibleWrap.cpp#242).
Created attachment 288660 [details] [diff] [review]
Comment on attachment 288660 [details] [diff] [review]
I think space is a good idea, because if there is an embedded object char like an image between two words we do want to separate them somehow.
nit: hans't -> hasn't
checked in, unfortunately I forot to fix misspeling :(