summaryrefslogtreecommitdiffstats
path: root/src/gui/accessible
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/accessible')
-rw-r--r--src/gui/accessible/qaccessible.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index 50f023ec78..1d70598c39 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -861,15 +861,20 @@ void QAccessible::setRootObject(QObject *object)
*/
void QAccessible::updateAccessibility(QAccessibleEvent *event)
{
- if (!isActive())
+ // NOTE: Querying for the accessibleInterface below will result in
+ // resolving and caching the interface, which in some cases will
+ // cache the wrong information as updateAccessibility is called
+ // during construction of widgets. If you see cases where the
+ // cache seems wrong, this call is "to blame", but the code that
+ // caches dynamic data should be updated to handle change events.
+ if (!isActive() || !event->accessibleInterface())
return;
#ifndef QT_NO_ACCESSIBILITY
if (event->type() == QAccessible::TableModelChanged) {
- if (QAccessibleInterface *iface = event->accessibleInterface()) {
- if (iface->tableInterface())
- iface->tableInterface()->modelChange(static_cast<QAccessibleTableModelChangeEvent*>(event));
- }
+ QAccessibleInterface *iface = event->accessibleInterface();
+ if (iface && iface->tableInterface())
+ iface->tableInterface()->modelChange(static_cast<QAccessibleTableModelChangeEvent*>(event));
}
if (updateHandler) {