Re: No way to debug VoiceOver? Also how to force VoiceOver to pass to a child control
Re: No way to debug VoiceOver? Also how to force VoiceOver to pass to a child control
- Subject: Re: No way to debug VoiceOver? Also how to force VoiceOver to pass to a child control
- From: Felipe Monteiro de Carvalho <email@hidden>
- Date: Thu, 02 Feb 2012 08:25:59 +0100
Hello,
I had already tryed the Apple tools and it didn't help much.
Maybe if I try to explain my architecture anyone might know? So viewer
through UIBrowser one can see my hierarchy here:
http://img521.imageshack.us/img521/1370/uibrowsermisctest.png
This is just a test project to test controls, what I am really
developing is the Lazarus Component Library Framework which has
implementations for a large number of platforms, but here I am working
in particular with the Carbon backend of this library to make it
accessible.
As one can see inside the window there are buttons (Carbon buttons), a
tab controls (Carbon native too), an invisible border (the memoborder,
role=unknown, which shouldnt be a problem because the window area
itself also has role=unknown) and inside it a Carbon native text
control and a custom drawn control which is the Tree control on the
left.
Now I already managed to make the custom drawn tree control accessible
and the buttons and the tab control all worked out of the box. But my
issue is with the text control. Voice over moves focus into the border
and speaks the RoleDescription of the memo boder "memoborder" and
refuses to move into the real control with focus, the text view.
Has anyone seen this before? I looked everywhere already, but I still
have no idea where my error would be.
All of my source code is LGPL and is freely available in the internet,
so for example the Carbon Accessibility Event handler for the memo
border (a HIView) is located here:
http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/lcl/interfaces/carbon/carbonedits.pp?view=markup&root=lazarus
Line 1763
function CarbonMemoBorder_Accessibility(ANextHandler: EventHandlerCallRef;
For the text control itself, I am not customizing the accessibility
events, because I suppose they are already all taken care by Carbon
and they all look correct to me. I just need VoiceOver to skip my
memoborder and go into the textview.
I cannot make a simple solution like killing the border because it
would affect functionality from the framework, which supports a border
around text controls...
So, here is the report for my memo control border:
PATH:
application "misctests"
standard window "Form1" (window 1)
scroll area (scroll area 1)
A window (UI element 1)
memoborder (UI element 2)
ACTIONS:
ATTRIBUTES (long values are truncated to 60 characters):
children
type: array
value: (array of 1 item)
modifiable: no
enabled
type: Boolean
value: false
modifiable: no
parent
type: UIElement
value: A window
modifiable: no
position
type: point
value: {307, 464} x, y
modifiable: no
role
type: string
value: unknown
modifiable: no
role description
type: string
value: "memoborder"
modifiable: no
size
type: size
value: {182, 160} width, height
modifiable: no
top level UI element
type: UIElement
value: standard window "Form1"
modifiable: no
window
type: UIElement
value: standard window "Form1"
modifiable: no
NOTIFICATIONS:
created
focused UI element changed
help tag created
moved
resized
row collapsed
row count changed
row expanded
selected cells changed
selected children changed
selected children moved
selected columns changed
selected rows changed
selected text changed
title changed
UI element destroyed
units changed
value changed
And for the text control:
PATH:
application "misctests"
standard window "Form1" (window 1)
scroll area (scroll area 1)
A window (UI element 1)
memoborder (UI element 2)
text field (text field 1)
ACTIONS:
ATTRIBUTES (long values are truncated to 60 characters):
attributed string for range
type: attributed string
value: (null)
modifiable: parameterized
bounds for range
type: rect
value: (null)
modifiable: parameterized
children
type: (null)
value: (null)
modifiable: no
focused
type: Boolean
value: false
modifiable: yes
insertion point line number
type: number
value: 0
modifiable: no
line for index
type: number
value: (null)
modifiable: parameterized
number of characters
type: number
value: 5
modifiable: no
parent
type: UIElement
value: memoborder
modifiable: no
position
type: point
value: {48, 326} x, y
modifiable: no
range for index
type: range
value: (null)
modifiable: parameterized
range for line
type: range
value: (null)
modifiable: parameterized
range for position
type: range
value: (null)
modifiable: parameterized
role
type: string
value: AXTextField
modifiable: no
role description
type: string
value: "text field"
modifiable: no
selected text
type: string
value: (empty string)
modifiable: yes
selected text range
type: range
value: {0, 0} start, length
modifiable: yes
size
type: size
value: {180, 158} width, height
modifiable: no
string for range
type: string
value: (null)
modifiable: parameterized
style range for index
type: range
value: (null)
modifiable: parameterized
top level UI element
type: UIElement
value: standard window "Form1"
modifiable: no
value
type: string
value: "Memo1"
modifiable: yes
window
type: UIElement
value: standard window "Form1"
modifiable: no
NOTIFICATIONS:
created
focused UI element changed
help tag created
moved
resized
row collapsed
row count changed
row expanded
selected cells changed
selected children changed
selected children moved
selected columns changed
selected rows changed
selected text changed
title changed
UI element destroyed
units changed
value changed
--
Felipe Monteiro de Carvalho
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Accessibility-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden