nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.13k stars 639 forks source link

Spelchecker in ms Word XP and 2003 giving strange results #883

Closed nvaccessAuto closed 9 years ago

nvaccessAuto commented 14 years ago

Reported by briang1 on 2010-09-04 18:25 There is a long history I know on this, but all previous tickets dating back to number 95 seem to be closed so, here we go. In 2010.1, in Word XP and 2003, we had no reading of anything but the suggestions and actions on them. However in recent snaps we now have spelling errors reported as grammar errors and the whole contextual text read as a chunk without spaces as well. I realise that its working better in 2007, but it seems quite a few still prefer 2002/3 versions and I feel this needs to be looked at again, and at least the misleading parts suppressed. Note I'm talking of manual spell checking on a document here.

Even if you turn off grammar checking it still thinks it has a grammar error.

nvaccessAuto commented 14 years ago

Comment 1 by jteh on 2010-09-24 04:42 Can you please provide exact steps to reproduce here? I'm not really sure what you're getting at. :)

nvaccessAuto commented 14 years ago

Comment 2 by briang1 on 2010-09-24 09:16 OK, lets try this again. At present I only have access to xp, but others report similar in 2003...

Make a word xp or 2003 file with errors in it, ie spelling errors turned off in the prefs etc. then go to tools and check the spelling there. The dialogue says, Grammar error, and reads the contextual display of the error as one long word.

What should occur is it should say, spelling error and read that sentence as it would normally, maybe with spelling error at the word its querying, as it would in live checking.

If you tab, you do get to the suggestions list its true, but the above details are not at all helpful especially if you do have grammar checking on, as then you are not sure which error is present.

I understand that grammar errors appear in green in the context display, while spelling ones are in red. Info obtained from Hal.

Does this help?

nvaccessAuto commented 14 years ago

Comment 3 by jteh (in reply to comment 2) on 2010-09-24 09:22 Replying to briang1:

At present I only have access to xp, but others report similar in 2003...

2003 may have had problems a few months ago, but these should have been fixed in recent snapshots and 2010.2beta1. I need to verify this again, but it did work last time I checked. We don't officially support XP, so it very well may not work there.

nvaccessAuto commented 14 years ago

Comment 4 by briang1 on 2010-09-24 10:50 Well one 2003 user has reported its still announcing all errors as grammar errors, but there seems to be some confusion on how the contextual text should be read. I'm awaiting some clarification before I say more about word 2003. However, I did note that Msoft is still supporting Office XP as they sent me a load of updates for it last week. Out of interest in Wordxp the diagnostic nvda/f1 looks like.

IO - keyboardHandler.internal_keyDownEvent (11:18:38): key press: f7 IO - speech.speakText (11:18:39): Speaking u'Spelling and Grammar: English (U.K.) dialog Not in Dictionary:' IO - speech.speakText (11:18:39): Speaking u'Grammatical error: isateestofthespellcheckerofwwordittseld\ntoseewhathappens.\n\n' IO - keyboardHandler.internal_keyDownEvent (11:18:50): key press: nvda+f1 INFO - appModules._default.AppModule.script_navigatorObject_devInfo (11:18:50): Developer info for navigator object: name: u'Grammatical error:' role: ROLE_UNKNOWN states: STATE_FOCUSABLE, STATE_FOCUSED Python object: <NVDAObjects.IAccessible.ContentGenericClient object at 0x02220E50> Python class mro: (<class 'NVDAObjects.IAccessible.ContentGenericClient'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <type 'object'>) description: None location: (295, 269, 310, 77) value: u'isateestofthespellcheckerofwwordittseld\ntoseewhathappens.\n\n' appModule: <winword (appName winword, process ID 2084) at address 2220bf0> TextInfo: <class 'displayModel.DisplayModelTextInfo'> windowHandle: 394012 windowClassName: u'_WwO' windowControlID: 18 windowStyle: 1344274432 windowThreadID: 1380 windowText: u'\x00' IAccessibleObject: <POINTER(IAccessible) ptr=0x1a2880 at 225d580> IAccessibleChildID: 0 IAccessible event parameters: windowHandle=394012, objectID=-4, childID=0 IAccessible accRole: ROLE_SYSTEM_CLIENT IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_VALID (1048580)

nvaccessAuto commented 14 years ago

Comment 6 by mdcurran on 2010-12-05 03:46 Miss-announcement of 'grammar error' definitely fixed in cd94aac2f7403c911b4840f0441a56dfdc29d9ce.

Possibly fixed the issues in Word XP Spell Check error field. The words were being run together because 1. it was resorting to displayModel and 2. the displayModel in-process code was not picking up the spaces between the words. Hopefully now (as long as Word XP really supports this) NVDA will use the special Spell Check Error field NVDAObject class that Word 2003 and above use, plus it will no longer fall back to displayModel. Please report if Word XP spell check now works better. As I do not have Word XP, I may have typoed and or there could be errors etc... we'll need to play with it to get it right.

nvaccessAuto commented 14 years ago

Comment 7 by briang1 on 2010-12-05 10:34

Hi, well, I guess the answer to the question is no, its not obviously quite the same as 2003. I have a log fragment from 70, then the nvda/f1 output, then the same from the previous version, 2010.2.

I notice the watchdog is busy when you select the option, but i imagine this has notheing to do with much other than the slow display.

I hope this helps.

IO - speech.speakText (10:08:06): Speaking u'Tools Tools Menu T' IO - inputCore.InputManager.executeGesture (10:08:07): Input: kb(desktop):downarrow IO - speech.speakText (10:08:07): Speaking u'Spelling and Grammar... Checks the proofing in the active document S' IO - inputCore.InputManager.executeGesture (10:08:08): Input: kb(desktop):enter DEBUGWARNING - watchdog._watcher (10:08:08): Trying to recover from freeze, core stack: File "nvda.pyw", line 139, in File "core.pyc", line 263, in main File "wx_core.pyc", line 8007, in MainLoop File "wx_core.pyc", line 7303, in MainLoop File "core.pyc", line 248, in Notify File "IAccessibleHandler.pyc", line 848, in pumpAll File "IAccessibleHandler.pyc", line 653, in processFocusWinEvent File "IAccessibleHandler.pyc", line 533, in winEventToNVDAEvent File "NVDAObjects\IAccessibleinit.pyc", line 37, in getNVDAObjectFromEvent File "IAccessibleHandler.pyc", line 361, in accessibleObjectFromEvent

IO - speech.speakText (10:08:09): Speaking u'Spelling and Grammar: English (U.K.) dialog Not in Dictionary:' IO - speech.speakText (10:08:09): Speaking u'edit' ERROR - eventHandler.executeEvent (10:08:09): error executing event: gainFocus on <NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject object at 0x01CBE830> with extra args of {} Traceback (most recent call last): File "eventHandler.pyc", line 135, in executeEvent File "eventHandler.pyc", line 84, in init File "eventHandler.pyc", line 90, in next File "NVDAObjectsinit.pyc", line 769, in event_gainFocus File "appModules\winword.pyc", line 54, in reportFocus File "baseObject.pyc", line 21, in get File "NVDAObjects\window\winword.pyc", line 285, in _get_text File "core.pyc", line 40, in newgetattr File "comtypes\client\lazybind.pyc", line 149, in getattr File "comtypes\automation.pyc", line 664, in _invoke COMError: (-2147352567, 'Exception occurred.', (u'This method or property is not available because the proofing dialog box is active.', u'Microsoft Word', u'C:\Program Files\Microsoft Office\Office10\1033\wdmain10.chm', 37373, None)) IO - inputCore.InputManager.executeGesture (10:08:18): Input: kb(desktop):downarrow DEBUG - queueHandler.isPendingItems (10:08:18): pending events in eventQueue: False ERROR - scriptHandler.executeScript (10:08:18): error executing script: <bound method Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject.script_caret_moveByLine of <NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject object at 0x01CBE830>> with gesture u'down arrow' Traceback (most recent call last): File "scriptHandler.pyc", line 131, in executeScript File "editableText.pyc", line 82, in script_caret_moveByLine File "editableText.pyc", line 79, in _caretMovementScriptHelper File "editableText.pyc", line 67, in _caretScriptPostMovedHelper File "speech.pyc", line 498, in speakTextInfo File "NVDAObjects\window\winword.pyc", line 207, in getTextWithFields File "baseObject.pyc", line 21, in get File "NVDAObjects\window\winword.pyc", line 285, in _get_text File "core.pyc", line 40, in newgetattr File "comtypes\client\lazybind.pyc", line 149, in getattr File "comtypes\automation.pyc", line 664, in _invoke COMError: (-2147352567, 'Exception occurred.', (u'This method or property is not available because the proofing dialog box is active.', u'Microsoft Word', u'C:\Program Files\Microsoft Office\Office10\1033\wdmain10.chm', 37373, None)) IO - inputCore.InputManager.executeGesture (10:08:19): Input: kb(desktop):uparrow DEBUG - queueHandler.isPendingItems (10:08:19): pending events in eventQueue: False ERROR - scriptHandler.executeScript (10:08:19): error executing script: <bound method Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject.script_caret_moveByLine of <NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject object at 0x01CBE830>> with gesture u'up arrow' Traceback (most recent call last): File "scriptHandler.pyc", line 131, in executeScript File "editableText.pyc", line 82, in script_caret_moveByLine File "editableText.pyc", line 79, in _caretMovementScriptHelper File "editableText.pyc", line 67, in _caretScriptPostMovedHelper File "speech.pyc", line 498, in speakTextInfo File "NVDAObjects\window\winword.pyc", line 207, in getTextWithFields File "baseObject.pyc", line 21, in get File "NVDAObjects\window\winword.pyc", line 285, in _get_text File "core.pyc", line 40, in newgetattr File "comtypes\client\lazybind.pyc", line 149, in getattr File "comtypes\automation.pyc", line 664, in _invoke COMError: (-2147352567, 'Exception occurred.', (u'This method or property is not available because the proofing dialog box is active.', u'Microsoft Word', u'C:\Program Files\Microsoft Office\Office10\1033\wdmain10.chm', 37373, None)) IO - inputCore.InputManager.executeGesture (10:08:20): Input: kb(desktop):rightarrow DEBUG - queueHandler.isPendingItems (10:08:20): pending events in eventQueue: False ERROR - scriptHandler.executeScript (10:08:20): error executing script: <bound method Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject.script_caret_moveByCharacter of <NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject object at 0x01CBE830>> with gesture u'right arrow' Traceback (most recent call last): File "scriptHandler.pyc", line 131, in executeScript File "editableText.pyc", line 85, in script_caret_moveByCharacter File "editableText.pyc", line 79, in _caretMovementScriptHelper File "editableText.pyc", line 67, in _caretScriptPostMovedHelper File "speech.pyc", line 498, in speakTextInfo File "NVDAObjects\window\winword.pyc", line 207, in getTextWithFields File "baseObject.pyc", line 21, in get File "NVDAObjects\window\winword.pyc", line 285, in _get_text File "core.pyc", line 40, in newgetattr File "comtypes\client\lazybind.pyc", line 149, in getattr File "comtypes\automation.pyc", line 664, in _invoke COMError: (-2147352567, 'Exception occurred.', (u'This method or property is not available because the proofing dialog box is active.', u'Microsoft Word', u'C:\Program Files\Microsoft Office\Office10\1033\wdmain10.chm', 37373, None)) IO - inputCore.InputManager.executeGesture (10:08:21): Input: kb(desktop):leftarrow DEBUG - queueHandler.isPendingItems (10:08:21): pending events in eventQueue: False ERROR - scriptHandler.executeScript (10:08:21): error executing script: <bound method Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject.script_caret_moveByCharacter of <NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject object at 0x01CBE830>> with gesture u'left arrow' Traceback (most recent call last): File "scriptHandler.pyc", line 131, in executeScript File "editableText.pyc", line 85, in script_caret_moveByCharacter File "editableText.pyc", line 79, in _caretMovementScriptHelper File "editableText.pyc", line 67, in _caretScriptPostMovedHelper File "speech.pyc", line 498, in speakTextInfo File "NVDAObjects\window\winword.pyc", line 207, in getTextWithFields File "baseObject.pyc", line 21, in get File "NVDAObjects\window\winword.pyc", line 285, in _get_text File "core.pyc", line 40, in newgetattr File "comtypes\client\lazybind.pyc", line 149, in getattr File "comtypes\automation.pyc", line 664, in _invoke COMError: (-2147352567, 'Exception occurred.', (u'This method or property is not available because the proofing dialog box is active.', u'Microsoft Word', u'C:\Program Files\Microsoft Office\Office10\1033\wdmain10.chm', 37373, None)) IO - inputCore.InputManager.executeGesture (10:08:22): Input: kb(desktop):tab IO - speech.speakText (10:08:22): Speaking u'Undo Edit button Alt+U' IO - inputCore.InputManager.executeGesture (10:08:24): Input: kb(desktop):tab IO - speech.speakText (10:08:24): Speaking u'Change button Alt+C' IO - inputCore.InputManager.executeGesture (10:08:25): Input: kb(desktop):tab IO - speech.speakText (10:08:25): Speaking u'Change All button Alt+l' IO - inputCore.InputManager.executeGesture (10:08:27): Input: kb(desktop):tab IO - speech.speakText (10:08:27): Speaking u'AutoCorrect button Alt+r' IO - inputCore.InputManager.executeGesture (10:08:28): Input: kb(desktop):tab IO - speech.speakText (10:08:28): Speaking u'Dictionary language: combo box English (U.K.) Alt+D' IO - inputCore.InputManager.executeGesture (10:08:31): Input: kb(desktop):tab IO - speech.speakText (10:08:31): Speaking u'Check grammar check box not checked Alt+k' IO - inputCore.InputManager.executeGesture (10:08:34): Input: kb(desktop):tab IO - speech.speakText (10:08:34): Speaking u'Cancel button' IO - inputCore.InputManager.executeGesture (10:08:36): Input: kb(desktop):space IO - speech._speakSpellingGen (10:08:36): Speaking character u'space' IO - speech.speakText (10:08:36): Speaking u'Document1 - Microsoft Word' IO - speech.speakText (10:08:36): Speaking u'Document1' IO - speech.speakText (10:08:36): Speaking u'edit' IO - speech.speakText (10:08:36): Speaking u'page 1 align left This is a very siily peice of typong to teest the spelllchucker\r' IO - inputCore.InputManager.executeGesture (10:08:41): Input: kb(desktop):control+alt+r INFO - core.main (10:08:42): Exiting DEBUG - core.main (10:08:42): Terminating watchdog DEBUG - core.main (10:08:42): Terminating GUI INFO - config.save (10:08:42): Configuration saved DEBUG - core.main (10:08:42): Cleaning up running treeInterceptors DEBUG - core.main (10:08:42): Terminating global plugin handler DEBUG - core.main (10:08:42): Terminating IAccessible support DEBUG - core.main (10:08:42): Terminating UIA support DEBUG - core.main (10:08:42): Terminating winConsole support DEBUG - core.main (10:08:42): Terminating Java Access Bridge support DEBUG - core.main (10:08:42): Terminating NVDAHelper DEBUG - core.main (10:08:42): Terminating keyboard handler DEBUG - core.main (10:08:42): Terminating mouse handler DEBUG - core.main (10:08:42): Terminating braille DEBUG - core.main (10:08:42): Terminating speech DEBUG - core.main (10:08:43): core done INFO - nvda (10:08:43): NVDA exit

