Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LibreOffice: Cannot announce status bar in dialogs (e.g. Writer's "Edit Contour" dialog) #15591

Closed
michaelweghorn opened this issue Oct 6, 2023 · 2 comments · Fixed by #15592
Labels
app/libreoffice p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@michaelweghorn
Copy link
Contributor

Steps to reproduce:

  1. Start LibreOffice Writer (tested with LibreOffice 7.6.2)
  2. insert a Formula: "Insert" -> "OLE Object" -> "Formula Object", type any formula, e.g. "1+1=2"
  3. click outside of the formula then click the formula object again to focus it
  4. in Writer's menu, select "Format" -> "Wrap" -> "Edit Contour"
  5. Once the dialog shows up, press NVDA+End to announce the status bar

Actual behavior:

NVDA says:
"no status bar information"

Expected behavior:

NVDA should announce the content of the status bar in that dialog, e.g.:
"0.00" / 0.00" 0.50" x 0.18"

NVDA logs, crash dumps and other attachments:

System configuration

NVDA installed/portable/running from source:

installed

NVDA version:

NVDA 2023.2

Windows version:

Windows 10

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

LibreOffice 7.6.2

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

NVDA git master as of a380b6a, running from source

If NVDA add-ons are disabled, is your problem still occurring?

n/a

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

n/a

@michaelweghorn
Copy link
Contributor Author

michaelweghorn commented Oct 6, 2023

General support for status bar announcement in LibreOffice was added in 62536a9 , but to make the use case described here work, further changes in both, LibreOffice and NVDA are needed.

I plan to implement that and submit a PR.

michaelweghorn added a commit to michaelweghorn/nvda that referenced this issue Oct 6, 2023
 ### Link to issue number:

Fixes nvaccess#15591

 ### Summary of the issue:

Commit 62536a9
("soffice: Implement methods for status bar announcement (nvaccess#14933)")
added support for status bar announcement in LibreOffice by
searching for it in the a11y tree. For performance reasons,
only objects of specific roles are considered when traversing
the tree. The DIALOG and OPTIONPANE roles, needed to find the status
bar in Writer's "Edit Contour" dialog were not taken into
account yet, so the status bar was not found and could
therefore not be announced when pressing NVDA+End.

In addition, the status bar object in dialogs like that one
did not have the proper role in LibreOffice yet.

 ### Description of user facing changes

Status bar announcement for LibreOffice using the NVDA+End keyboard
shortcut now also works for dialogs and with the upcoming LibreOffice
version 24.2.

 ### Description of development approach

LibreOffice is adapted to expose the proper role for the status
bar in dialogs like the one mentioned above:
https://gerrit.libreoffice.org/c/core/+/157659

The DIALOG and OPTIONPANE roles are now also considered
by NVDA when traversing the a11y tree to find the status bar.

In addition, the FRAME role is also taken into account,
which is needed to support finding the status bar in
the default application window with LibreOffice >= 24.2,
see commit message of this LibreOffice change for more details:
https://gerrit.libreoffice.org/c/core/+/157658

Add a check whether the statusbar children have the
'IAccessibleTextObject' member before accessing it.

 ### Testing strategy:

1) Start LibreOffice Writer (current development version including
   https://gerrit.libreoffice.org/c/core/+/157659 )
2) insert a Formula: "Insert" -> "OLE Object" -> "Formula Object", type any formula, e.g. "1+1=2"
3) click outside of the formula then click the formula object again to focus it
4) in Writer's menu, select "Format" -> "Wrap" -> "Edit Contour"
5) Once the dialog shows up, press NVDA+End to announce the status bar

 ### Known issues with pull request:

Requires https://gerrit.libreoffice.org/c/core/+/157659
on LibreOffice side in addition for the announcement to
actually work.

 ### Code Review Checklist:

- [x] Documentation:
  - Change log entry
  - User Documentation
  - Developer / Technical Documentation
  - Context sensitive help for GUI changes
- [x] Testing:
  - Unit tests
  - System (end to end) tests
  - Manual testing
- [x] UX of all users considered:
  - Speech
  - Braille
  - Low Vision
  - Different web browsers
  - Localization in other languages / culture than English
- [x] API is compatible with existing add-ons.
- [x] Security precautions taken.
@michaelweghorn
Copy link
Contributor Author

Pending LO and NVDA changes with which this works for me:

https://gerrit.libreoffice.org/c/core/+/157659
#15592

@seanbudd seanbudd added p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority app/libreoffice triaged Has been triaged, issue is waiting for implementation. labels Oct 9, 2023
seanbudd pushed a commit that referenced this issue Oct 9, 2023
…15592)

Fixes #15591

Summary of the issue:
Commit 62536a9
("soffice: Implement methods for status bar announcement (#14933)") added support for status bar announcement in LibreOffice by searching for it in the a11y tree. For performance reasons, only objects of specific roles are considered when traversing the tree. The DIALOG and OPTIONPANE roles, needed to find the status bar in Writer's "Edit Contour" dialog were not taken into account yet, so the status bar was not found and could therefore not be announced when pressing NVDA+End.

In addition, the status bar object in dialogs like that one did not have the proper role in LibreOffice yet.

Description of user facing changes
Status bar announcement for LibreOffice using the NVDA+End keyboard shortcut now also works for dialogs and with the upcoming LibreOffice version 24.2.

Description of development approach
LibreOffice is adapted to expose the proper role for the status bar in dialogs like the one mentioned above:
https://gerrit.libreoffice.org/c/core/+/157659

The DIALOG and OPTIONPANE roles are now also considered by NVDA when traversing the a11y tree to find the status bar.

In addition, the FRAME role is also taken into account, which is needed to support finding the status bar in the default application window with LibreOffice >= 24.2, see commit message of this LibreOffice change for more details: https://gerrit.libreoffice.org/c/core/+/157658

Add a check whether the statusbar children have the 'IAccessibleTextObject' member before accessing it.
@nvaccessAuto nvaccessAuto added this to the 2024.1 milestone Oct 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
app/libreoffice p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants