Issue 93083 - [a11y] states missing from lists in Task Pane
Summary: [a11y] states missing from lists in Task Pane
Status: CLOSED FIXED
Alias: None
Product: Impress
Classification: Application
Component: ui (show other issues)
Version: OOO300m3
Hardware: All Linux, 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-08-25 03:12 UTC by joaniediggs
Modified: 2010-01-08 09:13 UTC (History)
3 users (show)

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


Attachments
Using Accerciser to see STATE_FOCUSABLE is absent (214.42 KB, image/png)
2008-09-22 00:50 UTC, joaniediggs
no flags Details
Screenshot: Using Accerciser to try to figure out what's going on in general :-) (212.38 KB, image/png)
2008-09-22 01:54 UTC, joaniediggs
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description joaniediggs 2008-08-25 03:12:31 UTC
Steps to reproduce:

1. Create a new, blank presentation.

2. In the Task Pane, under Layouts, arrow around the items.

3. Right-click/press Shift+F10 on a layout and choose Insert Slide.

4. When focus is returned to the list of layouts arrow around some more.

Each time focus is given to a new layout, an object:active-descendant-changed
event should be -- and is being -- emitted. No problems there. However:

Expected Results: The list issuing the above event would expose STATE_FOCUSABLE
and STATE_FOCUSED.

Actual Results: At no time does the list expose STATE_FOCUSABLE. When arrowing
around in step 2, STATE_FOCUSED is exposed (as expected). However, once focus is
given to the context/pop-up menu and then returned to the list, neither state is
exposed.
Comment 1 jamesbigmac 2008-09-11 15:43:43 UTC
This is not exactly a clear bug report for people who have no knowledge of the
code. I followed the steps exactly and do not see any bug since the report is
not clear enough to substantiate any happening.

It is obvious that you are talking about something in the OO code, but it should
be visible from the program standpoint. The only difference I found when
arrowing around, is that the layouts on the left side of the task pane had text
describing the layout that was still for arrowing each layout, and on the right
side they would move with the mouse.  Also, when right clicking on a slide to
"Insert Slide" the layout will be the layout of the current slide, instead of
the one you right clicked on. This is easily remedied by left clicking on the
layout you want before right clicking.
Comment 2 eric.savary 2008-09-11 15:59:35 UTC
This report is pretty clear exactly when you know what it is about
(accessibility). And I know it, that's why it's been assigned to me.
Comment 3 eric.savary 2008-09-15 16:51:46 UTC
@joaniediggs: not sure how to see or not STATE_FOCUSABLE and STATE_FOCUSED.
Can you give me some hint for accersizer or at-poke?
Comment 4 joaniediggs 2008-09-22 00:50:13 UTC
Created attachment 56686 [details]
Using Accerciser to see STATE_FOCUSABLE is absent
Comment 5 joaniediggs 2008-09-22 00:51:56 UTC
The screenshot I just attached will hopefully help answer the question of how to
verify that STATE_FOCUSABLE is absent event when STATE_FOCUSED is present.  It's
also one of the best (work-related) justifications for having at least a
dual-head box with wide screen monitors. :-)

The trick is that you need to have:

1. Accerciser's Interface viewer visible

2. The Layouts (from Impress) list selected within Accerciser

3. The list of States (in Accerciser's Interface viewer) scrolled so that
'focused' will be visible once you give focus back to Impress

The reason for all of this trickery is that the minute you give focus back to
Accerciser (or anything else for that matter), the Layouts list will not display
STATE_FOCUSED because, presumably, it's no longer focused. :-)

(BTW, if you perform the same trickery after giving focus to something else
within Impress, you should find that anything with STATE_FOCUSED also has
STATE_FOCUSABLE. There just seems to be something about that list which isn't
quite right.)
Comment 6 joaniediggs 2008-09-22 01:54:08 UTC
Created attachment 56687 [details]
Screenshot: Using Accerciser to try to figure out what's going on in general :-)
Comment 7 joaniediggs 2008-09-22 02:04:04 UTC
@es I'm having a harder time finding a way to reproduce the part of this bug
where STATE_FOCUSED goes missing without using Orca. When I use Accerciser as
described earlier and then perform the steps outlined in my original report,
Accerciser continues to display STATE_FOCUSED for the Layouts list. But:

1. When I look at the debugging output from Orca, before getting into the
context/pop-up menu, STATE_FOCUSED is definitely present, and after it
definitely is not. This would make me suspect Orca were it not for:

2. Accerciser in my experience does not 100% of the time update states without
"refreshing" the list. The act of refreshing the list (by moving focus into
Accerciser and choosing another item and/or choosing Refresh from the View menu
and then returning focus to Impress) causes the list to emit a focus: event
which presumably causes it to have STATE_FOCUSED, and then we don't know if it
was officially focused before or not. :-)

So.... Adding Will to the CC list for a sanity check and insight. (Hi Will!) In
the meantime, I started looking at the focus: events emitted by the Layout list
using Accerciser. I get the expected focus: events when:

a. I click in the list and focus was not there before.

b. I'm in the list, get into the File menu, and then press Escape causing focus
to be given back to the list.

c. I leave the list by pressing Control+Shift+Tab and then return to the list by
pressing Control+Tab, Arrowing Down to Layouts and pressing Return.

d. I give focus to the list, then leave Impress by Alt+Tabbing out of it, and
return to Impress by Alt+Tabbing back into it .

