nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 625 forks source link

When Performing a Continuous Read Command with OpenOffice 4.1 or LibreOffice, NVDA Stops Reading After Speaking a Few Lines #4119

Closed nvaccessAuto closed 2 weeks ago

nvaccessAuto commented 10 years ago

Reported by dgoldfield on 2014-05-05 13:56 When using NVDA with OpenOffice 4.1, speech often stops reading on its own after reading several lines of text.

nvaccessAuto commented 10 years ago

Comment 1 by briang1 on 2014-05-06 08:03 Tickets 422 and 96 to name but two seem to suggest this sort of thing is a long running issue. When I last enquried, I was told it was a problem in all the Office programs based on this code, Indeed Lotus Symphony does this as well.

There seems no way for nvda to actually tell when to carry on when the paragraph ends.

nvaccessAuto commented 9 years ago

Comment 2 by jteh on 2015-05-31 23:49 This should work correctly for the most part in Symphony (see the last comments in #910), but does not in OpenOffice/LibreOffice.

See LibreOffice bug 91739.

Qchristensen commented 6 years ago

Just updating to tag this as affecting LibreOffice as well.

One workaround I have found which seems to work, is to press control+end to move to the end of the document, then control+home to move back to the start. After that, say all seems to work.

Anyone looking to work on this issue, there is more info on the LibreOffice bug Jamie linked to.

Brian1Gaff commented 6 years ago

Is this with a document longer than the window? I could not get this to work on my portable copy,and it also tened to stop if a blank line was cose to the bottom of the screen. It seems to me that there is something odd about this editable area. As I've said before it seems to not always know its gone to a new line. In Word at the end of a line you hear it say carriage return, but not in Libra. When pasting into Libra from Office 2002 say, the end of lines seem to have vanished to some extent, making justifying it hard to do.

Brian

bglists@blueyonder.co.uk Sent via blueyonder. Please address personal email to:- briang1@blueyonder.co.uk, putting 'Brian Gaff' in the display name field. ----- Original Message ----- From: "Quentin Christensen" notifications@github.com To: "nvaccess/nvda" nvda@noreply.github.com Cc: "Subscribed" subscribed@noreply.github.com Sent: Tuesday, October 10, 2017 5:06 AM Subject: Re: [nvaccess/nvda] When Performing a Continuous Read Command with OpenOffice 4.1 or LibreOffice, NVDA Stops Reading After Speaking a Few Lines (#4119)

Just updating to tag this as affecting LibreOffice as well.

One workaround I have found which seems to work, is to press control+end to move to the end of the document, then control+home to move back to the start. After that, say all seems to work.

Anyone looking to work on this issue, there is more info on the LibreOffice bug Jamie linked to.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/nvaccess/nvda/issues/4119#issuecomment-335355102

vsfoote commented 6 years ago

As Jamie has noted in tdf#91739 the issue is structural with how the accessible tree of a document is exposed. That is, FlowsFrom--FlowsTo relations are exposed, but both LibreOffice and OpenOffice do not expose the entire accessible tree and only parse what content is exposed. Refs: tdf#35652, aoo#117542

The ATK/AT-SPI side has long standing Gnome issues of bug 652548 for "AtkDocument", and "AtkCollection" interfaces bug 345750 to make use of the AT-SPI "Accessibility::Collection" idl that if implemented would provide a common framework in the UNO Accessibility API for ia2 events to follow.

Until that can be implemented, not clear this can be fixed for screen readers.

zahra21 commented 6 years ago

hello. as i am not technical, i did not understand the reasons which you provided. but the only solution for me is using file menu, preview in web browser to make temporary copy of my file in html format, opens my default web browser (for me firefox), and i read my file with firefox which requires more process and more usage of ram. what should i do? in a normal reading, nvda only reads one or two lines. but with using of suggestion which quentin provided, i can maybe read one paragraph and depends that how many lines one paragraph contain to be read by nvda! i appreciate any help in this regard, God bless you and his infinite mercy i pray for you.

zahra21 commented 6 years ago

whats the solution for me? if i use preview in web browser and read my files with firefox, unfortunately firefox ignores right to left mark and causes degradation of supporting and reading my persian documents. i sincerely appreciate if someone tell me how should i make change in about:config of firefox to not ignores right to left mark! i realy need sayAll, my books are hundreds of pages and i realy cant read them just by reading one line or at most one paragraph! i sincerely appreciate you and pray for you, please help! divine infinite mercy, blessings, graces and bounties i pray for you all!

zahra21 commented 6 years ago

how you set nvda to play sound when encountering problems? i never heard error sound of nvda in any program!

Brian1Gaff commented 6 years ago

Only in snapshots. Its turned off in release versions. Brian

bglists@blueyonder.co.uk Sent via blueyonder. Please address personal email to:- briang1@blueyonder.co.uk, putting 'Brian Gaff' in the display name field. ----- Original Message ----- From: "zahra21" notifications@github.com To: "nvaccess/nvda" nvda@noreply.github.com Cc: "Brian Gaff" bglists@blueyonder.co.uk; "Comment" comment@noreply.github.com Sent: Tuesday, January 16, 2018 3:12 PM Subject: Re: [nvaccess/nvda] When Performing a Continuous Read Command with OpenOffice 4.1 or LibreOffice, NVDA Stops Reading After Speaking a Few Lines (#4119)

how you set nvda to play sound when encountering problems? i never heard error sound of nvda in any program!

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/nvaccess/nvda/issues/4119#issuecomment-357990536

Adriani90 commented 5 years ago

@vsfoote is there any further work on this issue? I guess it is still reproducible. Right?

Qchristensen commented 5 years ago

Still reproducible in Open Office 4.1.6 and LibreOffice 6.1.3.2 with NVDA 2018.4.1 and those linked issues against OO and LO are still open as well.

Perhaps the question now is, is there anything we can (and want to) do in NVDA to overcome this, or wait for OO and LO to resolve from their end?

Adriani90 commented 5 years ago

Hm, after how many lines approximately NVDA stops speeking? I am trying to reproduce it with NVDA 2019.1 in Open office 4.1.6 but I cannot. I wrote about 20 lines of text.

Adriani90 commented 5 years ago

Ok I could reproduce this issue with following document attached.

Adriani90 commented 5 years ago

ONKYO.docx

Adriani90 commented 5 years ago

It seems the issue occurs only in big documents. When you try to navigate with arrow keys, no chance to read it. There are following errors written to the log and I guess this is the reason why say all does not work as expected.

Adriani90 commented 5 years ago
IO - inputCore.InputManager.executeGesture (18:46:38.374):
Input: kb(laptop):downArrow
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:41.523):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:41.533):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:41.539):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:41.594):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:44.994):
COM pointer <POINTER(IAccessible) ptr=0x8501854 at 5562490> already deleted
IO - inputCore.InputManager.executeGesture (18:46:49.023):
Input: kb(laptop):downArrow
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:49.684):
COM pointer <POINTER(IAccessible2) ptr=0x8427c34 at 55628a0> already deleted
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:51.184):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:51.184):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IA2TextTextInfo._getCaretOffset (18:46:53.323):
IAccessibleText::caretOffset failed
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 177, in _getCaretOffset
COMError: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:53.844):
COM pointer <POINTER(IAccessible) ptr=0xb8c7e0c at 55624e0> already deleted
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:54.424):
COM pointer <POINTER(IAccessible2) ptr=0x8427c34 at 5562940> already deleted
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:54.584):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:54.634):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:54.664):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:54.743):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:54.994):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:55.053):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:55.076):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (18:46:55.104):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
ERROR - eventHandler.executeEvent (18:46:55.144):
error executing event: gainFocus on <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x04D3F110> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 150, in executeEvent
  File "eventHandler.pyc", line 163, in doPreGainFocus
  File "api.pyc", line 145, in setFocusObject
  File "api.pyc", line 238, in setNavigatorObject
  File "documentBase.pyc", line 24, in makeTextInfo
  File "compoundDocuments.pyc", line 210, in __init__
  File "documentBase.pyc", line 24, in makeTextInfo
  File "textInfos\offsets.pyc", line 405, in __init__
  File "NVDAObjects\IAccessible\__init__.pyc", line 182, in _getCaretOffset
