Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-115801

Exception in NVDA screen reader when hovering over text edit (due to invalid return value)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P2: Important
    • 6.5.3, 6.6.0 Beta4, 6.7.0 FF
    • 6.4.3, 6.7.0 FF
    • None
    • Windows 10, qtbase self-compiled from dev branch as of commit b3930b03cd6519db068bf0fca45d3e32ff7ce2df, but also happens with Qt Creator 11.0.1 that comes with Qt 6.4.3
    • Windows
    • 9900a12df649229c9ff9e2115ac90fb7f634da1d, 100eac7a3 (6.5), 3fc198cf3 (6.6)

    Description

      When the NVDA screen reader is running, hovering with the mouse pointer over a place in a text edit (or the coding area in Qt Creator) where no character is, triggers an exception in the NVDA screen reader because Qt's ITextProvider::RangeFromPoint implementation behaves incorrectly.

       

      Sample steps to reproduce:

      1. start the NVDA screen reader (tested with 2023.1 and git master as of commit a85afcef63e536583cff077d2348d6541a3889a5)
      2. run the customtypesending example from qtbase (examples\corelib\tools\customtypesending\customtypesending.exe)
      3. hover over the text field with the mouse
      4. check NVDA log

       

      Result:

      This exception can be seen in the NVDA log:

      ERROR - eventHandler.executeEvent (19:18:09.994) - MainThread (5180):
      error executing event: mouseMove on <NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionUIA object at 0x08251370> with extra args of {'x': 2785, 'y': 390}
      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 "NVDAObjects\__init__.pyc", line 1212, in event_mouseMove
        File "NVDAObjects\UIA\__init__.pyc", line 904, in expand
        File "monkeyPatches\comtypesMonkeyPatches.pyc", line 32, in __call__
      ValueError: NULL COM pointer access
       

      Further notes:

      • This is with the "Enable mouse tracking" option enabled in NVDA (which is the case by default).
      • When using an NVDA test version or explicitly enabling the "Play a sound for logged errors" in NVDA, NVDA constantly "beeps" while moving the cursor over the edit, which is how I originally ran into this issue.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            michaelweghorn Michael Weghorn
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes