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

text style navigation: NVDA hangs for at least 1-2.5 seconds when using MS Word with UIA disabled #16458

Closed
Adriani90 opened this issue Apr 28, 2024 · 10 comments
Labels
app/microsoft-office p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@Adriani90
Copy link
Collaborator

Steps to reproduce:

  1. Open NVDA
  2. Assign [ and shift+[ for different style navigation
  3. Assign ] and shift+] for same style navigation
  4. Open an MS Word document with different text formats, where headings are indicated by text font size instead of heading levels, see attached document for a test case
  5. Make sure UIA for MS Word is disabled in NVDA advanced settings
  6. Navigate to a heading (e.g. professional background), and Press the assigned commands for navigating to next and previous text styles

Actual behavior:

NVDA hangs and the navigation is not very efficient. The longer the document, the longer the freeze. This is written in the log:

IO - inputCore.InputManager.executeGesture (16:57:53.641) - winInputHook (18680):
Input: kb(laptop):shift+plus
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:57:54.153) - watchdog (1936):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (16:57:55.902) - MainThread (22192):
Speaking ['\n\n11/2021-2/2023:\t\tbe able e.V.\n\t\t\t\tAufgaben: Entwicklung einer langfristigen Strategie für\n\t\t\t\t\t        das Inklusionsprojekt Match my Maker\n\t\t\t\t\t        incl. Leitbild, SWAT-Analyse, Impact Chain\n\t\t\t\t\t        KPIs, Meilensteine, Kooperationsmappe etc.;\n\t\t\t\t\t        Erstellung und Einreichung von\n\t\t\t\t\t        Förderanträgen mit BMBF, BAFZA,\n\t\t\t\t\t        Stiftung Bildungschancen;\n\t\t\t\t\t        Aufbau des Vereins- und Projektcontrollings;\n\t\t\t\t\t        Kooperationsmanagement;\n\t\t\t\t\t        Konzeption und Durchführung von\n\t\t\t\t\t        inklusiven Prototyping-Workshops\n']
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:57:55.933) - MainThread (22192):
User does not want UIA in MS Word unless necessary
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:57:56.158) - watchdog (1936):
Recovered from potential freeze after 2.5051191000000017 seconds.
IO - inputCore.InputManager.executeGesture (16:57:57.225) - winInputHook (18680):
Input: kb(laptop):shift+plus
IO - speech.speech.speak (16:57:57.708) - MainThread (22192):
Speaking ['Leer']
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:57:57.726) - watchdog (1936):
Potential freeze, waiting up to 10 seconds.
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:57:57.742) - MainThread (22192):
User does not want UIA in MS Word unless necessary
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:57:58.227) - watchdog (1936):
Recovered from potential freeze after 1.0007978000001003 seconds.
IO - inputCore.InputManager.executeGesture (16:57:58.412) - winInputHook (18680):
Input: kb(laptop):ü
IO - speech.speech.speak (16:57:58.756) - MainThread (22192):
Speaking ['Freiberuflicher Werdegang']
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:57:58.791) - MainThread (22192):
User does not want UIA in MS Word unless necessary
IO - inputCore.InputManager.executeGesture (16:57:59.421) - winInputHook (18680):
Input: kb(laptop):shift+plus
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:57:59.924) - watchdog (1936):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (16:57:59.954) - MainThread (22192):
Speaking ['Personenbezogene Angaben\n']
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:57:59.991) - MainThread (22192):
User does not want UIA in MS Word unless necessary
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:58:00.424) - watchdog (1936):
Recovered from potential freeze after 1.000454199999922 seconds.
IO - inputCore.InputManager.executeGesture (16:58:00.691) - winInputHook (18680):
Input: kb(laptop):shift+plus
IO - speech.speech.speak (16:58:01.001) - MainThread (22192):
Speaking ['No previous same style text']
IO - inputCore.InputManager.executeGesture (16:58:01.706) - winInputHook (18680):
Input: kb(laptop):plus
IO - speech.speech.speak (16:58:02.163) - MainThread (22192):
Speaking ['Freiberuflicher Werdegang']
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:58:02.181) - MainThread (22192):
User does not want UIA in MS Word unless necessary
IO - inputCore.InputManager.executeGesture (16:58:02.527) - winInputHook (18680):
Input: kb(laptop):plus
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:58:03.028) - watchdog (1936):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (16:58:04.591) - MainThread (22192):
Speaking ['\nBeruflicher Werdegang\n']
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:58:04.622) - MainThread (22192):
User does not want UIA in MS Word unless necessary
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:58:05.030) - watchdog (1936):
Recovered from potential freeze after 2.5017125000000533 seconds.
IO - inputCore.InputManager.executeGesture (16:58:05.119) - winInputHook (18680):
Input: kb(laptop):shift+ü
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:58:05.634) - watchdog (1936):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (16:58:07.039) - MainThread (22192):
Speaking ['\n\n11/2021-2/2023:\t\tbe able e.V.\n\t\t\t\tAufgaben: Entwicklung einer langfristigen Strategie für\n\t\t\t\t\t        das Inklusionsprojekt Match my Maker\n\t\t\t\t\t        incl. Leitbild, SWAT-Analyse, Impact Chain\n\t\t\t\t\t        KPIs, Meilensteine, Kooperationsmappe etc.;\n\t\t\t\t\t        Erstellung und Einreichung von\n\t\t\t\t\t        Förderanträgen mit BMBF, BAFZA,\n\t\t\t\t\t        Stiftung Bildungschancen;\n\t\t\t\t\t        Aufbau des Vereins- und Projektcontrollings;\n\t\t\t\t\t        Kooperationsmanagement;\n\t\t\t\t\t        Konzeption und Durchführung von\n\t\t\t\t\t        inklusiven Prototyping-Workshops\n']
DEBUG - UIAHandler.shouldUseUIAInMSWord (16:58:07.058) - MainThread (22192):
User does not want UIA in MS Word unless necessary
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (16:58:07.134) - watchdog (1936):
Recovered from potential freeze after 2.001160900000059 seconds.

Expected behavior:

No freeze while navigating.

NVDA logs, crash dumps and other attachments:

n/a

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

alpha-31645,bf96860d (2024.2.0.31645)

Windows version:

Windows 11 23 H2

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

MS Office Word 365 MSO (Version 2403 Build 16.0.17425.20176) 64 Bit

Other information about your system:

Asus ROG strix 32 GB DDR ram, Intel I12900HK 5 ghz, NVIDIA GTX 3070TI grafic card with 8 gb dedicated storage.

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.

n/a

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

no add-ons in use

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

yes

@Adriani90
Copy link
Collaborator Author

@Adriani90
Copy link
Collaborator Author

Adriani90 commented Apr 28, 2024

cc: @mltony Is it really important to have the new line characters and the tab characters part of same style or different style navigation? I think this might have an influence on the performance of this feature. In the log many tab and new line charachters are registered.
When UIA is enabled, the performance is not that bad.

Also this could be related to #16408.

@Adriani90
Copy link
Collaborator Author

Adriani90 commented Apr 28, 2024

One further thing that impacts the performance of NVDA in this regard is the fact that NVDA tries to construct a speech uterance to speak at once the whole region where the same style or different style text is found. If the region contains a lot of text, NVDA will need longer time until it begins speaking.
@mltony is it possible to change this behavior to make NVDA read only the line or the first sentence where the cursor lands when you navigate to the region with same style or different style text? This will definitely have a positive effect already.

@mltony
Copy link
Contributor

mltony commented Apr 29, 2024

Similar to #16459 I can't seem to reproduce this.

Is it really important to have the new line characters and the tab characters part of same style or different style navigation?

Not sure I understand this question. Style nav takes any text style into account, even when style is applied to tabs and newlines. Actually I'm not sure how newlines are treadted in MSWord, I would suspect it must be impossible to set font size or color of a new line character. But I might be wrong.

to make NVDA read only the line or the first sentence where the cursor lands when you navigate to the region with same style or different style text?

In theory that should be possible, but I am reluctant to invest into this feature, because its not that important as assessed by nvaccess and there is still a chance it'll be rolled back because some of the issues with TextInfo implementations it uncovered might be difficult to fix.

@seanbudd seanbudd added app/microsoft-office p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation. labels Apr 29, 2024
@seanbudd seanbudd added this to the 2024.2 milestone Apr 29, 2024
@Adriani90
Copy link
Collaborator Author