i.e. normally the list issues focus: events. In addition, whatever I give focus
to in the cases above also issues focus: events. However, when I perform the
steps in the original report, the two menu items (Apply to Selected Slides and
Insert Slide) issue focus: events as expected, but when focus is ultimately
given back to the Layouts list afterwards, the Layouts list never issues a
focus: event to reclaim focus. Shouldn't it be issuing one? (I think it should.)
Is that the same problem as the bug? (Couldn't tell ya, but it seems like it
might be. :-) Will, thoughts?)

Anyhoo, the previous screenshot illustrates how you can use Accerciser to see
what events we're getting. Given the number of focus: events issued, I narrowed
things down by first selecting the Layouts list in Accerciser and then turning
on event monitoring just for focus events and just for the selected accessible.

Hope this helps! And thanks again for looking into it!
Comment 8 malte_timmermann 2008-11-26 14:11:48 UTC
OOo 3.2
Comment 9 eric.savary 2009-03-26 16:39:59 UTC
@joaniediggs: I try to sum up.... 

I have set Accerciser as shown on your screenshot.
If I understand as it should:
- click on Layout (focus event shown in Accerciser = ok)
- context menu (focus event for the context menu is shown in Accerciser = ok)
- after click in context menu, the focus IS (one can see it) in the layouts but
NO focus event is tracked in Accerciser.

Is that correct?

I couldn't find anywhere STATE_FOCUSED or STATE_FOCUSABLE "as is" in Accerciser.
Should I? Can I? Where?

Comment 10 eric.savary 2009-04-01 17:30:11 UTC
Ping! :)
Comment 11 joaniediggs 2009-04-02 01:27:15 UTC
@es: Sorry, I was away from work and from Orca and am just now getting caught
up. That said, thanks for the ping as this one had somehow fallen off my radar.

> If I understand as it should:
> - click on Layout (focus event shown in Accerciser = ok)

Your statement is correct and the results are correct/as-expected.

> - context menu (focus event for the context menu is shown in 
> Accerciser = ok)

Your statement is correct and the results are correct/as-expected.

> - after click in context menu, the focus IS (one can see it) in the layouts
> but NO focus event is tracked in Accerciser.

Your statement is correct. But the results are NOT as-expected. When focus is
given/returned to that list, we *should* get a focus event. Usually we do, but
after clicking in the context menu we don't. That's a bug.

> I couldn't find anywhere STATE_FOCUSED or STATE_FOCUSABLE "as is" in
> Accerciser. Should I? Can I? Where?

Part of it involves doing things "just so"; part of it is the bug being
reported. :-) I'm going to err on the side of (way) too much detail in the hopes
of being clear. My apologies.

Take a look at this screenshot:
http://www.openoffice.org/nonav/issues/showattachment.cgi/56686/93083.png

As you can see, it's two different windows. In the top (Accerciser) window, note
that:

1. The "Layouts" list is the selected accessible on the left-hand side of the
window.

2. Immediately to it's right, in the Interface Viewer, there is a list of
states. Amongst the states shown in that list is "focused." (i.e. that's the
answer to where you should look to find the states in Accerciser.) Focused
should be present. *In addition* I would expect to see "focusable" listed right
above it because, after all, if an object has STATE_FOCUSED it is by definition
FOCUSABLE. :-) The lack of "focusable" is a bug.

As for doing things "just so": From your description it sounds as if you found
that lists of states just fine, but did not see "focusable" OR focused. If
so.... Take another look at that screenshot and note that the bottom (Impress)
Window is active -- as can be seen by the title bar colors -- and that one of
the items in the layout list is selected. 

My suspicion is that you made the Accerciser window active. If the Accerciser
window is active, the Impress window is of course not. If the Impress window is
not active, the layout list seems to lose state focused because it surrendered
focus when the window containing it surrendered the same. I guess. <smiles>

As a result, what I do is get my Accerciser window all set up (interface viewer
showing, layouts selected in the list of accessible objects). Then without
covering that window up, I move back to Impress, perform the steps outlined in
the bug, and keep an eye on what is changing in the Accerciser window. 

So.... I hope that clarifies things. If it doesn't, you know where to find me --
and I promise to be responsive this time. :-)

Thanks again for digging into this and pinging me!
Comment 12 eric.savary 2009-04-07 13:32:35 UTC
@AF: Please have a look.
Comment 13 groucho266 2009-09-16 16:04:25 UTC
I can confirm that the FOCUSABLE state is never set for the layout menu, there
is simply no code that does that.  However, there is also no code that sets the
FOCUSED state, which for me is correctly displayed before and after inserting a
new slide for a layout.  Accerciser shows it to be part of the controls state
set and Orca reads the titles of the layouts.

I suspect that the ATK bridge in VCL maintains the FOCUSED state.
Comment 14 groucho266 2009-09-16 17:50:09 UTC
The ValueSet control now handles the FOCUSED and FOCUSABLE states explicitly
and, hopefully, correctly.

SVN revision of the file changes is 276214.
Comment 15 groucho266 2009-09-17 09:01:49 UTC
@es: Please verify.
Comment 16 eric.savary 2009-09-18 12:48:11 UTC
Verified in CWS impressaccessibility4
Comment 17 malte_timmermann 2010-01-08 09:13:05 UTC
Fixed and integrated => closing now..