summaryrefslogtreecommitdiffstats
path: root/src/gui/accessible/qaccessiblecache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/accessible/qaccessiblecache.cpp')
-rw-r--r--src/gui/accessible/qaccessiblecache.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gui/accessible/qaccessiblecache.cpp b/src/gui/accessible/qaccessiblecache.cpp
index f4242036ce..20376a54c4 100644
--- a/src/gui/accessible/qaccessiblecache.cpp
+++ b/src/gui/accessible/qaccessiblecache.cpp
@@ -38,11 +38,15 @@
****************************************************************************/
#include "qaccessiblecache_p.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qloggingcategory.h>
#ifndef QT_NO_ACCESSIBILITY
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(lcAccessibilityCache, "qt.accessibility.cache");
+
/*!
\class QAccessibleCache
\internal
@@ -57,6 +61,12 @@ static void cleanupAccessibleCache()
accessibleCache = nullptr;
}
+QAccessibleCache::~QAccessibleCache()
+{
+ for (QAccessible::Id id: idToInterface.keys())
+ deleteInterface(id);
+}
+
QAccessibleCache *QAccessibleCache::instance()
{
if (!accessibleCache) {
@@ -116,6 +126,7 @@ QAccessible::Id QAccessibleCache::insert(QObject *object, QAccessibleInterface *
}
idToInterface.insert(id, iface);
interfaceToId.insert(iface, id);
+ qCDebug(lcAccessibilityCache) << "insert - id:" << id << " iface:" << iface;
return id;
}
@@ -131,6 +142,9 @@ void QAccessibleCache::objectDestroyed(QObject* obj)
void QAccessibleCache::deleteInterface(QAccessible::Id id, QObject *obj)
{
QAccessibleInterface *iface = idToInterface.take(id);
+ qCDebug(lcAccessibilityCache) << "delete - id:" << id << " iface:" << iface;
+ if (!iface) // the interface may be deleted already
+ return;
interfaceToId.take(iface);
if (!obj)
obj = iface->object();