RuntimeError: no active caret in this object
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:55.783):
COM pointer <POINTER(IAccessible) ptr=0xb8c85ec at 524cb20> already deleted
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:56.354):
COM pointer <POINTER(IAccessible2) ptr=0x8427c34 at 524c3a0> already deleted
DEBUGWARNING - comtypesMonkeyPatches.newCpbDel (18:46:57.753):
COM pointer <POINTER(IAccessible) ptr=0xb8c7d34 at 53c5cb0> already deleted
Adriani90 commented 5 years ago

the main part should be this:

ERROR - eventHandler.executeEvent (18:46:55.144):
error executing event: gainFocus on <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x04D3F110> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 150, in executeEvent
  File "eventHandler.pyc", line 163, in doPreGainFocus
  File "api.pyc", line 145, in setFocusObject
  File "api.pyc", line 238, in setNavigatorObject
  File "documentBase.pyc", line 24, in makeTextInfo
  File "compoundDocuments.pyc", line 210, in __init__
  File "documentBase.pyc", line 24, in makeTextInfo
  File "textInfos\offsets.pyc", line 405, in __init__
  File "NVDAObjects\IAccessible\__init__.pyc", line 182, in _getCaretOffset
RuntimeError: no active caret in this object
Adriani90 commented 5 years ago

