diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index afa3438b682..7d8539bcdbc 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -11801,6 +11801,9 @@ QString QWidget::whatsThis() const void QWidget::setAccessibleName(const QString &name) { Q_D(QWidget); + if (d->accessibleName == name) + return; + d->accessibleName = name; QAccessibleEvent event(this, QAccessible::NameChanged); QAccessible::updateAccessibility(&event); @@ -11831,6 +11834,9 @@ QString QWidget::accessibleName() const void QWidget::setAccessibleDescription(const QString &description) { Q_D(QWidget); + if (d->accessibleDescription == description) + return; + d->accessibleDescription = description; QAccessibleEvent event(this, QAccessible::DescriptionChanged); QAccessible::updateAccessibility(&event); @@ -11856,6 +11862,9 @@ QString QWidget::accessibleDescription() const void QWidget::setAccessibleIdentifier(const QString &identifier) { Q_D(QWidget); + if (d->accessibleIdentifier == identifier) + return; + d->accessibleIdentifier = identifier; QAccessibleEvent event(this, QAccessible::IdentifierChanged); QAccessible::updateAccessibility(&event); diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp index 5eb331b9300..09ce243145c 100644 --- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp @@ -669,6 +669,13 @@ void tst_QAccessibility::accessibleIdentifier() QVERIFY(QTestAccessibility::containsEvent(&event)); QCOMPARE(button.accessibleIdentifier(), id); QCOMPARE(QAccessibleBridgeUtils::accessibleId(accessible), id); + QTestAccessibility::clearEvents(); + + // verify that no event gets triggered when setting the same ID again + button.setAccessibleIdentifier(id); + QVERIFY(QTestAccessibility::events().empty()); + QCOMPARE(button.accessibleIdentifier(), id); + QCOMPARE(QAccessibleBridgeUtils::accessibleId(accessible), id); QTestAccessibility::clearEvents(); }