nvaccess / nvda

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

nvda don't finds form fields in libreoffice writer #11475

Open ilyapashuk opened 4 years ago

ilyapashuk commented 4 years ago

Steps to reproduce:

create a libreoffice writer document and insert form text field.

Actual behavior:

nvda don't seas field when moving in the document, only with object navigation, and field can't be located by normal keyboard navigation keys.

Expected behavior:

as in MsOffice, in which this fields are reported correctly.

System configuration

NVDA installed/portable/running from source:

nvda 2020.2 installed on win10

Name and version of other software in use when reproducing the issue:

libreoffice v 6.4

Brian1Gaff commented 4 years ago

There are a lot of things NVDA cannot do in Libra Office though,this just being one of them, sadly. I gather a lot of the problem is the way Libra is communicating with accessibility software, or not if you get my drift. Brian

bglists@blueyonder.co.uk Sent via blueyonder. Please address personal E-mail to:- briang1@blueyonder.co.uk, putting 'Brian Gaff' in the display name field. Newsgroup monitored: alt.comp.blind-users ----- Original Message ----- From: "ilyapashuk" notifications@github.com To: "nvaccess/nvda" nvda@noreply.github.com Cc: "Subscribed" subscribed@noreply.github.com Sent: Sunday, August 09, 2020 5:12 PM Subject: [nvaccess/nvda] nvda don't finds form fields in libreoffice writer (#11475)

Steps to reproduce:

create a libreoffice writer document and insert form text field.

Actual behavior:

nvda don't seas field when moving in the document, only with object navigation, and field can't be located by normal keyboard navigation keys.

Expected behavior:

as in MsOffice, in which this fields are reported correctly.

System configuration

NVDA installed/portable/running from source:

nvda 2020.2 installed on win10

Name and version of other software in use when reproducing the issue:

libreoffice v 6.4

-- 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/11475

Adriani90 commented 4 days ago

@michaelweghorn testing in LO 25.2 with NVDA 2024.4.1, I get following errors when traversing form fields with the arrow keys. User impact: the form field and its role is not announced:

IO - speech.speech.speak (19:27:55.817) - MainThread (1860):
Speaking ['Formular', 'Untermenü']
IO - inputCore.InputManager.executeGesture (19:27:56.120) - winInputHook (7868):
Input: kb(laptop):downArrow
IO - speech.speech.speak (19:27:56.168) - MainThread (1860):
Speaking ['Entwurfsmodus', 'aktiviert']
IO - inputCore.InputManager.executeGesture (19:27:56.334) - winInputHook (7868):
Input: kb(laptop):upArrow
IO - speech.speech.speak (19:27:56.360) - MainThread (1860):
Speaking ['Inhalts-Steuerelemente', 'Untermenü']
IO - inputCore.InputManager.executeGesture (19:27:57.083) - winInputHook (7868):
Input: kb(laptop):downArrow
IO - speech.speech.speak (19:27:57.113) - MainThread (1860):
Speaking ['Entwurfsmodus', 'aktiviert']
IO - inputCore.InputManager.executeGesture (19:27:58.213) - winInputHook (7868):
Input: kb(laptop):upArrow
IO - speech.speech.speak (19:27:58.243) - MainThread (1860):
Speaking ['Inhalts-Steuerelemente', 'Untermenü']
IO - inputCore.InputManager.executeGesture (19:27:59.213) - winInputHook (7868):
Input: kb(laptop):rightArrow
IO - speech.speech.speak (19:27:59.265) - MainThread (1860):
Speaking ['Rich Text']
IO - inputCore.InputManager.executeGesture (19:27:59.514) - winInputHook (7868):
Input: kb(laptop):downArrow
IO - speech.speech.speak (19:27:59.537) - MainThread (1860):
Speaking ['Textfeld']
IO - inputCore.InputManager.executeGesture (19:27:59.973) - winInputHook (7868):
Input: kb(laptop):downArrow
IO - speech.speech.speak (19:28:00.013) - MainThread (1860):
Speaking ['Bild']
IO - inputCore.InputManager.executeGesture (19:28:00.453) - winInputHook (7868):
Input: kb(laptop):upArrow
IO - speech.speech.speak (19:28:00.483) - MainThread (1860):
Speaking ['Textfeld']
IO - inputCore.InputManager.executeGesture (19:28:00.894) - winInputHook (7868):
Input: kb(laptop):enter
IO - speech.speech.speak (19:28:00.943) - MainThread (1860):
Speaking ['Inhalts-Steuerelemente', 'Untermenü']
IO - speech.speech.speak (19:28:00.963) - MainThread (1860):
Speaking ['Unbenannt 1 - LibreOfficeDev-Dokument', 'Dokument']
IO - speech.speech.speak (19:28:00.973) - MainThread (1860):
Speaking ['Text eingeben\x01 ausgewählt']
IO - inputCore.InputManager.executeGesture (19:28:02.938) - winInputHook (7868):
Input: kb(laptop):leftArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:02.953) - MainThread (1860):
Caret move detected using event. Elapsed 0 sec, retries 0
ERROR - scriptHandler.executeScript (19:28:02.953) - MainThread (1860):
error executing script: <bound method EditableText.script_caret_moveByCharacter of <appModules.soffice.SymphonyDocument object at 0x01131210>> with gesture 'Pfeiltaste nach links'
Traceback (most recent call last):
  File "scriptHandler.pyc", line 300, in executeScript
  File "editableText.pyc", line 247, in script_caret_moveByCharacter
  File "editableText.pyc", line 181, in _caretMovementScriptHelper
  File "editableText.pyc", line 167, in _caretScriptPostMovedHelper
  File "speech\speech.pyc", line 1461, in speakTextInfo
  File "speech\types.pyc", line 47, in __iter__
  File "speech\speech.pyc", line 1502, in getTextInfoSpeech
  File "compoundDocuments.pyc", line 357, in getTextWithFields
  File "compoundDocuments.pyc", line 169, in _getControlFieldForObject
