Ticket #421 (closed defect: fixed)
"To" and "CC" addresses in Outlook 2007 are not read by NVDA
| Reported by: | vtsaran | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 2011.2 |
| Component: | Core | Version: | development |
| Keywords: | Cc: | ||
| Operating system: | Windows XP | Blocked by: | |
| Blocking: |
Description
When focusing on, navigating through or querying information about participant addresses or names in "to" or "cc" fields of Outlook 2007, NVDA simply says "space".
Change History
comment:2 follow-up: ↓ 3 Changed 2 years ago by mdcurran
- These controls are edit fields with a RichEdit20WPT window class.
- These controls support ITextDocument, so theoretically, if we set the 'useITextDocumentSupport' property on their NVDAObjects to True, NVDa will start reading the embedded objects via ITextDocument.
However, having tried this, all NVDA says for each embedded object is "unknown embedded object".
The reason for this is because there is a COMError (unspecified error) when calling IOleObject::getClipboardData.
I also tried two other things since getClipboardData can't be used:
- I tried using IOleObject::getMoniker (with the hope then of getting its display name). However getMoniker returns notImplemented.
- I tried QueryInterface? on the IOleObject to IDispatch and randomly trying property names like 'name' or 'displayName' in the hope that this object may also be an Outlook email recipient object. In fact 'name' does work, and gives us what we need. However, when 'name' is accessed, Outlook 2007 brings up a security dialog asking if the user wants to allow an external program access to Outlook. Of course this confuses NVDA some what, not to mention the user. Certainly not a good solution there.
So, no success with this bug so far.
comment:3 in reply to: ↑ 2 Changed 2 years ago by travisroth
Replying to mdcurran:
I used Inspect to look at the MSAA. The Value property does contain the full names/addresses of the To and CC fields. It seems NVDA's MSAA reviewing functions do not see the same object as Inspect does however, and only reports a ";" if I enter two addresses into the To field.
I am not sure if pointing NVDA at the MSAA object containing the To and CC values wold improve? It'd seem the user coudl at least read what's contained even if editting was still difficult... I assume there's a reason you've not done this?
comment:4 follow-up: ↓ 5 Changed 2 years ago by mdcurran
True, we could have NVDA report the value when the control receives focus. But, as you're aware, then trying to use the arrow keys would result in hearing only spaces and semi colons.
If we really can't fix this before 2010.1, I guess we can consider doing this for the release. As a temporary solution.
However, I'm not too sure how to do it as NVDA currently ignores the value if it thinks the control is editable, as the editable text in theory also contains the value. ... I'll think about it.
comment:5 in reply to: ↑ 4 Changed 22 months ago by vtsaran
Hi Mick,
I think hearing some kind of announcement would be better than hearing none. At the moment there is no access to those fields at all. I know, this is not perfect, but it is better than nothing.
Replying to mdcurran:
True, we could have NVDA report the value when the control receives focus. But, as you're aware, then trying to use the arrow keys would result in hearing only spaces and semi colons.
If we really can't fix this before 2010.1, I guess we can consider doing this for the release. As a temporary solution.
However, I'm not too sure how to do it as NVDA currently ignores the value if it thinks the control is editable, as the editable text in theory also contains the value. ... I'll think about it.
comment:6 Changed 22 months ago by vtsaran
Hello Mick and Jamie,
I just ran AccEventWatcher? tool from MSAA SDK 2.0 while typing in names into the "To" and "CC" fieldsof the "new message" dialog of Outlook 2007.
When suggested names come up on the screen Outlook sends the following accesible events:
- obj_CreateName
The data associated with these events contains the suggested Email addresses.
When I was selecting particular names with arrow keys, Outlook was firing obj_SelectionName that contained the name currently selected. you can simply filter those out and extract the data that way.
I think this should give you enough information to advance on this bug.
comment:7 Changed 22 months ago by vtsaran
My comment above incorrectly states the names of events. They should be OBJ_CREATE and OBJ_SELECTION.
However, as these are only applicable for the "autosuggestion" feature, I will open a new bug for this.
comment:8 Changed 16 months ago by jhomme
Hi,
In case it helps, here is the information I got when I used NVDA + F1.
Input: kb(laptop):nvda+f1
INFO - appModules._default.AppModule?.script_navigatorObject_devInfo (08:18:42):
Developer info for navigator object:
name: u'To'
role: ROLE_EDITABLETEXT
states: STATE_MULTILINE, STATE_FOCUSABLE, STATE_FOCUSED
Python object: <NVDAObjects.Dynamic_IAccessibleRichEdit20WindowNVDAObject object at 0x0243FC70>
Python class mro: (<class 'NVDAObjects.Dynamic_IAccessibleRichEdit20WindowNVDAObject'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.edit.RichEdit20'>, <class 'NVDAObjects.window.edit.RichEdit?'>, <class 'NVDAObjects.window.edit.Edit'>, <class 'NVDAObjects.behaviors.EditableTextWithAutoSelectDetection?'>, <class 'NVDAObjects.behaviors.EditableText?'>, <class 'editableText.EditableText?'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'baseObject.ScriptableObject?'>, <class 'baseObject.AutoPropertyObject?'>, <type 'object'>)
description: None
location: (232, 140, 794, 17)
value: u'Lum, Heather; '
appModule: <outlook (appName outlook, process ID 7452) at address 23b0d50>
TextInfo?: <class 'NVDAObjects.window.edit.EditTextInfo?'>
windowHandle: 722938
windowClassName: u'RichEdit20WPT'
windowControlID: 4099
windowStyle: 1342296132
windowThreadID: 8096
windowText: u' ; \x00'
IAccessibleObject: <POINTER(IAccessible) ptr=0x1a1de0 at 241e9e0>
IAccessibleChildID: 0
IAccessible event parameters: windowHandle=722938, objectID=-4, childID=0
IAccessible accRole: ROLE_SYSTEM_TEXT
IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_VALID (1048580)
comment:9 Changed 8 months ago by mdcurran
- Status changed from new to closed
- Resolution set to fixed
- Milestone set to 2011.2
Fixed in changeset:main,4431.


Wanted to see if anyone has any idea as to why this is happening. I believe, the names of recipients are stored in embedded objects and not written out as words. I can't remember if these were read in Outlook 2003, but they are definitely ignored in 2007.