the deeloper info for a character while trying to focus it with the carret by pressing arrow keys loks like this:

INFO - globalCommands.GlobalCommands.script_navigatorObject_devInfo (18:47:09.094):
Developer info for navigator object:
name: u''
role: ROLE_PARAGRAPH
states: STATE_FOCUSABLE, STATE_EDITABLE, STATE_MULTILINE
isFocusable: True
hasFocus: False
Python object: <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x054D4FB0>
Python class mro: (<class 'NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible'>, <class 'appModules.soffice.SymphonyParagraph'>, <class 'appModules.soffice.SymphonyText'>, <class 'NVDAObjects.behaviors.EditableTextWithAutoSelectDetection'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.behaviors.EditableText'>, <class 'editableText.EditableText'>, <class 'NVDAObjects.NVDAObject'>, <class 'documentBase.TextContainerObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <type 'object'>)
description: None
location: RectLTWH(left=0, top=794, width=1703, height=148)
value: None
appModule: <'soffice' (appName u'soffice', process ID 9024) at address 54e3910>
appModule.productName: u'LibreOffice'
appModule.productVersion: u'6.2.2.2'
TextInfo: <class 'appModules.soffice.SymphonyTextInfo'>
windowHandle: 526480L
windowClassName: u'SALFRAME'
windowControlID: 0
windowStyle: 365887488
windowThreadID: 13160
windowText: u'ONKYO.docx - LibreOffice Writer'
displayText: u''
IAccessibleObject: <POINTER(IAccessible2) ptr=0xb7642dc at 55620d0>
IAccessibleChildID: 0
IAccessible event parameters: windowHandle=526480, objectID=-4, childID=-1124
IAccessible accName: u''
IAccessible accRole: ROLE_SYSTEM_CLIENT
IAccessible accState: STATE_SYSTEM_MOVEABLE, STATE_SYSTEM_MULTISELECTABLE, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_SIZEABLE, STATE_SYSTEM_VALID (18219008)
IAccessible accDescription: u''
IAccessible accValue: u'Bedienfeld\t6'
IAccessible2 windowHandle: 526480
IAccessible2 uniqueID: -1124
IAccessible2 role: IA2_ROLE_PARAGRAPH
IAccessible2 states: IA2_STATE_MULTI_LINE, IA2_STATE_OPAQUE, IA2_STATE_EDITABLE (1544)
IAccessible2 attributes: u'heading-level:;level:;'
Adriani90 commented 5 years ago

cc: @leonardder

Adriani90 commented 5 years ago

Reproducing also in Libre office 6.2.2

LeonarddeR commented 5 years ago

Probably not much luck, but it might be good to try and reproduce this with Threshold.

Adriani90 commented 4 years ago

Still reproducible in NVDA 2019.3 RC2

Qchristensen commented 4 years ago

This issue is still present in Libre Office 7.0.0 with NVDA alpha-20763,1ef4dfb0. The workaround I noted previously still works. Press control+end to go to the end of the document, then control+home to go back to the start, THEN read with say all.

Adriani90 commented 1 year ago

@Qchristensen I think there was a pull request some months ago which handles reading while the screen is scrolling. Not sure though if it affected only Microsoft Word or also Libre Office / Open Office. Could you test the behavior now with NVDA 2023.1 RC1?

Adriani90 commented 1 year ago

I tested now and it is still reproducible with NVDA 2023.1 RC1 and Libre Office 7.5.1 or Open Office 4.1.

This error here appears when selecting text, especially by paragraph. I noticed that say all stops every time at the end of a paragraph so this might be related.