AttributeError: 'NoneType' object has no attribute 'role'
IO - speech.speech.speak (19:28:03.013) - MainThread (1860):
Speaking ['Text eingeben\x01 nicht ausgewählt']
IO - inputCore.InputManager.executeGesture (19:28:03.273) - winInputHook (7868):
Input: kb(laptop):rightArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:03.278) - MainThread (1860):
Caret move detected using event. Elapsed 0 sec, retries 0
IO - speech.speech.speak (19:28:03.278) - MainThread (1860):
Speaking [PitchCommand(offset=30), CharacterModeCommand(True), 'T', PitchCommand(), EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (19:28:03.744) - winInputHook (7868):
Input: kb(laptop):leftArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:03.744) - MainThread (1860):
Caret move detected using bookmarks. Elapsed 0 sec, retries 0
ERROR - scriptHandler.executeScript (19:28:03.744) - MainThread (1860):
error executing script: <bound method EditableText.script_caret_moveByCharacter of <appModules.soffice.SymphonyDocument object at 0x01131210>> with gesture 'Pfeiltaste nach links'
Traceback (most recent call last):
  File "scriptHandler.pyc", line 300, in executeScript
  File "editableText.pyc", line 247, in script_caret_moveByCharacter
  File "editableText.pyc", line 181, in _caretMovementScriptHelper
  File "editableText.pyc", line 167, in _caretScriptPostMovedHelper
  File "speech\speech.pyc", line 1461, in speakTextInfo
  File "speech\types.pyc", line 47, in __iter__
  File "speech\speech.pyc", line 1502, in getTextInfoSpeech
  File "compoundDocuments.pyc", line 357, in getTextWithFields
  File "compoundDocuments.pyc", line 169, in _getControlFieldForObject
AttributeError: 'NoneType' object has no attribute 'role'
IO - inputCore.InputManager.executeGesture (19:28:04.253) - winInputHook (7868):
Input: kb(laptop):rightArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:04.253) - MainThread (1860):
Caret move detected using event. Elapsed 0 sec, retries 0
IO - speech.speech.speak (19:28:04.264) - MainThread (1860):
Speaking [PitchCommand(offset=30), CharacterModeCommand(True), 'T', PitchCommand(), EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (19:28:04.433) - winInputHook (7868):
Input: kb(laptop):rightArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:04.439) - MainThread (1860):
Caret move detected using bookmarks. Elapsed 0 sec, retries 0
IO - speech.speech.speak (19:28:04.443) - MainThread (1860):
Speaking [CharacterModeCommand(True), 'e', EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (19:28:04.632) - winInputHook (7868):
Input: kb(laptop):rightArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:04.633) - MainThread (1860):
Caret move detected using bookmarks. Elapsed 0 sec, retries 0
IO - speech.speech.speak (19:28:04.633) - MainThread (1860):
Speaking [CharacterModeCommand(True), 'x', EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (19:28:04.887) - winInputHook (7868):
Input: kb(laptop):rightArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:04.893) - MainThread (1860):
Caret move detected using event. Elapsed 0 sec, retries 0
IO - speech.speech.speak (19:28:04.893) - MainThread (1860):
Speaking [CharacterModeCommand(True), 't', EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (19:28:05.073) - winInputHook (7868):
Input: kb(laptop):rightArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:05.079) - MainThread (1860):
Caret move detected using event. Elapsed 0 sec, retries 0
IO - speech.speech.speak (19:28:05.083) - MainThread (1860):
Speaking ['Leerzeichen', EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (19:28:05.273) - winInputHook (7868):
Input: kb(laptop):downArrow
DEBUG - editableText.EditableText._hasCaretMoved (19:28:05.283) - MainThread (1860):
Caret move detected using event. Elapsed 0 sec, retries 0
ERROR - scriptHandler.executeScript (19:28:05.287) - MainThread (1860):
error executing script: <bound method EditableText.script_caret_moveByLine of <appModules.soffice.SymphonyDocument object at 0x01131210>> with gesture 'Pfeiltaste nach unten'
Traceback (most recent call last):
  File "scriptHandler.pyc", line 300, in executeScript
  File "editableText.pyc", line 242, in script_caret_moveByLine
  File "editableText.pyc", line 181, in _caretMovementScriptHelper
  File "editableText.pyc", line 167, in _caretScriptPostMovedHelper
  File "speech\speech.pyc", line 1461, in speakTextInfo
  File "speech\types.pyc", line 47, in __iter__
  File "speech\speech.pyc", line 1502, in getTextInfoSpeech
  File "compoundDocuments.pyc", line 357, in getTextWithFields
  File "compoundDocuments.pyc", line 169, in _getControlFieldForObject
AttributeError: 'NoneType' object has no attribute 'role'

I tested with text fields from the insert submenu as well, but they are not detected at all. I guess the field commands and the forms are not exposed properly in LO. Is any improvement in this regard on the road? I think having this working properly with NVDA would be a game changer in accessibility since creating forms would be so much easier and we would be more independent of Microsoft products.

michaelweghorn commented 2 days ago

@Adriani90 Do you have a sample document and exact steps to reproduce?

Somewhat related comment about keyboard navigation for form controls: https://bugs.documentfoundation.org/show_bug.cgi?id=146925#c1