Issue 90825 - [a11y] Orca unable to read Impress placeholder contents as child count is incorrect.
Summary: [a11y] Orca unable to read Impress placeholder contents as child count is inc...
Status: CLOSED FIXED
Alias: None
Product: Impress
Classification: Application
Component: ui (show other issues)
Version: OOo 3.0 Beta
Hardware: Unknown All
: P3 Trivial (vote)
Target Milestone: OOo 3.2
Assignee: eric.savary
QA Contact: issues@graphics
URL:
Keywords: accessibility, needmoreinfo, oooqa
Depends on:
Blocks:
 
Reported: 2008-06-18 00:52 UTC by richburridge
Modified: 2010-01-08 09:13 UTC (History)
4 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
impress_placeholders.jpg (55.20 KB, image/jpeg)
2008-09-15 17:13 UTC, eric.savary
no flags Details
Screenshot illustrating the bug (0 children reported by placeholder) (217.41 KB, image/png)
2008-09-21 21:40 UTC, joaniediggs
no flags Details
Screenshot illustrating things working as expected (i.e. 1 child reported by placeholder) (227.36 KB, image/png)
2008-09-21 21:42 UTC, joaniediggs
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description richburridge 2008-06-18 00:52:16 UTC
See also Orca bug #538869 which is blocked by this problem.
http://bugzilla.gnome.org/show_bug.cgi?id=538869

You will need to have checked out the latest Orca from SVN trunk
and have the second revision of the patch
attached to that bug applied:
http://bugzilla.gnome.org/attachment.cgi?id=112919
Then rebuild and reinstall Orca.

Steps to reproduce

0. Start patched Orca.

1. Open the presentation at:
   http://bugzilla.gnome.org/attachment.cgi?id=112929&action=view

2. Page Down to slide 2

3. (Use the mouse to) change the layout to "Title, 2 Text Blocks". This is the
4th item in my list of layouts and looks like it has three placeholders: A
title and 2 bulleted lists.  Having done so, the original bulleted list will
occupy the left half and a new bulleted list will appear on the right half. 
The new placeholder will contain the text "click to add an outline".

4. Press F6 until you get back to the Normal page of the scroll pane.  For me
this is two presses.

5. Tab amongst the placeholders.

Results:  The first one is correctly read. The other two do not have
their contents read.

Expected Results: All three placeholders should be read correctly.

I looked into the bug. See the Orca debug log at:
http://bugzilla.gnome.org/attachment.cgi?id=112949&action=view

I added some debug statements to my new code and it's
clear that when focus is on one of those two lower place holders
(say ImpressOutliner3 at line 772) and we find it's the desired
accessible component hierarchy (at line 795), and we then go to
speak each of the children, we find that the child count is zero
(line 845).

Note that Accerciser also shows up the problem, so it might be
easier to reproduce it without Orca running and just using that.
Comment 1 eric.savary 2008-09-15 17:10:49 UTC
I can't find 3 placeholder we executing your description. Only 1 (see screen
shot). Maybe the Layouts have changed? (using OOo300m6).

Else can you please tell me where to focus and look at in Accersizer?

Thank you!
Comment 2 eric.savary 2008-09-15 17:13:56 UTC
Created attachment 56546 [details]
impress_placeholders.jpg
Comment 3 joaniediggs 2008-09-21 21:40:58 UTC
Created attachment 56676 [details]
Screenshot illustrating the bug (0 children reported by placeholder)
Comment 4 joaniediggs 2008-09-21 21:42:19 UTC
Created attachment 56677 [details]
Screenshot illustrating things working as expected (i.e. 1 child reported by placeholder)
Comment 5 joaniediggs 2008-09-21 22:01:10 UTC
@es Sorry for the confusion. In your screenshot (and in the two I just
attached), there are three placeholders -- from my perspective anyway :-) -- namely:

1. Title (Slide 1)
2. List on the left (One, Two, Three)
3. List on the right (Click to add an outline)

Only one placeholder has focus (Click to add an outline). The problem/bug is
that this focused placeholder claims to have 0 children when in reality, it has
1 child.

The first screenshot I attached was taken after performing the steps Rich
outlined in his report: I had chosen the new layout and Tabbed amongst the
placeholders. Having given focus to the third placeholder (and having already
launched Accerciser), I pressed Control+Alt+A -- an Accerciser command which,
when it works, selects the focused accessible.  (Note that you don't *need*
Control+Alt+A; it's just handy/faster.)

For the second screenshot, I had performed the above steps/taken the first
screenshot. Then I used Page Up to move back to the first slide, Page Down to
return to the second slide, Tab to move to the third placeholder, and
Control+Alt+A to select the current accessible.  Note that having moved away
from the current slide and then back to it, the placeholder correctly reports
having 1 child.

Hope this helps. And thanks!
Comment 6 malte_timmermann 2008-11-26 14:21:11 UTC
OOo 3.2
Comment 7 eric.savary 2009-03-26 16:51:51 UTC
@joaniediggs: Thank you for the detailed explanation.

@AF: please have a look
Comment 8 groucho266 2009-03-26 18:06:50 UTC
Technically the placeholder with the text "Click to add an outline" has no
children and the child count of 0 is correct.  Also, this is the only
placeholder.  The other two are regular shapes.  Once you click on the
placeholder and enter text it is converted from a placeholder into an outline shape.

To fix this, I will have to add a special treatment for placeholder objects that
simulates one child,  a text shape with the text "Click to add an outline".
Comment 9 groucho266 2009-09-15 18:28:05 UTC
When the layout is changed then presentation objects (called placeholders above)
are removed and inserted.  The corresponding accessibility objects have already
been removed and created correctly.  The children that represent paragraphs of
text have not been created right away.  The reason for this was an optimization
that tried to prevent to create those paragraphs when not needed.  It was,
however, not detected when text was set at a shape and accessible paragraphs
could and should be created for it.

Technicalities:
AccessibleShape::Init() create and AccessibleEmptyEditSource, a proxy, instead
of SvxTextEditSource when at the time Init() was called the SdrObject did not
yet have a OutlinerParaObject.  This proxy was not replaced by the real thing
when text was set and an OutlinerParaObject became available.

Fixed by calling AccessibleEmptyEditSource::Switch2ProxyEditSource() when the
OutlinerParaObject becomes available.
With the fix the accersizer shows the correct sub-tree of accessibility objects
for the presentation objects.

SVN revision is 276186.
Comment 10 groucho266 2009-09-16 17:46:20 UTC
@es: Please verify.
Comment 11 eric.savary 2009-09-17 15:40:57 UTC
Verified in CWS impressaccessibility3
Comment 12 malte_timmermann 2010-01-08 09:13:20 UTC
Fixed and integrated => closing now..