Bug 167296 - NVDA does not announce slide newly focused/selected in Impress slide view
Summary: NVDA does not announce slide newly focused/selected in Impress slide view
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Impress (show other bugs)
Version:
(earliest affected)
25.8.0.0 alpha0+
Hardware: All Windows (All)
: medium normal
Assignee: Michael Weghorn
URL:
Whiteboard: target:26.2.0
Keywords: accessibility
Depends on:
Blocks: a11y-Windows
  Show dependency treegraph
 
Reported: 2025-06-30 11:49 UTC by Michael Weghorn
Modified: 2025-06-30 17:35 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Weghorn 2025-06-30 11:49:40 UTC
This was originally discussed on the a11y mailing list:
https://listarchives.libreoffice.org/global/accessibility/msg01259.html

Steps to reproduce on Windows:

1) start NVDA screen reader
2) start Impress
3) make sure "View" -> "Slide Pane" is enabled
4) create a few slides using Ctrl+M (or alternatively open a presentation that has more than just 1 slide)
5) press F6 until focus is in the slides pane
6) press Tab to move focus to a slide in the slides pane
7) use Up/Down keys to switch between slides

Actual result:
NVDA doesn't announce the newly selected/focused slide in the slides view.

Expected result:
NVDA should announce the newly selected/focused slide.

Additional information:
NVDA 2025.1.2

With a current NVDA development version, this exception can be seen in NVDA log:

ERROR - eventHandler.executeEvent (13:46:32.234) - MainThread (10300):
error executing event: gainFocus on <NVDAObjects.IAccessible.IAccessible object at 0x0AEBDFF0> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.py", line 348, in executeEvent
    if isGainFocus and not doPreGainFocus(obj, sleepMode=sleepMode):
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "eventHandler.py", line 382, in doPreGainFocus
    if not api.setFocusObject(obj):
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "api.py", line 189, in setFocusObject
    setNavigatorObject(obj, isFocus=True)
  File "api.py", line 348, in setNavigatorObject
    review.setCurrentMode("document", False)
  File "review.py", line 140, in setCurrentMode
    pos = func(obj)
          ^^^^^^^^^
  File "review.py", line 59, in getDocumentPosition
    pos = obj.treeInterceptor.makeTextInfo(obj)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "documentBase.py", line 76, in makeTextInfo
    return self.TextInfo(self, position)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "compoundDocuments.py", line 287, in __init__
    self._start = self._end = self._startObj.makeTextInfo(position)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "documentBase.py", line 76, in makeTextInfo
    return self.TextInfo(self, position)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "textInfos\offsets.py", line 505, in __init__
    self._startOffset = self._endOffset = self._getCaretOffset()
                                          ^^^^^^^^^^^^^^^^^^^^^^
  File "textInfos\offsets.py", line 267, in _getCaretOffset
    raise NotImplementedError
NotImplementedError


Version: 26.2.0.0.alpha0+ (X86_64) / LibreOffice Community
Build ID: 19fa16859e65ebdf86554110cecbecf67e9594e1
CPU threads: 12; OS: Windows 11 X86_64 (build 26100); UI render: Skia/Raster; VCL: win
Locale: en-US (en_DE); UI: en-US
Calc: threaded

(which is master as of bc58a54d513702bc07906627dce073f05d7978fd + 2 unrelated pending Gerrit changes, see https://gerrit.libreoffice.org/c/core/+/187183/2
Comment 1 Michael Weghorn 2025-06-30 12:01:18 UTC
Pending fix: https://gerrit.libreoffice.org/c/core/+/187188
Comment 2 Commit Notification 2025-06-30 17:34:54 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/697fadb8f4efdc09091088261ca1b43984c029b4

tdf#167296 sd a11y: Use better accessible role for slides view

It will be available in 26.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.