Not sure I understand this question. Style nav takes any text style into account, even when style is applied to tabs and newlines.

That's exactly what I tried to challenge here. Is this at all needed? What is the use case to check styles on tab characters and newlines?
Sighted people would rather look for style changes on text when navigating the screen with the exes, not on style changes on tab or nwline characters.

to make NVDA read only the line or the first sentence where the cursor lands when you navigate to the region with same style or different style text?

In theory that should be possible, but I am reluctant to invest into this feature, because its not that important as assessed by nvaccess

Where has that been assessed by NV Access? Here is my use case:
Assume there is a paragraph of 5,000 characters of the same style, and you land on that paragrpaph with the same style navigation key.
Actual behavior: NVDA hangs for several seconds, and you cannot use any further keyboard key to interupt that, because NVDA tries to construct the speech uterance for the whole paragraph.
Expected behavior: NVDA is not required to construct the whole paragraph as speech uterance at once, users will need only a sentence or only one line of text to decide if they navigated to the desired place. Afterwards, people navigate the text by using the arrow, ctrl+arrow keys, alt+down arrow key or any other type of text navigation.
The purpose of navigating by styles is for efficiency reasons, helping also to understand how things are organized on the screen. But the purpose of this feature is definitely not to read entire long paragraphs at once when landing on them.

and there is still a chance it'll be rolled back because some of the issues with TextInfo implementations it uncovered might be difficult to fix.

We need confirmation from @seanbudd and @michaelDCurran and @gerald-hartig on this, but in my view this feature does not have assigned gestures by default and is a really good test environment for textInfo improvements in certain cases. We have lots of situations where features are not working perfectly in NVDA.
The most obvious reason for rolling this back in my view is the issue with the speech uterance being constructed on long paragraphs because it makes NVDA freeze and locks the keyboard.

@mltony
Copy link
Contributor

mltony commented Apr 30, 2024

Because it's simpler this way. Did we see any adverse effects of checking style of tabs and newlines?
As for low importance, Sean marked #16000 as P5 and also perhaps in some other issue he suggested not to assign any default keystrokes to style navigation.

@Adriani90
Copy link
Collaborator Author

Adriani90 commented Apr 30, 2024 via email

@Adriani90
Copy link
Collaborator Author

Here is a concrete example document. A paragrpah has 5.561 characters, NVDA freezes for at least 5 seconds until it starts speaking. This is totally inefficient because in this case NVDA should not read the whole same style text.

IO - inputCore.InputManager.executeGesture (20:26:42.017) - winInputHook (13368):
Input: kb(laptop):plus
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (20:26:42.526) - watchdog (25576):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (20:26:47.117) - MainThread (19336):
Speaking ['\n\nDeocamdata, următoarele canale sunt disponibile\n* Anunțuri generale (general announcements): acest canal este destinat exclusiv anunțurilor, oamenii pot urmări acest canal pentru a fi la curent cu lansările NVDA, lansările de addonuri, înghețarea traducerilor etc.\n* Zona utilizatorilor (users area): toată lumea poate crea subiecte și începe discuții aici\n* Zona de tutoriale cu NVDA (NVDA tutorials area): scopul este de a posta aici tutoriale cu NVDA create de comunitate, există, de asemenea, un link către magazinul NV Access pentru tutoriale oficiale\n* Zona de traduceri (translations area): în acest canal toată lumea poate crea subiecte și discuta despre traducerea NVDA în alte limbi și orice altceva legat de acest lucru\n* Zona UX design și dezvoltatori de bază (UX-design and core development area): acest canal este destinat dezvoltatorilor și colaboratorilor de dezvoltare, dar toată lumea poate citi.\n* Zona de dezvoltare a suplimentelor (Add-ons development area): toată lumea poate crea subiecte și discuta orice despre suplimentele NVDA\n* chat pentru Accesibilitate: aceasta este o cameră în care toată lumea poate posta întrebări, mesaje etc. legate de accesibilitate digitala folosind NVDA. Acest canal este dedicate mai ales dezvoltatorilor de software sau site-uri web, care au nevoie de ajutor cand folosesc NVDA pentru testare.\n* NVDA Audio room: aceasta este o cameră de chat în care oamenii pot comunica prin vorbire, similar cu sala de intrare de pe serverul NVDACon Teamtalk. Pentru acest canal sunt implementate reguli specifice.\n* Prezentare / Q&A / Keynotes: acest canal este similar cu sala de conferințe de pe serverul NVDACon de pe teamtalk, unde oamenii își pot prezenta addon-urile, pot începe o prezentare despre altceva legat de NVDA, pot stabili keynotes cu NV Access etc.\n\nUrmătoarele roluri exista pe server actual:\n* Admin: acest rol are toate drepturile asupra serverului\n* Moderators: persoanele cu acest rol pot modera chat-urile, sala audio și sala de prezentări din comunitatea internațională. De asemenea, pot posta anunțuri generale in canalul “general announcements” care sunt importante pentru comunitate. Ei nu pot modera comunitățile locale. Moderatorii comunităților locale au un rol diferit, care va fi creat dupa cerere.\n* Eventmanagers: persoanele cu acest rol pot crea și gestiona evenimente pe server, cum ar fi ore de support, conferinte in limba locala, conferinte internationale etc.\n* Devcontributors: persoanele cu acest rol sunt fie utilizatori puternici, fie dezvoltatori de bază sau dezvoltatori de addon-uri. Ei sunt singurii care pot crea subiecte și discutii în zona “UX design and core developers area”. Toate celelalte persoane pot doar să citească în acest canal.\n* Everyone: persoanele cu acest rol vor putea să posteze mesaje, să creeze subiecte în anumite canale și să vorbească în canalele vocale cu "push to talk" sau atunci când primesc dreptul de a vorbi. Aceste persoane nu pot face lucruri pe care le pot face alte roluri, dar pot să îi eticheteze pe moderatori dacă au nevoie de ceva folosind @moderators.\n\nUrmătoarele reguli sunt implementate pentru camera audio NVDA (push to talk)\n* Toată lumea este setată pe push to talk, deci trebuie să atribuiți o tastă care trebuie tinuta apasatcand vorbiti. Tasta poate fi setata în setările profilului dvs. pe Discord\n* Moderatorii pot pune pe mute persoanele de pe acest server și pot dezactiva push to talk dacă este necesar.\n* Moderatorii pot vorbi fără push to talk, putem schimba acest lucru mai târziu, dacă este necesar.\nRemarcare: există, de asemenea, o cameră audio NVDA fără push to talk. În acest canal toată lumea poate vorbi imediat. Dar asigurați-vă că vă puneți pe mute atunci când nu vorbiți. Nu vorbiți în timp ce vorbește altcineva, altfel se va produce mult zgomot și oamenii nu se vor înțelege între ei.\n\nUrmătoarele reguli sunt implementate pentru sala de prezentare\n* Numai moderatorii și managerii de evenimente pot vorbi direct. Toate celelalte persoane trebuie să solicite dreptul de a vorbi.\n* Moderatorii și managerii de evenimente au voie să eticheteze @everyone pentru a invita toate persoanele la un eveniment, dar numai managerii de evenimente pot crea și gestiona evenimente.\n\nCaracteristici pentru mesajele text\n* Discord folosește Git Markdown, puteți folosi același lucru în câmpul de editare a mesajelor pentru a formata textul dvs.\n* Shift+enter creează o linie nouă, apăsarea tastei enter trimite mesajul\n* Puteți folosi comenzile "/" (slash) înaintea mesajului pentru a face lucruri precum schimbarea poreclei. Exemplu: "/nick Razor123". Dacă scrieți doar "/nick", porecla dvs. va fi resetată la numele de utilizator implicit din profilul dvs.\n* Mesaje ce contin mai mult de 4.000 de caractere nu pot fi postate.\n\nInformatii suplimentare privind rolul devcontributors\n* Fiecare persoană cu acest rol va putea să posteze mesaje și să participe activ la discuții în zona de proiectare UX și de dezvoltare de bază. Aceștia pot posta lucruri legate de codare, muncă pe github, informații despre comitere, pot discuta despre proiectarea experienței utilizatorului etc.\n* Acest rol trebuie să fie solicitat proactiv prin postarea unui mesaj în camera de chat pentru accesibilitate, incluzând "@admin", rolul care urmează să fie solicitat (devcontributor) și numele de utilizator Github.\nIn concluzie, cu excepția rolului "everyone", orice rol trebuie solicitat în mod proactiv prin postarea unui mesaj în camera de chat privind accesibilitatea. Mesajult trebuie sa includă "@admin" și rolul pe care îl doriți.\n']
DEBUG - UIAHandler.shouldUseUIAInMSWord (20:26:47.194) - MainThread (19336):
User does not want UIA in MS Word unless necessary
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (20:26:47.532) - watchdog (25576):
Recovered from potential freeze after 5.50590780004859 seconds.

