spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.3k stars 1.61k forks source link

editor anomaly with screen reader (NVDA for blind users) #22487

Open FrancoisLB opened 1 month ago

FrancoisLB commented 1 month ago

Problem Description

i use NVDA screen reader (free and open source see nv access.org) with spyder version 6. in the editor panel of spyder, during moving the text cursor with up dans down arrows, NVDA is supposed to annonce line content. when a line is empty, NVDA annonce the content of the prevuous one. it doesn't say "empty line"

this anomly probably comes from use of UI Accessible class object the editor panel

What steps reproduce the problem?

first sttep : open spyder version 6 step 2 : to to text editor panel ou open a python code step 3 : install and run NVDAscreen reader step 4 to to editor pan with ctrl + shift + e shortcut step 5 : move the text cursor with up and down arrows.

What is the expected output? What do you see instead?

NVDA is supposed to annonce the text line content or "empty line" if the line is empty ! here, if a code line is followed by an empty line, NVDA will annonce correctly the content of the first line with code. when moving down the text cursor on the empty line, NVDA will repeat content of the the prévious text line instead of "empty line"

Paste Traceback/Error Below (if applicable)

no error genrated ```python-traceback PASTE TRACEBACK HERE not applicable ``` ## Versions

Dependencies

Mandatory:

aiohttp >=3.9.3 : 3.10.5 (OK) asyncssh >=2.14.0,<3.0.0 : 2.17.0 (OK) atomicwrites >=1.2.0 : 1.4.1 (OK) chardet >=2.0.0 : 5.2.0 (OK) cloudpickle >=0.5.0 : 3.0.0 (OK) cookiecutter >=1.6.0 : 2.6.0 (OK) diff_match_patch >=20181111 : 20230430 (OK) github >=2.3.0 : 2.4.0 (OK) importlib_metadata >=4.6.0 : 8.4.0 (OK) intervaltree >=3.0.2 : 3.1.0 (OK) IPython >=8.13.0,<9.0.0,!=8.17.1 : 8.27.0 (OK) jedi >=0.17.2,<0.20.0 : 0.19.1 (OK) jellyfish >=0.7 : 1.1.0 (OK) jsonschema >=3.2.0 : 4.23.0 (OK) keyring >=17.0.0 : 25.3.0 (OK) nbconvert >=4.0 : 7.16.4 (OK) numpydoc >=0.6.0 : 1.8.0 (OK) parso >=0.7.0,<0.9.0 : 0.8.4 (OK) pexpect >=4.4.0 : 4.9.0 (OK) pickleshare >=0.4 : 0.7.5 (OK) psutil >=5.3 : 6.0.0 (OK) pygments >=2.0 : 2.18.0 (OK) pylint >=3.1,<4 : 3.2.7 (OK) pylint_venv >=3.0.2 : 3.0.3 (OK) pyls_spyder >=0.4.0 : 0.4.0 (OK) pylsp >=1.12.0,<1.13.0 : 1.12.0 (OK) pylsp_black >=2.0.0,<3.0.0 : 2.0.0 (OK) pyuca >=1.2 : 1.2 (OK) qdarkstyle >=3.2.0,<3.3.0 : 3.2.3 (OK) qstylizer >=0.2.2 : 0.2.3 (OK) qtawesome >=1.3.1,<1.4.0 : 1.3.1 (OK) qtconsole >=5.6.0,<5.7.0 : 5.6.0 (OK) qtpy >=2.4.0 : 2.4.1 (OK) rtree >=0.9.7 : 1.3.0 (OK) setuptools >=49.6.0 : 73.0.1 (OK) sphinx >=0.6.6 : 8.0.2 (OK) spyder_kernels >=3.0.0,<3.1.0 : 3.0.0 (OK) superqt >=0.6.2,<1.0.0 : 0.6.7 (OK) textdistance >=4.2.0 : 4.6.2 (OK) three_merge >=0.1.1 : 0.1.1 (OK) watchdog >=0.10.3 : 5.0.1 (OK) yarl >=1.9.4 : 1.9.7 (OK) zmq >=24.0.0 : 26.2.0 (OK)

Optional:

cython >=0.21 : 3.0.11 (OK) matplotlib >=3.0.0 : 3.9.2 (OK) numpy >=1.7 : 2.1.0 (OK) pandas >=1.1.1 : 2.2.2 (OK) scipy >=0.17.0 : 1.14.1 (OK) sympy >=0.7.3 : 1.13.2 (OK)

dalthviz commented 2 weeks ago

Hi @FrancoisLB thank you for the report and sorry for the late response! I think I was able to reproduce this. Seems like adding a space over the blank line enables the reader to detect the line as empty. Also, checking the Qt issue tracker, seems like this behavior has been reported (https://bugreports.qt.io/browse/QTBUG-69472) so seems like this accessibility issues with NVDA come from Qt itself :/ What do you think @ccordoba12 ?

ccordoba12 commented 2 weeks ago

What do you think @ccordoba12?

@dalthviz, yep, it seems that's the case, which means there's little we can do about it. Could post a comment on the issue you referenced saying that that's still a problem and it's important for Spyder users to get a fix at some point? Thanks!

@FrancoisLB, Qt is the graphical toolkit on top of which Spyder is built. But it's a C++ library, so it's not so easy for us to make changes on it.

But we'll leave your issue open in case someone else in the future reports a similar problem and to monitor the situation with Qt from time to time.