4#ifndef QACCESSIBLECACHE_P
5#define QACCESSIBLECACHE_P
18#include <QtGui/private/qtguiglobal_p.h>
19#include <QtCore/qobject.h>
20#include <QtCore/qhash.h>
24#if QT_CONFIG(accessibility)
26Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QMacAccessibilityElement));
30class Q_GUI_EXPORT QAccessibleObjectDestroyedEvent :
public QAccessibleEvent
34
35 inline QAccessibleObjectDestroyedEvent(QObject *obj)
36 : QAccessibleEvent(obj, QAccessible::ObjectDestroyed)
40
41 inline QAccessibleObjectDestroyedEvent(QAccessibleInterface *iface)
42 : QAccessibleEvent(
static_cast<QObject *>(
nullptr), QAccessible::ObjectDestroyed)
44 m_uniqueId = QAccessible::uniqueId(iface);
47
48 inline QAccessibleObjectDestroyedEvent(QAccessible::Id uniqueId)
49 : QAccessibleEvent(
static_cast<QObject *>(
nullptr), QAccessible::ObjectDestroyed)
51 m_uniqueId = uniqueId;
53 ~QAccessibleObjectDestroyedEvent();
56class Q_GUI_EXPORT QAccessibleCache :
public QObject
61 ~QAccessibleCache() override;
62 static QAccessibleCache *instance();
63 QAccessibleInterface *interfaceForId(QAccessible::Id id)
const;
64 QAccessible::Id idForInterface(QAccessibleInterface *iface)
const;
65 QAccessible::Id idForObject(QObject *obj)
const;
66 bool containsObject(QObject *obj)
const;
67 QAccessible::Id insert(QObject *object, QAccessibleInterface *iface)
const;
68 void deleteInterface(QAccessible::Id id, QObject *obj =
nullptr);
69 void sendObjectDestroyedEvent(QObject *obj);
71 QT_MANGLE_NAMESPACE(QMacAccessibilityElement) *elementForId(QAccessible::Id axid)
const;
72 bool insertElement(QAccessible::Id axid, QT_MANGLE_NAMESPACE(QMacAccessibilityElement) *element)
const;
76 void objectDestroyed(QObject *obj);
79 QAccessible::Id acquireId()
const;
81 mutable QHash<QAccessible::Id, QAccessibleInterface *> idToInterface;
82 mutable QHash<QAccessibleInterface *, QAccessible::Id> interfaceToId;
83 mutable QMultiHash<QObject *, std::pair<QAccessible::Id,
const QMetaObject*>> objectToId;
86 void removeAccessibleElement(QAccessible::Id axid);
87 mutable QHash<QAccessible::Id, QT_MANGLE_NAMESPACE(QMacAccessibilityElement) *> accessibleElements;
90 friend class QAccessible;
91 friend class QAccessibleInterface;
Q_STATIC_LOGGING_CATEGORY(lcAccessibilityCore, "qt.accessibility.core")