It seems NVDA needs approx. 1 second per thousant characters, at least on my machine which is an Asus Rog Strix with an Intel processor I12900HK 5 GHZ, grafic card NVIDIA GTX 3070TI with 8 gb dedicated grafic storage, 32 gB DDR.

This same sty / different style feature definitely needs optimization in this regard.

NVDA discord.docx

@Adriani90
Copy link
Collaborator Author

I found a severe freeze of at least 10 seconds also when using UIA in MS Word with style navigation, see this error ant the attached document.

IO - inputCore.InputManager.executeGesture (21:23:13.383) - winInputHook (13368):
Input: kb(laptop):control+downArrow
IO - speech.speech.speak (21:23:13.573) - MainThread (19336):
Speaking ['132\n']
DEBUG - UIAHandler.shouldUseUIAInMSWord (21:23:13.603) - MainThread (19336):
Using UIA due to suitable Office version: (16, 0, 17531)
IO - inputCore.InputManager.executeGesture (21:23:14.293) - winInputHook (13368):
Input: kb(laptop):NVDA+space
IO - inputCore.InputManager.executeGesture (21:23:14.523) - winInputHook (13368):
Input: kb(laptop):NVDA+space
IO - inputCore.InputManager.executeGesture (21:23:14.833) - winInputHook (13368):
Input: kb(laptop):plus
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (21:23:15.340) - watchdog (25576):
Potential freeze, waiting up to 10 seconds.
IO - inputCore.InputManager.executeGesture (21:23:16.913) - winInputHook (13368):
Input: kb(laptop):rightArrow
INFO - watchdog.waitForFreezeRecovery (21:23:24.851) - watchdog (25576):
Starting freeze recovery after 10.011142099974677 seconds.
DEBUGWARNING - watchdog.waitForFreezeRecovery (21:23:24.853) - watchdog (25576):
Listing stacks for Python threads:
Python stack for thread 30132 (watchdog.CancellableCallThread.execute(<CFunctionType object at 0x06B49288>)):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "watchdog.pyc", line 382, in run
  File "threading.pyc", line 629, in wait
  File "threading.pyc", line 327, in wait

Python stack for thread 30688 (visionEnhancementProviders.NVDAHighlighter.NVDAHighlighter):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "threading.pyc", line 982, in run
  File "visionEnhancementProviders\NVDAHighlighter.pyc", line 452, in _run
  File "winUser.pyc", line 460, in getMessage

Python stack for thread 25576 (watchdog):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "threading.pyc", line 982, in run
  File "watchdog.pyc", line 159, in _watcher
  File "watchdog.pyc", line 166, in waitForFreezeRecovery
  File "logHandler.pyc", line 64, in getFormattedStacksForAllThreads

Python stack for thread 13368 (winInputHook):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "threading.pyc", line 982, in run
  File "winInputHook.pyc", line 81, in hookThreadFunc

Python stack for thread 23112 (UIAHandler.UIAHandler.MTAThread):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "threading.pyc", line 982, in run
  File "UIAHandler\__init__.pyc", line 544, in MTAThreadFunc
  File "queue.pyc", line 171, in get
  File "threading.pyc", line 327, in wait

Python stack for thread 29120 (ThreadPoolExecutor-0_0):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "threading.pyc", line 982, in run
  File "concurrent\futures\thread.pyc", line 81, in _worker

Python stack for thread 28452 (synthDrivers._espeak.BgThread):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "synthDrivers\_espeak.pyc", line 201, in run
  File "queue.pyc", line 171, in get
  File "threading.pyc", line 327, in wait