inInputHook (19448):
Input: kb(laptop):shift+downArrow
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (00:30:14.215) - MainThread (10132):
accRole failed: (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
IO - inputCore.InputManager.executeGesture (00:30:14.227) - winInputHook (19448):
Input: kb(laptop):shift+downArrow
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:30:14.227) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:30:14.227) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
IO - speech.speech.speak (00:30:14.235) - MainThread (10132):
Speaking ['ONKYO.docx - LibreOffice Writer', CancellableSpeech (still valid)]
IO - speech.speech.speak (00:30:14.235) - MainThread (10132):
Speaking ['Unbekannt', CancellableSpeech (still valid)]
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._getIA2RelationFirstTarget (00:30:14.235) - MainThread (10132):
Unable to use _getIA2TargetsForRelationsOfType, fallback to _IA2Relations.
DEBUG - NVDAObjects.IAccessible.IAccessible._get__IA2Relations (00:30:14.235) - MainThread (10132):
Not an IA2.IAccessible2
DEBUG - NVDAObjects.IAccessible.IAccessible._getIA2RelationFirstTarget (00:30:14.235) - MainThread (10132):
Unable to fetch _IA2Relations
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 1590, in _getIA2RelationFirstTarget
  File "baseObject.pyc", line 62, in __get__
  File "baseObject.pyc", line 168, in _getPropertyViaCache
  File "NVDAObjects\IAccessible\__init__.pyc", line 1505, in _get__IA2Relations
NotImplementedError
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:30:14.256) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:30:14.259) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
IO - inputCore.InputManager.executeGesture (00:30:14.259) - winInputHook (19448):
Input: kb(laptop):shift+downArrow
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:30:14.259) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:30:14.259) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
Adriani90 commented 1 year ago
IO - inputCore.InputManager.executeGesture (00:34:24.246) - winInputHook (19448):
Input: kb(laptop):control+shift+upArrow
ERROR - eventHandler.executeEvent (00:34:24.239) - MainThread (10132):
error executing event: gainFocus on <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x088D1890> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 295, in executeEvent
  File "eventHandler.pyc", line 315, in doPreGainFocus
  File "api.pyc", line 177, in setFocusObject
  File "api.pyc", line 326, in setNavigatorObject
  File "documentBase.pyc", line 74, in makeTextInfo
  File "compoundDocuments.pyc", line 234, in __init__
  File "documentBase.pyc", line 74, in makeTextInfo
  File "textInfos\offsets.pyc", line 474, in __init__
  File "NVDAObjects\IAccessible\__init__.pyc", line 227, in _getCaretOffset
RuntimeError: no active caret in this object
ERROR - eventHandler.executeEvent (00:34:24.248) - MainThread (10132):
error executing event: caret on <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x088D1890> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 300, in executeEvent
  File "eventHandler.pyc", line 101, in __init__
  File "eventHandler.pyc", line 110, in next
  File "compoundDocuments.pyc", line 489, in event_caret
  File "documentBase.pyc", line 74, in makeTextInfo
  File "compoundDocuments.pyc", line 234, in __init__
  File "documentBase.pyc", line 74, in makeTextInfo
  File "textInfos\offsets.pyc", line 474, in __init__
  File "NVDAObjects\IAccessible\__init__.pyc", line 227, in _getCaretOffset
RuntimeError: no active caret in this object
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.278) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.278) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.278) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.299) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.299) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.299) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (00:34:24.299) - MainThread (10132):
IAccessibleObject.attributes COMError (-2147467259, 'Unbekannter Fehler', (None, None, None, 0, None))
Adriani90 commented 1 year ago

cc: @michaelweghorn

michaelweghorn commented 1 year ago

Didn't analyze this any further myself so far, but the main problem described in the linked https://bugs.documentfoundation.org/show_bug.cgi?id=91739 is that off-screen paragraphs are not exposed via a11y API unless e.g. jumping to the end of the doc first and then back. The suggestion there would require a rather fundamental rework of how Writer exposes the document tree to AT.

Adriani90 commented 2 months ago

@michaelweghorn I think this particular issue is related to the pagebreaks as well, they are not exposed properly. I get following error in the NVDA log when i try to switch with left and right arrow over the pagebreak from one page to the other, and it doesn't work. The carret gets stuck. I can only press up and down arrow keys to switch from one page to the other:

IO - inputCore.InputManager.executeGesture (03:06:06.340) - winInputHook (26988):
Input: kb(laptop):leftArrow
DEBUG - editableText.EditableText._hasCaretMoved (03:06:06.345) - MainThread (32928):
Caret move detected using event. Elapsed 0.000991106 sec, retries 1
ERROR - eventHandler.executeEvent (03:06:06.349) - MainThread (32928):
error executing event: caret on <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x05C363F0> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 353, in executeEvent
  File "eventHandler.pyc", line 119, in __init__
  File "eventHandler.pyc", line 128, in next
  File "compoundDocuments.pyc", line 548, in event_caret
  File "documentBase.pyc", line 76, in makeTextInfo
  File "compoundDocuments.pyc", line 287, in __init__
  File "documentBase.pyc", line 76, in makeTextInfo
  File "textInfos\offsets.pyc", line 496, in __init__
  File "NVDAObjects\IAccessible\__init__.pyc", line 273, in _getCaretOffset
