Introduction
This page is meant to be used to track elements to discuss with MS:
- Issues (question, bugs or doubts) found between UIA Specification and MS Implementation.
- Features request to be added in UIA which we had to hack in order to bridge the ATSPI/ATK functionality.
Issues
UIA Tree
- Structure Changed Automation Event: ChildAdded event is generated when an item is added, however ChildRemoved is not generated when item is removed.
- Structure Changed Automation Event: When to generate ChildrenBulkRemoved, ChildrenBulkAdded and ChildrenInvalidated?
- Navigation: Some controls (for example, ScrollBar, ListBox or ComboBox) seem to sort internal providers somehow.
- Focus: no event is fired in Vista for when the widget looses the focus. This is not a problem when the focus switches to another widget in the same app, but when the focus is sent to another app, we need this information in order to remove the ACTIVE state from the window atk object (bug 445199 (https://bugzilla.novell.com/show_bug.cgi?id=445199)).
- ControlType Automation Property: no event is generated even when the ControlType changes, for example, changing SWF.ListView.View from SWF.View.LargeIcon to SWF.View.Details.
- ToolStripSplitButton seems like it should map to ControlType.SplitButton, but in UISpy it shows up as ControlType.Button, with no way to access the dropdown items. We are assuming this is a bug in the MSAA<->UIA mapping of MS's implementation, and will be implementing our provider with support for ControlType.SplitButton.
MSDN
- StatusBar control type has TWO IsKeyboardFocusableProperty: http://msdn.microsoft.com/en-us/library/ms745809.aspx#Required_UI_Automation_Properties
- ScrollBar control type says: should support RangeValue Pattern when container doesn't support Scroll Pattern, however, ScrollBar Winform Form provider always supports RangeValue even if the container supports Scroll Pattern: "This functionality is required to be supported only if the Scroll control pattern is not supported on the container that has the scroll bar." http://msdn.microsoft.com/en-us/library/ms743712.aspx
- StatusBarPanel is Edit control type, and on MSDN it says: TextPattern is required, but with nunit test on Vista, it is not supported. http://msdn.microsoft.com/en-us/library/ms748367.aspx
- TextUnits are not well documented -- definition of "line" and "paragraph" are not well understood. http://msdn.microsoft.com/en-us/library/system.windows.automation.text.textunit.aspx
- TextUnit.Format for TextBox is supposed to resemble TextUnit.Word according to MSDN, but instead resembles TextUnit.Page.
- MessageBox (ControlType.Window) has LocalizedControlTypeProperty of "Dialog" in UISpy on Vista, but MSDN says the value should always be "window" (it is for Form). http://msdn.microsoft.com/en-us/library/ms746673.aspx
- Panel Control Type in UISpy and ClientTest doesn't support any of patterns.
- Separator Control Type in UISpy IsContentElement is TRUE, while on MSDN is FALSE.
Feature requests
- There's no API for capturing the keys.
- There's no API for measuring coordinates of fonts.
- There's no API for determing the number, position, and URI of links in a LinkLabel or invoking links other than the first one. In the Meantime an interface was defined to get these values: Mono.UIAutomation.Bridge.IHypertext
- There's no API to know if a certain widget has an image in in it (i.e.: SWF.Button, SWF.CheckBox, SWF.RadioButton,...)
- There's no API to collapse SWF.ListViewGroup, in other words: there's no way to emulate Group.InvokePattern.[Collapse/Expand] in ListView when View is LargeIcon or SmallIcon.
- There's no API to know the position of the caret in ITextProvider widgets, needed for Atk.Text.
- There's no API to cut|copy/paste text ranges to/from the clipboard, needed for Atk.EditableText.
- AutomationFocusChangedEvent is fired only once when focus changes, giving information about the widget that received the focus, however we need to receive an event also when a widget looses focus, or else we cannot notify about the loose of the Atk.StateType.Active state in a window, in case the user focuses a *different* app.
- ITextRangeProvider and ITextProvider seem to lack every edition aspect for modifying the current text (it only allows you to modify the selections!). We need this to map to Atk.EditableText.
- A multiline TextBox doesn't implement IValueProvider, which is bad for Atk because we cannot hook into the event of knowing when the text has changed (and thus, this test (http://anonsvn.mono-project.com/viewvc/trunk/uia2atk/src/UIAutomationWinforms/UIAutomationWinformsTests/TextBoxProviderTest.cs?r1=117313&r2=117314) is not working). We have then differed from MS impl here (implementing IValueProvider for that matter).