Python stack for thread 19032 (hwIo.ioThread.IoThread):
  File "threading.pyc", line 1002, in _bootstrap
  File "threading.pyc", line 1045, in _bootstrap_inner
  File "hwIo\ioThread.pyc", line 258, in run

Python stack for thread 19336 (MainThread):
  File "nvda.pyw", line 415, in <module>
  File "core.pyc", line 919, in main
  File "wx\core.pyc", line 2262, in MainLoop
  File "wx\core.pyc", line 3427, in <lambda>
  File "core.pyc", line 849, in processRequest
  File "core.pyc", line 865, in Notify
  File "queueHandler.pyc", line 97, in pumpAll
  File "queueHandler.pyc", line 64, in flushQueue
  File "scriptHandler.pyc", line 243, in _queueScriptCallback
  File "keyboardHandler.pyc", line 571, in executeScript
  File "inputCore.pyc", line 224, in executeScript
  File "scriptHandler.pyc", line 295, in executeScript
  File "browseMode.pyc", line 558, in <lambda>
  File "browseMode.pyc", line 516, in _quickNavScript
  File "browseMode.pyc", line 2431, in _iterTextStyle
  File "browseMode.pyc", line 2224, in _extractStyles
  File "treeInterceptorHandler.pyc", line 255, in getTextWithFields
  File "NVDAObjects\window\winword.pyc", line 807, in getTextWithFields

DEBUGWARNING - scriptHandler.executeScript (21:23:26.219) - MainThread (19336):
error executing script: <bound method BrowseModeTreeInterceptor.addQuickNav.<locals>.<lambda> of <NVDAObjects.window.winword.WordDocumentTreeInterceptor object at 0x018C9F70>> with gesture 'plus'
Traceback (most recent call last):
  File "scriptHandler.pyc", line 295, in executeScript
  File "browseMode.pyc", line 558, in <lambda>
  File "browseMode.pyc", line 516, in _quickNavScript
  File "browseMode.pyc", line 2430, in _iterTextStyle
  File "baseObject.pyc", line 41, in __get__
  File "treeInterceptorHandler.pyc", line 231, in _get_isCollapsed
  File "baseObject.pyc", line 41, in __get__
  File "NVDAObjects\window\winword.pyc", line 1037, in _get_isCollapsed
  File "monkeyPatches\comtypesMonkeyPatches.pyc", line 86, in new__getattr__
  File "comtypes\client\lazybind.pyc", line 168, in __getattr__
  File "comtypes\automation.pyc", line 807, in _invoke
  File "monkeyPatches\comtypesMonkeyPatches.pyc", line 38, in __call__
exceptions.CallCancelled: COM call cancelled
DEBUG - UIAHandler.shouldUseUIAInMSWord (21:23:26.223) - MainThread (19336):
Using UIA due to suitable Office version: (16, 0, 17531)
INFO - watchdog.waitForFreezeRecovery (21:23:26.267) - watchdog (25576):
Recovered from freeze after 11.426774799823761 seconds.
IO - speech.speech.speak (21:23:26.274) - MainThread (19336):
Speaking [CharacterModeCommand(True), '1', EndUtteranceCommand()]
IO - inputCore.InputManager.executeGesture (21:23:26.893) - winInputHook (13368):
Input: kb(laptop):rightArrow
IO - speech.speech.speak (21:23:27.112) - MainThread (19336):
Speaking [CharacterModeCommand(True), '3', EndUtteranceCommand()]

In general, using style navigation in the attached document fails alot and is sluggish.
ONKYO.docx

@Adriani90
Copy link
Collaborator Author

The UIA related freeze seem to occur especially when no next style is found, might be related to #16436 and #16450.

seanbudd pushed a commit that referenced this issue May 20, 2024
)

Closes #16459
Closes #16408
Closes #16458
Closes #16405

Summary of the issue:
We have discovered multiple problemds with non-UIA textInfo implementation in MS Word. Some examples are #16527, #16459, #16458. Also TextInfo implenetation in Outlook has proven to be too slow for style navigation. Therefore disabling both.

Description of user facing changes
"Not supported in this document" message is spoken.

Description of development approach
Raising an error when Outlook or non-UIA Word is detected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
app/microsoft-office 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

No branches or pull requests

3 participants