Apache OpenOffice (AOO) Bugzilla – Issue 90825
[a11y] Orca unable to read Impress placeholder contents as child count is incorrect.
Last modified: 2010-01-08 09:13:20 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.
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!
Created attachment 56546 [details] impress_placeholders.jpg
Created attachment 56676 [details] Screenshot illustrating the bug (0 children reported by placeholder)
Created attachment 56677 [details] Screenshot illustrating things working as expected (i.e. 1 child reported by placeholder)
@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!
OOo 3.2
@joaniediggs: Thank you for the detailed explanation. @AF: please have a look
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".
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.
@es: Please verify.
Verified in CWS impressaccessibility3
Fixed and integrated => closing now..