Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 319467

Summary: Orca does not always give the correct output when navigating the eclipse project explorer tree.
Product: [Eclipse Project] Platform Reporter: jose vilmar estacio de souza <vilmar>
Component: SWTAssignee: Platform-SWT-Inbox <platform-swt-inbox>
Status: CLOSED WORKSFORME QA Contact:
Severity: normal    
Priority: P3 CC: eclipse.felipe, ericwill, Silenio_Quarti
Version: 4.0Keywords: accessibility, triaged
Target Milestone: ---   
Hardware: PC   
OS: Linux   
See Also: https://bugzilla.gnome.org/show_bug.cgi?id=525316
Whiteboard:

Description jose vilmar estacio de souza CLA 2010-07-10 12:31:07 EDT
Build Identifier: 20100617-1415

When navegating in the project explorer or in the package explorer, orca sometimes does not speak the name of the item correctly.
It seems the problem happens when the item being shown is two levels below the item shown above.


Reproducible: Always

Steps to Reproduce:
1. With orca active launch eclipse and choose an empty workspace.
2. Create two projects named p1 and p2.
3. In the project p2 create a class named T1 in the default package.
4. Go to the package explorer and use the keyboard to expands all items until you find the class created in the step 3.
5. Press the down key.

Orca should read JRE system library but instead orca reads p1.
Orca  uses the event "object:active-descendant-changed" to announce the item and seems that something is wrong with this object.
In the end of this message there is a python script to demonstrate.
Launch the script, execute the steps 4 and 5, and inspect the output of the script.

The python script.
#!/usr/bin/python
import pyatspi

def blah(event):
    activeDescendant = event.any_data
    parentTable = event.source.queryTable()
    index = activeDescendant.getIndexInParent()
    row = parentTable.getRowAtIndex(index)
    col = parentTable.getColumnAtIndex(index)
    print "Descendant with index %d is at (%d, %d)" % (index, row, col)
    cell = parentTable.getAccessibleAt(row, col)
    cellIndex = cell.getIndexInParent()
    if cellIndex != index:
        print "ERROR: wrong child returned. Index should be %d; got: %d" % \
              (index, cellIndex)

pyatspi.Registry.registerEventListener(blah, "object:active-descendant-changed")
pyatspi.Registry.start()
Comment 1 Eric Williams CLA 2017-11-29 15:18:55 EST
I cannot reproduce the issue on I20171128-2000, with GTK3.22 and Fedora 27. Please feel free to reopen this bug if the issue persists.