RuntimeError: no active caret in this object

So it seems the pagebreak cannot be navigated by the caret, and this is probably why continuous reading doesn't work. We rely on character navigation when using this feature.

Adriani90 commented 2 months ago

I tested with NvDA 2024.3 Beta and LO 25.2 Alpha

michaelweghorn commented 1 month ago

@michaelweghorn I think this particular issue is related to the pagebreaks as well, they are not exposed properly. I get following error in the NVDA log when i try to switch with left and right arrow over the pagebreak from one page to the other, and it doesn't work. The carret gets stuck. I can only press up and down arrow keys to switch from one page to the other:

IO - inputCore.InputManager.executeGesture (03:06:06.340) - winInputHook (26988):
Input: kb(laptop):leftArrow
DEBUG - editableText.EditableText._hasCaretMoved (03:06:06.345) - MainThread (32928):
Caret move detected using event. Elapsed 0.000991106 sec, retries 1
ERROR - eventHandler.executeEvent (03:06:06.349) - MainThread (32928):
error executing event: caret on <NVDAObjects.Dynamic_SymphonyParagraphSymphonyTextEditableTextWithAutoSelectDetectionIAccessible object at 0x05C363F0> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 353, in executeEvent
  File "eventHandler.pyc", line 119, in __init__
  File "eventHandler.pyc", line 128, in next
  File "compoundDocuments.pyc", line 548, in event_caret
  File "documentBase.pyc", line 76, in makeTextInfo
  File "compoundDocuments.pyc", line 287, in __init__
  File "documentBase.pyc", line 76, in makeTextInfo
  File "textInfos\offsets.pyc", line 496, in __init__
  File "NVDAObjects\IAccessible\__init__.pyc", line 273, in _getCaretOffset
RuntimeError: no active caret in this object

With a paragraph spanning over multiple pages, I can reproduce this mostly when using the left arrow key to go back to the previous page. (The other way usually doesn't trigger the error for me, but NVDA just says "blank" instead of the first character on the next page; moving further than announces following characters as expected.)

When debugging this with a breakpoint at where the RuntimeError gets raised (last line of your above backtrace), it looks like it's attempted to get the caret position from the wrong/previous (part of the multi-page) paragraph, as self.obj.IAccessibleTextObject.text(0, -1) prints the text of the part of the paragraph that is on the second page, not on the first page, where the caret was just moved. This seems due to NVDA not having the right focus object. Printing the text of the object that NVDA considers as the focus object (focus.IAccessibleTextObject.text(0, -1)) gives the same result.

Maybe some focus event is missing on LO side? This would need further analysis to be able to say something more explicit.

michaelweghorn commented 3 weeks ago

Pending LibreOffice fix for the issue breaking reading a full document from top to bottom: https://gerrit.libreoffice.org/c/core/+/172215

More details in the discussion in https://github.com/nvaccess/nvda/issues/4115 and in LO bug https://bugs.documentfoundation.org/show_bug.cgi?id=91739

Qchristensen commented 3 weeks ago

That's exciting news, thanks @michaelweghorn !

XLTechie commented 2 weeks ago

Thanks for all your hard work on LO accessibility, @michaelweghorn! While I no longer use it myself, I will certainly appreciate it if I ever go back, and I know many others do.

michaelweghorn commented 2 weeks ago

Pending LibreOffice fix for the issue breaking reading a full document from top to bottom: https://gerrit.libreoffice.org/c/core/+/172215

That change and a related one that implements IAccessible2_2::get_relationTargetsOfType, NVDA's preferred way to retrieve the next paragraph via the flowsTo relationship, have been merged for the current development version of LibreOffice now and reading a document works in my tests with the current development versions of LibreOffice and NVDA, so I think this issue can be closed.

Further testing and feedback is welcome, of course. LibreOffice wiki page explaining how to use daily builds for testing: https://wiki.documentfoundation.org/QA/Testing_Daily_Builds

michaelweghorn commented 2 weeks ago

Further testing and feedback is welcome, of course. LibreOffice wiki page explaining how to use daily builds for testing: https://wiki.documentfoundation.org/QA/Testing_Daily_Builds

Please note that you'll need a daily build from tomorrow or later to make sure all changes are actually included.

XLTechie commented 2 weeks ago

Closing as fixed externally. Thanks @michaelweghorn!