Don't create wxWindowAccessible by default
Don't unconditionally use wxWidgets' implementation of IAccessible for all windows when wxUSE_ACCESSIBILITY is 1, because it is inferior to the system provided one: it often lacks appropriate labels, doesn't fully support navigation and wxIAccessible isn't fully implemented. The approach, when using MSAA, recommended by Microsoft documentation is to customize accessibility for custom controls only, by proxying to the standard and overriding what is necessary. By making this change, user code is still allowed to customize accessibility if needed, without negatively impacting standard controls that don't need any custom code. See also https://github.com/wxWidgets/wxWidgets/pull/340
This commit is contained in:
parent
9c1689b850
commit
7dab555f71
@ -38,6 +38,10 @@ Changes in behaviour not resulting in compilation errors
|
||||
for getting the micro version. If you override GetToolkitVersion() you need
|
||||
to add this new third parameter.
|
||||
|
||||
- wxWindow::CreateAccessible() doesn't return accessible object by default
|
||||
anymore and GetOrCreateAccessible() may return NULL, indicating that native
|
||||
system-provided accessibility should be used.
|
||||
|
||||
Changes in behaviour which may result in build errors
|
||||
-----------------------------------------------------
|
||||
|
||||
|
@ -1449,7 +1449,7 @@ public:
|
||||
// ----------------------
|
||||
#if wxUSE_ACCESSIBILITY
|
||||
// Override to create a specific accessible object.
|
||||
virtual wxAccessible* CreateAccessible();
|
||||
virtual wxAccessible* CreateAccessible() { return NULL; }
|
||||
|
||||
// Sets the accessible object.
|
||||
void SetAccessible(wxAccessible* accessible) ;
|
||||
@ -1457,7 +1457,8 @@ public:
|
||||
// Returns the accessible object.
|
||||
wxAccessible* GetAccessible() { return m_accessible; }
|
||||
|
||||
// Returns the accessible object, creating if necessary.
|
||||
// Returns the accessible object, calling CreateAccessible if necessary.
|
||||
// May return NULL, in which case system-provide accessible is used.
|
||||
wxAccessible* GetOrCreateAccessible() ;
|
||||
#endif
|
||||
|
||||
|
@ -3186,12 +3186,6 @@ wxAccessible* wxWindowBase::GetOrCreateAccessible()
|
||||
return m_accessible;
|
||||
}
|
||||
|
||||
// Override to create a specific accessible object.
|
||||
wxAccessible* wxWindowBase::CreateAccessible()
|
||||
{
|
||||
return new wxWindowAccessible((wxWindow*) this);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user