nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.11k stars 637 forks source link

support for reading slides with open office 4.1 #4274

Open nvaccessAuto opened 10 years ago

nvaccessAuto commented 10 years ago

Reported by Diego on 2014-07-12 11:53 hi. Currently, when you open a slide with open office 4.1, NVDA does not read the contents of the slide. arrows, commands to move to the next slide does not work, and NVDA does not speak.

nvaccessAuto commented 10 years ago

Comment 1 by ateu on 2014-07-13 18:19 Interstingly, it's possible to read several controls in the application, but not the text. Also, it's possible to read the title and subtitle.

nvaccessAuto commented 10 years ago

Comment 3 by jteh (in reply to comment 1) on 2014-07-14 01:27 Replying to ateu:

Interstingly, it's possible to read several controls in the application, but not the text.

I'm not suggesting this is a solution, but for those that care, you can get at the text by disabling simple review and using object navigation to move inside the shapes. (This doesn't work with simple review enabled.) Also, you can of course tab through the shapes on each slide and press f2 to edit them, at which point you can also read the text.

Adriani90 commented 5 years ago

@Diego, @ateu, @qchristensen can you still reproduce this issue in last Version of Open Offic?

Qchristensen commented 5 years ago

I can still reproduce this in Open Office Impress 4.1.6, as well as LibreOffice Impress 6.1.3.2 with NVDA 2018.4.1 (behaviour is identical in each).

As Jamie noted previously, you can use TAB to move between objects, then F2 or ENTER to edit them. Note that say all - NVDA+down arrow or NVDA+A does NOT work in these objects - it only reads the current line. The two ways I found to read all the text in an object are:

1) Move to the top then read one line at a time. 2) Select all, copy, then read the contents of the clipboard (selecting then reading the selection still only reads one line even though multiple are selected).

To compare - in Microsoft PowerPoint when moving through the list of slides, the title text of each slide is read as well as the slide style. In OO and LO, only the slide style is read. In PowerPoint when using TAB to move through the objects on a slide, the text of each object is read as well as the object type. In LO and OO only the type of object is reported.

There is a similar LibreOffice bug (primarily noting that the contents object isn't readable when there is only one slide): https://bugs.documentfoundation.org/show_bug.cgi?id=102145

Adriani90 commented 1 month ago

The text can now be navigated with arrow keys within the placeholder same as in powerpoint, but on every up and down arrow NVDA says "paragraph multiline editable" which is overly verbose. When pressing escape after editing the text in a placaeholder, the place holder becomes non focused. Following is the developer info for a content placeholder after I've edited the text and pressed escape:

INFO - globalCommands.script_navigatorObject_devInfo (21:24:49.746) - MainThread (14780):
Developer info for navigator object:
name: 'Bézierkurve '
role: SHAPE
processID: 15428
roleText: None
states: SELECTABLE, FOCUSABLE, EDITABLE
isFocusable: True
hasFocus: False
Python object: <NVDAObjects.IAccessible.IAccessible object at 0x06122650>
Python class mro: (<class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'documentBase.TextContainerObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <class 'garbageHandler.TrackedObject'>, <class 'object'>)
description: None
location: RectLTWH(left=331, top=421, width=38, height=43)
value: None
TextInfo: <class 'NVDAObjects.NVDAObjectTextInfo'>
appModule: AppModule(soffice, appName='soffice', processID=15428)
appModule.productName: 'LibreOffice'
appModule.productVersion: '25.2.0.0'
appModule.helperLocalBindingHandle: c_long(121962568)
appModule.appArchitecture: 'AMD64'
windowHandle: 2820326
windowClassName: 'SALFRAME'
windowControlID: 0
windowStyle: 349110272
extendedWindowStyle: 256
windowThreadID: 2124
windowText: 'Slides_test.odp – LibreOfficeDev Impress'
displayText: ''
IAccessibleObject: <POINTER(IAccessible2) ptr=0x771976c at a357530>
IAccessibleChildID: 0
IAccessible event parameters: windowHandle=2820326, objectID=-4, childID=-1026
IAccessible accName: 'Bézierkurve '
IAccessible accRole: ROLE_SYSTEM_CLIENT
IAccessible accState: STATE_SYSTEM_SIZEABLE, STATE_SYSTEM_MOVEABLE, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_SELECTABLE, STATE_SYSTEM_VALID (3538944)
IAccessible accDescription: ' '
IAccessible accValue: None
IAccessible2 windowHandle: 2820326
IAccessible2 uniqueID: -1026
IAccessible2 role: IA2_ROLE_SHAPE
IAccessible2 states: IA2_STATE_EDITABLE (8)
IAccessible2 attributes: 'style:Bézierkurve;'
IAccessible2 relations: describedBy * 1

Expected behavior: The focus should land on the placeholder and NVDA should read the placeholder type and the text in it.

Actual behavior: NVDA is silent when navigating to the placeholder with tab or shift+tab.

Also:

cc: @michaelweghorn I tested with Libreoffice 25.2 and NVDA 2024.4 Beta. Slides_test.odp

michaelweghorn commented 1 month ago

@Adriani90 That will need further analysis.

  • You cannot jump from slide to slide with arrow keys when opening a new document, see attached document. Following is written to the log from time to time when arrowing up and down:

[...]

At first glance, it looks like NVDA is trying to create a TextInfo and retrieving the caret position from a slide object (role: SHAPE) that doesn't actually implement the IAccessibleText interface.