Input: kb(desktop):nvda+f1 INFO - globalCommands.GlobalCommands.script_navigatorObject_devInfo (10:13:24): Developer info for navigator object: name: None role: ROLE_EDITABLETEXT states: STATE_FOCUSABLE, STATE_FOCUSED Python object: <NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject object at 0x022D1170> Python class mro: (<class 'NVDAObjects.Dynamic_SpellCheckErrorFieldIAccessibleWindowNVDAObject'>, <class 'appModules.winword.SpellCheckErrorField'>, <class 'NVDAObjects.window.winword.WordDocument'>, <class 'NVDAObjects.behaviors.EditableTextWithoutAutoSelectDetection'>, <class 'editableText.EditableTextWithoutAutoSelectDetection'>, <class 'NVDAObjects.behaviors.EditableText'>, <class 'editableText.EditableText'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <type 'object'>) description: '' location: (295, 269, 310, 77) value: None appModule: <winword (appName winword, process ID 2312) at address 239eb90> TextInfo: <class 'NVDAObjects.window.winword.WordDocumentTextInfo'> windowHandle: 1180364 windowClassName: u'_WwO' windowControlID: 18 windowStyle: 1344274432 windowThreadID: 3700 windowText: u'\x00' IAccessibleObject: <POINTER(IAccessible) ptr=0x1af1c0 at 3e1a990> IAccessibleChildID: 0 IAccessible event parameters: windowHandle=1180364, objectID=-4, childID=0 IAccessible accRole: ROLE_SYSTEM_CLIENT IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_VALID (1048580) and from 2010.2 rc1

key press: nvda+f1 INFO - appModules._default.AppModule.script_navigatorObject_devInfo (10:16:29): Developer info for navigator object: name: u'Grammatical error:' role: ROLE_UNKNOWN states: STATE_FOCUSABLE, STATE_FOCUSED Python object: <NVDAObjects.IAccessible.ContentGenericClient object at 0x022F2FF0> Python class mro: (<class 'NVDAObjects.IAccessible.ContentGenericClient'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <type 'object'>) description: None location: (295, 269, 310, 77) value: u'Thisisaverysiilypeiceoftypongtoteestthe\nspelllchucker\n\n' appModule: <winword (appName winword, process ID 2312) at address 22cfd90> TextInfo: <class 'displayModel.DisplayModelTextInfo'> windowHandle: 3015534 windowClassName: u'_WwO' windowControlID: 18 windowStyle: 1344274432 windowThreadID: 3700 windowText: u'\x00' IAccessibleObject: <POINTER(IAccessible) ptr=0x1ae648 at 2300530> IAccessibleChildID: 0 IAccessible event parameters: windowHandle=3015534, objectID=-4, childID=0 IAccessible accRole: ROLE_SYSTEM_CLIENT IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_VALID (1048580)

Any more info needed, let me know.

nvaccessAuto commented 13 years ago

Comment 8 by mdcurran on 2010-12-14 00:45 As log fragment in previous comment clearly shows that Word XP spellCheck error field can't be supported the same way as future MS Word versions, that specific code has been removed in 9ac9f8f6a8dbd8ba1d71e4cd0ced1954645ee3b6. So, since that there is nothing we can really do to support the Word XP spellCheck error field, and because the bugs in future Word versions are now fixed, I am closing this ticket as fixed. Changes: State: closed