summaryrefslogtreecommitdiffstats
path: root/src/gui/accessible/qplatformaccessibility.cpp
diff options
Diffstat (limited to 'src/gui/accessible/qplatformaccessibility.cpp')
-rw-r--r--src/gui/accessible/qplatformaccessibility.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gui/accessible/qplatformaccessibility.cpp b/src/gui/accessible/qplatformaccessibility.cpp
index ae7635ff7c9..4dd32a911c7 100644
--- a/src/gui/accessible/qplatformaccessibility.cpp
+++ b/src/gui/accessible/qplatformaccessibility.cpp
@@ -35,7 +35,6 @@ Q_GLOBAL_STATIC(QList<QAccessibleBridge *>, bridges)
\sa QAccessible
*/
QPlatformAccessibility::QPlatformAccessibility()
- : m_active(false)
{
}
@@ -99,10 +98,25 @@ void QPlatformAccessibility::cleanup()
qDeleteAll(*bridges());
}
+void qAccessibleNotifyActivationObservers(bool active); // qaccessible.cpp
+
void QPlatformAccessibility::setActive(bool active)
{
m_active = active;
- QAccessible::setActive(active);
+
+ // Send activeChanged notifications if the new active status differs from
+ // the notifed one.
+ if ((active && m_activeNotificationState != std::optional<bool>{true}) ||
+ (!active && m_activeNotificationState != std::optional<bool>{false})) {
+ qAccessibleNotifyActivationObservers(active);
+ }
+
+ m_activeNotificationState = active;
+}
+
+void QPlatformAccessibility::clearActiveNotificationState()
+{
+ m_activeNotificationState = std::nullopt;
}
#endif // QT_CONFIG(accessibility)
close