aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2019-11-05 12:51:02 +0100
committerMitch Curtis <mitch.curtis@qt.io>2019-12-03 13:40:15 +0100
commit463898f0765b83f6c391f6802a0ee06796f9f6d2 (patch)
tree33942968476b73d725d268dca12cb5249081ac9a
parent8ee511bcd9f1376e9995ab3f30f6415ad60b7c05 (diff)
Respect user-set Accessible.name
Check if the user has set Accessible.name before setting it to the control's text/title/etc. Fixes: QTBUG-66583 Change-Id: I8b2c8ab3f8a8ae8e76c8e6a241260b7f90eca254 Reviewed-by: Liang Qi <liang.qi@qt.io>
-rw-r--r--src/quicktemplates2/qquickabstractbutton.cpp4
-rw-r--r--src/quicktemplates2/qquickcombobox.cpp6
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp8
-rw-r--r--src/quicktemplates2/qquickcontrol_p.h2
-rw-r--r--src/quicktemplates2/qquickdialog.cpp3
-rw-r--r--src/quicktemplates2/qquickgroupbox.cpp4
-rw-r--r--src/quicktemplates2/qquicklabel.cpp17
-rw-r--r--src/quicktemplates2/qquicklabel_p_p.h1
-rw-r--r--src/quicktemplates2/qquickpage.cpp4
-rw-r--r--src/quicktemplates2/qquickpopup.cpp4
-rw-r--r--src/quicktemplates2/qquickpopup_p.h2
-rw-r--r--src/quicktemplates2/qquickpopupitem.cpp25
-rw-r--r--src/quicktemplates2/qquicktooltip.cpp4
-rw-r--r--tests/auto/accessibility/BLACKLIST2
-rw-r--r--tests/auto/accessibility/data/defaults/abstractbutton.qml (renamed from tests/auto/accessibility/data/abstractbutton.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/busyindicator.qml (renamed from tests/auto/accessibility/data/busyindicator.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/button.qml (renamed from tests/auto/accessibility/data/button.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/checkbox.qml (renamed from tests/auto/accessibility/data/checkbox.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/checkdelegate.qml (renamed from tests/auto/accessibility/data/checkdelegate.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/combobox.qml (renamed from tests/auto/accessibility/data/combobox.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/container.qml (renamed from tests/auto/accessibility/data/container.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/control.qml (renamed from tests/auto/accessibility/data/control.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/dayofweekrow-2.qml (renamed from tests/auto/accessibility/data/dayofweekrow-2.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/dayofweekrow.qml (renamed from tests/auto/accessibility/data/dayofweekrow.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/dial.qml (renamed from tests/auto/accessibility/data/dial.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/dialog.qml (renamed from tests/auto/accessibility/data/dialog.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/drawer.qml (renamed from tests/auto/accessibility/data/drawer.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/frame.qml (renamed from tests/auto/accessibility/data/frame.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/groupbox.qml (renamed from tests/auto/accessibility/data/groupbox.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/itemdelegate.qml (renamed from tests/auto/accessibility/data/itemdelegate.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/label.qml (renamed from tests/auto/accessibility/data/label.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/menu.qml (renamed from tests/auto/accessibility/data/menu.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/menuitem.qml (renamed from tests/auto/accessibility/data/menuitem.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/monthgrid-2.qml (renamed from tests/auto/accessibility/data/monthgrid-2.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/monthgrid.qml (renamed from tests/auto/accessibility/data/monthgrid.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/page.qml (renamed from tests/auto/accessibility/data/page.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/pageindicator.qml (renamed from tests/auto/accessibility/data/pageindicator.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/pane.qml (renamed from tests/auto/accessibility/data/pane.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/popup.qml (renamed from tests/auto/accessibility/data/popup.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/progressbar.qml (renamed from tests/auto/accessibility/data/progressbar.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/radiobutton.qml (renamed from tests/auto/accessibility/data/radiobutton.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/radiodelegate.qml (renamed from tests/auto/accessibility/data/radiodelegate.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/rangeslider.qml (renamed from tests/auto/accessibility/data/rangeslider.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/roundbutton.qml (renamed from tests/auto/accessibility/data/roundbutton.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/scrollbar.qml (renamed from tests/auto/accessibility/data/scrollbar.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/scrollindicator.qml (renamed from tests/auto/accessibility/data/scrollindicator.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/slider.qml (renamed from tests/auto/accessibility/data/slider.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/spinbox.qml (renamed from tests/auto/accessibility/data/spinbox.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/stackview.qml (renamed from tests/auto/accessibility/data/stackview.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/swipedelegate.qml (renamed from tests/auto/accessibility/data/swipedelegate.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/swipeview.qml (renamed from tests/auto/accessibility/data/swipeview.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/switch.qml (renamed from tests/auto/accessibility/data/switch.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/switchdelegate.qml (renamed from tests/auto/accessibility/data/switchdelegate.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/tabbar.qml (renamed from tests/auto/accessibility/data/tabbar.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/tabbutton.qml (renamed from tests/auto/accessibility/data/tabbutton.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/textarea.qml (renamed from tests/auto/accessibility/data/textarea.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/textfield.qml (renamed from tests/auto/accessibility/data/textfield.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/toolbar.qml (renamed from tests/auto/accessibility/data/toolbar.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/toolbutton.qml (renamed from tests/auto/accessibility/data/toolbutton.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/tooltip.qml (renamed from tests/auto/accessibility/data/tooltip.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/tumbler.qml (renamed from tests/auto/accessibility/data/tumbler.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/weeknumbercolumn-2.qml (renamed from tests/auto/accessibility/data/weeknumbercolumn-2.qml)0
-rw-r--r--tests/auto/accessibility/data/defaults/weeknumbercolumn.qml (renamed from tests/auto/accessibility/data/weeknumbercolumn.qml)0
-rw-r--r--tests/auto/accessibility/data/override/abstractbutton.qml7
-rw-r--r--tests/auto/accessibility/data/override/busyindicator.qml6
-rw-r--r--tests/auto/accessibility/data/override/button.qml7
-rw-r--r--tests/auto/accessibility/data/override/checkbox.qml7
-rw-r--r--tests/auto/accessibility/data/override/checkdelegate.qml7
-rw-r--r--tests/auto/accessibility/data/override/combobox.qml7
-rw-r--r--tests/auto/accessibility/data/override/container.qml6
-rw-r--r--tests/auto/accessibility/data/override/control.qml6
-rw-r--r--tests/auto/accessibility/data/override/dayofweekrow-2.qml6
-rw-r--r--tests/auto/accessibility/data/override/dayofweekrow.qml6
-rw-r--r--tests/auto/accessibility/data/override/dial.qml6
-rw-r--r--tests/auto/accessibility/data/override/dialog.qml7
-rw-r--r--tests/auto/accessibility/data/override/drawer.qml6
-rw-r--r--tests/auto/accessibility/data/override/frame.qml6
-rw-r--r--tests/auto/accessibility/data/override/groupbox.qml7
-rw-r--r--tests/auto/accessibility/data/override/itemdelegate.qml7
-rw-r--r--tests/auto/accessibility/data/override/label.qml7
-rw-r--r--tests/auto/accessibility/data/override/menu.qml6
-rw-r--r--tests/auto/accessibility/data/override/menuitem.qml7
-rw-r--r--tests/auto/accessibility/data/override/monthgrid-2.qml7
-rw-r--r--tests/auto/accessibility/data/override/monthgrid.qml7
-rw-r--r--tests/auto/accessibility/data/override/page.qml7
-rw-r--r--tests/auto/accessibility/data/override/pageindicator.qml6
-rw-r--r--tests/auto/accessibility/data/override/pane.qml6
-rw-r--r--tests/auto/accessibility/data/override/popup.qml6
-rw-r--r--tests/auto/accessibility/data/override/progressbar.qml10
-rw-r--r--tests/auto/accessibility/data/override/radiobutton.qml7
-rw-r--r--tests/auto/accessibility/data/override/radiodelegate.qml7
-rw-r--r--tests/auto/accessibility/data/override/rangeslider.qml13
-rw-r--r--tests/auto/accessibility/data/override/roundbutton.qml7
-rw-r--r--tests/auto/accessibility/data/override/scrollbar.qml6
-rw-r--r--tests/auto/accessibility/data/override/scrollindicator.qml6
-rw-r--r--tests/auto/accessibility/data/override/slider.qml11
-rw-r--r--tests/auto/accessibility/data/override/spinbox.qml10
-rw-r--r--tests/auto/accessibility/data/override/stackview.qml6
-rw-r--r--tests/auto/accessibility/data/override/swipedelegate.qml7
-rw-r--r--tests/auto/accessibility/data/override/swipeview.qml6
-rw-r--r--tests/auto/accessibility/data/override/switch.qml7
-rw-r--r--tests/auto/accessibility/data/override/switchdelegate.qml7
-rw-r--r--tests/auto/accessibility/data/override/tabbar.qml6
-rw-r--r--tests/auto/accessibility/data/override/tabbutton.qml7
-rw-r--r--tests/auto/accessibility/data/override/textarea.qml7
-rw-r--r--tests/auto/accessibility/data/override/textfield.qml7
-rw-r--r--tests/auto/accessibility/data/override/toolbar.qml6
-rw-r--r--tests/auto/accessibility/data/override/toolbutton.qml7
-rw-r--r--tests/auto/accessibility/data/override/tooltip.qml7
-rw-r--r--tests/auto/accessibility/data/override/tumbler.qml6
-rw-r--r--tests/auto/accessibility/data/override/weeknumbercolumn-2.qml4
-rw-r--r--tests/auto/accessibility/data/override/weeknumbercolumn.qml6
-rw-r--r--tests/auto/accessibility/tst_accessibility.cpp172
113 files changed, 538 insertions, 56 deletions
diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp
index e9fc2f36..969ab173 100644
--- a/src/quicktemplates2/qquickabstractbutton.cpp
+++ b/src/quicktemplates2/qquickabstractbutton.cpp
@@ -1126,7 +1126,7 @@ void QQuickAbstractButton::buttonChange(ButtonChange change)
break;
case ButtonTextChange: {
const QString txt = text();
- setAccessibleName(txt);
+ maybeSetAccessibleName(txt);
#if QT_CONFIG(shortcut)
setShortcut(QKeySequence::mnemonic(txt));
#endif
@@ -1152,7 +1152,7 @@ void QQuickAbstractButton::accessibilityActiveChanged(bool active)
Q_D(QQuickAbstractButton);
if (active) {
- setAccessibleName(text());
+ maybeSetAccessibleName(text());
setAccessibleProperty("pressed", d->pressed);
setAccessibleProperty("checked", d->checked);
setAccessibleProperty("checkable", d->checkable);
diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp
index ae341192..86150a0f 100644
--- a/src/quicktemplates2/qquickcombobox.cpp
+++ b/src/quicktemplates2/qquickcombobox.cpp
@@ -472,7 +472,7 @@ void QQuickComboBoxPrivate::updateCurrentText(bool hasDelegateModelObject)
if (currentText != text) {
currentText = text;
if (!hasDisplayText)
- q->setAccessibleName(text);
+ q->maybeSetAccessibleName(text);
emit q->currentTextChanged();
}
if (!hasDisplayText && displayText != text) {
@@ -1051,7 +1051,7 @@ void QQuickComboBox::setDisplayText(const QString &text)
return;
d->displayText = text;
- setAccessibleName(text);
+ maybeSetAccessibleName(text);
emit displayTextChanged();
}
@@ -1970,7 +1970,7 @@ void QQuickComboBox::accessibilityActiveChanged(bool active)
QQuickControl::accessibilityActiveChanged(active);
if (active) {
- setAccessibleName(d->hasDisplayText ? d->displayText : d->currentText);
+ maybeSetAccessibleName(d->hasDisplayText ? d->displayText : d->currentText);
setAccessibleProperty("editable", isEditable());
}
}
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp
index d107fef1..7e249dae 100644
--- a/src/quicktemplates2/qquickcontrol.cpp
+++ b/src/quicktemplates2/qquickcontrol.cpp
@@ -2282,11 +2282,13 @@ QString QQuickControl::accessibleName() const
return QString();
}
-void QQuickControl::setAccessibleName(const QString &name)
+void QQuickControl::maybeSetAccessibleName(const QString &name)
{
#if QT_CONFIG(accessibility)
- if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this))
- accessibleAttached->setName(name);
+ if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) {
+ if (!accessibleAttached->wasNameExplicitlySet())
+ accessibleAttached->setNameImplicitly(name);
+ }
#else
Q_UNUSED(name)
#endif
diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h
index 3fe20f3b..d35630a7 100644
--- a/src/quicktemplates2/qquickcontrol_p.h
+++ b/src/quicktemplates2/qquickcontrol_p.h
@@ -287,7 +287,7 @@ protected:
// helper functions which avoid to check QT_CONFIG(accessibility)
QString accessibleName() const;
- void setAccessibleName(const QString &name);
+ void maybeSetAccessibleName(const QString &name);
QVariant accessibleProperty(const char *propertyName);
bool setAccessibleProperty(const char *propertyName, const QVariant &value);
diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp
index 43f6b6a5..a13b42ee 100644
--- a/src/quicktemplates2/qquickdialog.cpp
+++ b/src/quicktemplates2/qquickdialog.cpp
@@ -219,7 +219,6 @@ void QQuickDialog::setTitle(const QString &title)
{
Q_D(QQuickDialog);
d->popupItem->setTitle(title);
- setAccessibleName(title);
}
/*!
@@ -536,7 +535,7 @@ void QQuickDialog::accessibilityActiveChanged(bool active)
QQuickPopup::accessibilityActiveChanged(active);
if (active)
- setAccessibleName(d->popupItem->title());
+ maybeSetAccessibleName(d->popupItem->title());
}
#endif
diff --git a/src/quicktemplates2/qquickgroupbox.cpp b/src/quicktemplates2/qquickgroupbox.cpp
index a5da8a6f..3dbf3174 100644
--- a/src/quicktemplates2/qquickgroupbox.cpp
+++ b/src/quicktemplates2/qquickgroupbox.cpp
@@ -167,7 +167,7 @@ void QQuickGroupBox::setTitle(const QString &title)
return;
d->title = title;
- setAccessibleName(title);
+ maybeSetAccessibleName(title);
emit titleChanged();
}
@@ -283,7 +283,7 @@ void QQuickGroupBox::accessibilityActiveChanged(bool active)
QQuickFrame::accessibilityActiveChanged(active);
if (active)
- setAccessibleName(d->title);
+ maybeSetAccessibleName(d->title);
}
#endif
diff --git a/src/quicktemplates2/qquicklabel.cpp b/src/quicktemplates2/qquicklabel.cpp
index 29f3538d..9937436c 100644
--- a/src/quicktemplates2/qquicklabel.cpp
+++ b/src/quicktemplates2/qquicklabel.cpp
@@ -248,9 +248,7 @@ void QQuickLabelPrivate::updatePalette(const QPalette &palette)
void QQuickLabelPrivate::textChanged(const QString &text)
{
#if QT_CONFIG(accessibility)
- Q_Q(QQuickLabel);
- if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q))
- accessibleAttached->setName(text);
+ maybeSetAccessibleName(text);
#else
Q_UNUSED(text)
#endif
@@ -266,13 +264,24 @@ void QQuickLabelPrivate::accessibilityActiveChanged(bool active)
QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true));
Q_ASSERT(accessibleAttached);
accessibleAttached->setRole(accessibleRole());
- accessibleAttached->setName(text);
+ maybeSetAccessibleName(text);
}
QAccessible::Role QQuickLabelPrivate::accessibleRole() const
{
return QAccessible::StaticText;
}
+
+void QQuickLabelPrivate::maybeSetAccessibleName(const QString &name)
+{
+ Q_Q(QQuickLabel);
+ auto accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(
+ qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true));
+ if (accessibleAttached) {
+ if (!accessibleAttached->wasNameExplicitlySet())
+ accessibleAttached->setNameImplicitly(name);
+ }
+}
#endif
static inline QString backgroundName() { return QStringLiteral("background"); }
diff --git a/src/quicktemplates2/qquicklabel_p_p.h b/src/quicktemplates2/qquicklabel_p_p.h
index e1010698..ce70c168 100644
--- a/src/quicktemplates2/qquicklabel_p_p.h
+++ b/src/quicktemplates2/qquicklabel_p_p.h
@@ -111,6 +111,7 @@ public:
#if QT_CONFIG(accessibility)
void accessibilityActiveChanged(bool active) override;
QAccessible::Role accessibleRole() const override;
+ void maybeSetAccessibleName(const QString &name);
#endif
void cancelBackground();
diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp
index 0d2a7e3e..0a72bad7 100644
--- a/src/quicktemplates2/qquickpage.cpp
+++ b/src/quicktemplates2/qquickpage.cpp
@@ -285,7 +285,7 @@ void QQuickPage::setTitle(const QString &title)
return;
d->title = title;
- setAccessibleName(title);
+ maybeSetAccessibleName(title);
emit titleChanged();
}
@@ -473,7 +473,7 @@ void QQuickPage::accessibilityActiveChanged(bool active)
QQuickPane::accessibilityActiveChanged(active);
if (active)
- setAccessibleName(d->title);
+ maybeSetAccessibleName(d->title);
}
#endif
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 5b945843..ecb2568e 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -2697,10 +2697,10 @@ QString QQuickPopup::accessibleName() const
return d->popupItem->accessibleName();
}
-void QQuickPopup::setAccessibleName(const QString &name)
+void QQuickPopup::maybeSetAccessibleName(const QString &name)
{
Q_D(QQuickPopup);
- d->popupItem->setAccessibleName(name);
+ d->popupItem->maybeSetAccessibleName(name);
}
QVariant QQuickPopup::accessibleProperty(const char *propertyName)
diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h
index 12dbd247..dc3ebf6f 100644
--- a/src/quicktemplates2/qquickpopup_p.h
+++ b/src/quicktemplates2/qquickpopup_p.h
@@ -459,7 +459,7 @@ protected:
#endif
QString accessibleName() const;
- void setAccessibleName(const QString &name);
+ void maybeSetAccessibleName(const QString &name);
QVariant accessibleProperty(const char *propertyName);
bool setAccessibleProperty(const char *propertyName, const QVariant &value);
diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp
index 16d8c4f6..fcf23db5 100644
--- a/src/quicktemplates2/qquickpopupitem.cpp
+++ b/src/quicktemplates2/qquickpopupitem.cpp
@@ -45,6 +45,10 @@
#include <QtGui/private/qshortcutmap_p.h>
#include <QtGui/private/qguiapplication_p.h>
+#if QT_CONFIG(accessibility)
+#include <QtQuick/private/qquickaccessibleattached_p.h>
+#endif
+
QT_BEGIN_NAMESPACE
class QQuickPopupItemPrivate : public QQuickPagePrivate
@@ -401,7 +405,28 @@ QAccessible::Role QQuickPopupItem::accessibleRole() const
void QQuickPopupItem::accessibilityActiveChanged(bool active)
{
Q_D(const QQuickPopupItem);
+ // Can't just use d->popup->accessibleName() here, because that refers to the accessible
+ // name of us, the popup item, which is not what we want.
+ const QQuickAccessibleAttached *popupAccessibleAttached = QQuickControlPrivate::accessibleAttached(d->popup);
+ const QString oldPopupName = popupAccessibleAttached ? popupAccessibleAttached->name() : QString();
+ const bool wasNameExplicitlySetOnPopup = popupAccessibleAttached && popupAccessibleAttached->wasNameExplicitlySet();
+
QQuickPage::accessibilityActiveChanged(active);
+
+ QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this);
+ const QString ourName = accessibleAttached ? accessibleAttached->name() : QString();
+ if (wasNameExplicitlySetOnPopup && accessibleAttached && ourName != oldPopupName) {
+ // The user set Accessible.name on the Popup. Since the Popup and its popup item
+ // have different accessible attached properties, the popup item doesn't know that
+ // a name was set on the Popup by the user, and that it should use that, rather than
+ // whatever QQuickPage sets. That's why we need to do it here.
+ // To avoid it being overridden by the call to accessibilityActiveChanged() below,
+ // we set it explicitly. It's safe to do this as the popup item is an internal implementation detail.
+ accessibleAttached->setName(oldPopupName);
+ }
+
+ // This allows the different popup types to set a name on their popup item accordingly.
+ // For example: Dialog uses its title and ToolTip uses its text.
d->popup->accessibilityActiveChanged(active);
}
#endif
diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp
index 5c7eb46e..9ea0160e 100644
--- a/src/quicktemplates2/qquicktooltip.cpp
+++ b/src/quicktemplates2/qquicktooltip.cpp
@@ -188,7 +188,7 @@ void QQuickToolTip::setText(const QString &text)
return;
d->text = text;
- setAccessibleName(text);
+ maybeSetAccessibleName(text);
emit textChanged();
}
@@ -351,7 +351,7 @@ void QQuickToolTip::accessibilityActiveChanged(bool active)
QQuickPopup::accessibilityActiveChanged(active);
if (active)
- setAccessibleName(d->text);
+ maybeSetAccessibleName(d->text);
}
#endif
diff --git a/tests/auto/accessibility/BLACKLIST b/tests/auto/accessibility/BLACKLIST
new file mode 100644
index 00000000..fe7a87f8
--- /dev/null
+++ b/tests/auto/accessibility/BLACKLIST
@@ -0,0 +1,2 @@
+[a11y:Label]
+opensuse-leap
diff --git a/tests/auto/accessibility/data/abstractbutton.qml b/tests/auto/accessibility/data/defaults/abstractbutton.qml
index b0922176..b0922176 100644
--- a/tests/auto/accessibility/data/abstractbutton.qml
+++ b/tests/auto/accessibility/data/defaults/abstractbutton.qml
diff --git a/tests/auto/accessibility/data/busyindicator.qml b/tests/auto/accessibility/data/defaults/busyindicator.qml
index e1c33765..e1c33765 100644
--- a/tests/auto/accessibility/data/busyindicator.qml
+++ b/tests/auto/accessibility/data/defaults/busyindicator.qml
diff --git a/tests/auto/accessibility/data/button.qml b/tests/auto/accessibility/data/defaults/button.qml
index 600c05da..600c05da 100644
--- a/tests/auto/accessibility/data/button.qml
+++ b/tests/auto/accessibility/data/defaults/button.qml
diff --git a/tests/auto/accessibility/data/checkbox.qml b/tests/auto/accessibility/data/defaults/checkbox.qml
index f86a9a27..f86a9a27 100644
--- a/tests/auto/accessibility/data/checkbox.qml
+++ b/tests/auto/accessibility/data/defaults/checkbox.qml
diff --git a/tests/auto/accessibility/data/checkdelegate.qml b/tests/auto/accessibility/data/defaults/checkdelegate.qml
index 2750052f..2750052f 100644
--- a/tests/auto/accessibility/data/checkdelegate.qml
+++ b/tests/auto/accessibility/data/defaults/checkdelegate.qml
diff --git a/tests/auto/accessibility/data/combobox.qml b/tests/auto/accessibility/data/defaults/combobox.qml
index ec4e87ef..ec4e87ef 100644
--- a/tests/auto/accessibility/data/combobox.qml
+++ b/tests/auto/accessibility/data/defaults/combobox.qml
diff --git a/tests/auto/accessibility/data/container.qml b/tests/auto/accessibility/data/defaults/container.qml
index b8d57eea..b8d57eea 100644
--- a/tests/auto/accessibility/data/container.qml
+++ b/tests/auto/accessibility/data/defaults/container.qml
diff --git a/tests/auto/accessibility/data/control.qml b/tests/auto/accessibility/data/defaults/control.qml
index dac5f935..dac5f935 100644
--- a/tests/auto/accessibility/data/control.qml
+++ b/tests/auto/accessibility/data/defaults/control.qml
diff --git a/tests/auto/accessibility/data/dayofweekrow-2.qml b/tests/auto/accessibility/data/defaults/dayofweekrow-2.qml
index 96c750cb..96c750cb 100644
--- a/tests/auto/accessibility/data/dayofweekrow-2.qml
+++ b/tests/auto/accessibility/data/defaults/dayofweekrow-2.qml
diff --git a/tests/auto/accessibility/data/dayofweekrow.qml b/tests/auto/accessibility/data/defaults/dayofweekrow.qml
index a2aa44ec..a2aa44ec 100644
--- a/tests/auto/accessibility/data/dayofweekrow.qml
+++ b/tests/auto/accessibility/data/defaults/dayofweekrow.qml
diff --git a/tests/auto/accessibility/data/dial.qml b/tests/auto/accessibility/data/defaults/dial.qml
index 9a471548..9a471548 100644
--- a/tests/auto/accessibility/data/dial.qml
+++ b/tests/auto/accessibility/data/defaults/dial.qml
diff --git a/tests/auto/accessibility/data/dialog.qml b/tests/auto/accessibility/data/defaults/dialog.qml
index 20317a31..20317a31 100644
--- a/tests/auto/accessibility/data/dialog.qml
+++ b/tests/auto/accessibility/data/defaults/dialog.qml
diff --git a/tests/auto/accessibility/data/drawer.qml b/tests/auto/accessibility/data/defaults/drawer.qml
index 9b0db5fa..9b0db5fa 100644
--- a/tests/auto/accessibility/data/drawer.qml
+++ b/tests/auto/accessibility/data/defaults/drawer.qml
diff --git a/tests/auto/accessibility/data/frame.qml b/tests/auto/accessibility/data/defaults/frame.qml
index 02e45a78..02e45a78 100644
--- a/tests/auto/accessibility/data/frame.qml
+++ b/tests/auto/accessibility/data/defaults/frame.qml
diff --git a/tests/auto/accessibility/data/groupbox.qml b/tests/auto/accessibility/data/defaults/groupbox.qml
index 0fa8cff5..0fa8cff5 100644
--- a/tests/auto/accessibility/data/groupbox.qml
+++ b/tests/auto/accessibility/data/defaults/groupbox.qml
diff --git a/tests/auto/accessibility/data/itemdelegate.qml b/tests/auto/accessibility/data/defaults/itemdelegate.qml
index 52831648..52831648 100644
--- a/tests/auto/accessibility/data/itemdelegate.qml
+++ b/tests/auto/accessibility/data/defaults/itemdelegate.qml
diff --git a/tests/auto/accessibility/data/label.qml b/tests/auto/accessibility/data/defaults/label.qml
index 6d7466bc..6d7466bc 100644
--- a/tests/auto/accessibility/data/label.qml
+++ b/tests/auto/accessibility/data/defaults/label.qml
diff --git a/tests/auto/accessibility/data/menu.qml b/tests/auto/accessibility/data/defaults/menu.qml
index 126914d1..126914d1 100644
--- a/tests/auto/accessibility/data/menu.qml
+++ b/tests/auto/accessibility/data/defaults/menu.qml
diff --git a/tests/auto/accessibility/data/menuitem.qml b/tests/auto/accessibility/data/defaults/menuitem.qml
index 97fd478f..97fd478f 100644
--- a/tests/auto/accessibility/data/menuitem.qml
+++ b/tests/auto/accessibility/data/defaults/menuitem.qml
diff --git a/tests/auto/accessibility/data/monthgrid-2.qml b/tests/auto/accessibility/data/defaults/monthgrid-2.qml
index 6368d090..6368d090 100644
--- a/tests/auto/accessibility/data/monthgrid-2.qml
+++ b/tests/auto/accessibility/data/defaults/monthgrid-2.qml
diff --git a/tests/auto/accessibility/data/monthgrid.qml b/tests/auto/accessibility/data/defaults/monthgrid.qml
index 03de2499..03de2499 100644
--- a/tests/auto/accessibility/data/monthgrid.qml
+++ b/tests/auto/accessibility/data/defaults/monthgrid.qml
diff --git a/tests/auto/accessibility/data/page.qml b/tests/auto/accessibility/data/defaults/page.qml
index 84036878..84036878 100644
--- a/tests/auto/accessibility/data/page.qml
+++ b/tests/auto/accessibility/data/defaults/page.qml
diff --git a/tests/auto/accessibility/data/pageindicator.qml b/tests/auto/accessibility/data/defaults/pageindicator.qml
index 30184167..30184167 100644
--- a/tests/auto/accessibility/data/pageindicator.qml
+++ b/tests/auto/accessibility/data/defaults/pageindicator.qml
diff --git a/tests/auto/accessibility/data/pane.qml b/tests/auto/accessibility/data/defaults/pane.qml
index bde4fad5..bde4fad5 100644
--- a/tests/auto/accessibility/data/pane.qml
+++ b/tests/auto/accessibility/data/defaults/pane.qml
diff --git a/tests/auto/accessibility/data/popup.qml b/tests/auto/accessibility/data/defaults/popup.qml
index 907d0c55..907d0c55 100644
--- a/tests/auto/accessibility/data/popup.qml
+++ b/tests/auto/accessibility/data/defaults/popup.qml
diff --git a/tests/auto/accessibility/data/progressbar.qml b/tests/auto/accessibility/data/defaults/progressbar.qml
index 74b2cb84..74b2cb84 100644
--- a/tests/auto/accessibility/data/progressbar.qml
+++ b/tests/auto/accessibility/data/defaults/progressbar.qml
diff --git a/tests/auto/accessibility/data/radiobutton.qml b/tests/auto/accessibility/data/defaults/radiobutton.qml
index 1b046d3e..1b046d3e 100644
--- a/tests/auto/accessibility/data/radiobutton.qml
+++ b/tests/auto/accessibility/data/defaults/radiobutton.qml
diff --git a/tests/auto/accessibility/data/radiodelegate.qml b/tests/auto/accessibility/data/defaults/radiodelegate.qml
index f2bec8bc..f2bec8bc 100644
--- a/tests/auto/accessibility/data/radiodelegate.qml
+++ b/tests/auto/accessibility/data/defaults/radiodelegate.qml
diff --git a/tests/auto/accessibility/data/rangeslider.qml b/tests/auto/accessibility/data/defaults/rangeslider.qml
index 95bff377..95bff377 100644
--- a/tests/auto/accessibility/data/rangeslider.qml
+++ b/tests/auto/accessibility/data/defaults/rangeslider.qml
diff --git a/tests/auto/accessibility/data/roundbutton.qml b/tests/auto/accessibility/data/defaults/roundbutton.qml
index 20f0ed9a..20f0ed9a 100644
--- a/tests/auto/accessibility/data/roundbutton.qml
+++ b/tests/auto/accessibility/data/defaults/roundbutton.qml
diff --git a/tests/auto/accessibility/data/scrollbar.qml b/tests/auto/accessibility/data/defaults/scrollbar.qml
index 1e7cf155..1e7cf155 100644
--- a/tests/auto/accessibility/data/scrollbar.qml
+++ b/tests/auto/accessibility/data/defaults/scrollbar.qml
diff --git a/tests/auto/accessibility/data/scrollindicator.qml b/tests/auto/accessibility/data/defaults/scrollindicator.qml
index 24ef9271..24ef9271 100644
--- a/tests/auto/accessibility/data/scrollindicator.qml
+++ b/tests/auto/accessibility/data/defaults/scrollindicator.qml
diff --git a/tests/auto/accessibility/data/slider.qml b/tests/auto/accessibility/data/defaults/slider.qml
index 0d1db79c..0d1db79c 100644
--- a/tests/auto/accessibility/data/slider.qml
+++ b/tests/auto/accessibility/data/defaults/slider.qml
diff --git a/tests/auto/accessibility/data/spinbox.qml b/tests/auto/accessibility/data/defaults/spinbox.qml
index 3da1f868..3da1f868 100644
--- a/tests/auto/accessibility/data/spinbox.qml
+++ b/tests/auto/accessibility/data/defaults/spinbox.qml
diff --git a/tests/auto/accessibility/data/stackview.qml b/tests/auto/accessibility/data/defaults/stackview.qml
index 48cb384e..48cb384e 100644
--- a/tests/auto/accessibility/data/stackview.qml
+++ b/tests/auto/accessibility/data/defaults/stackview.qml
diff --git a/tests/auto/accessibility/data/swipedelegate.qml b/tests/auto/accessibility/data/defaults/swipedelegate.qml
index d6f503c4..d6f503c4 100644
--- a/tests/auto/accessibility/data/swipedelegate.qml
+++ b/tests/auto/accessibility/data/defaults/swipedelegate.qml
diff --git a/tests/auto/accessibility/data/swipeview.qml b/tests/auto/accessibility/data/defaults/swipeview.qml
index efb185e6..efb185e6 100644
--- a/tests/auto/accessibility/data/swipeview.qml
+++ b/tests/auto/accessibility/data/defaults/swipeview.qml
diff --git a/tests/auto/accessibility/data/switch.qml b/tests/auto/accessibility/data/defaults/switch.qml
index b9c8a572..b9c8a572 100644
--- a/tests/auto/accessibility/data/switch.qml
+++ b/tests/auto/accessibility/data/defaults/switch.qml
diff --git a/tests/auto/accessibility/data/switchdelegate.qml b/tests/auto/accessibility/data/defaults/switchdelegate.qml
index d0d9599c..d0d9599c 100644
--- a/tests/auto/accessibility/data/switchdelegate.qml
+++ b/tests/auto/accessibility/data/defaults/switchdelegate.qml
diff --git a/tests/auto/accessibility/data/tabbar.qml b/tests/auto/accessibility/data/defaults/tabbar.qml
index d65b1305..d65b1305 100644
--- a/tests/auto/accessibility/data/tabbar.qml
+++ b/tests/auto/accessibility/data/defaults/tabbar.qml
diff --git a/tests/auto/accessibility/data/tabbutton.qml b/tests/auto/accessibility/data/defaults/tabbutton.qml
index 72277a9f..72277a9f 100644
--- a/tests/auto/accessibility/data/tabbutton.qml
+++ b/tests/auto/accessibility/data/defaults/tabbutton.qml
diff --git a/tests/auto/accessibility/data/textarea.qml b/tests/auto/accessibility/data/defaults/textarea.qml
index c861cda4..c861cda4 100644
--- a/tests/auto/accessibility/data/textarea.qml
+++ b/tests/auto/accessibility/data/defaults/textarea.qml
diff --git a/tests/auto/accessibility/data/textfield.qml b/tests/auto/accessibility/data/defaults/textfield.qml
index 222a1223..222a1223 100644
--- a/tests/auto/accessibility/data/textfield.qml
+++ b/tests/auto/accessibility/data/defaults/textfield.qml
diff --git a/tests/auto/accessibility/data/toolbar.qml b/tests/auto/accessibility/data/defaults/toolbar.qml
index f8cbe311..f8cbe311 100644
--- a/tests/auto/accessibility/data/toolbar.qml
+++ b/tests/auto/accessibility/data/defaults/toolbar.qml
diff --git a/tests/auto/accessibility/data/toolbutton.qml b/tests/auto/accessibility/data/defaults/toolbutton.qml
index 84d67cfa..84d67cfa 100644
--- a/tests/auto/accessibility/data/toolbutton.qml
+++ b/tests/auto/accessibility/data/defaults/toolbutton.qml
diff --git a/tests/auto/accessibility/data/tooltip.qml b/tests/auto/accessibility/data/defaults/tooltip.qml
index a6f7718d..a6f7718d 100644
--- a/tests/auto/accessibility/data/tooltip.qml
+++ b/tests/auto/accessibility/data/defaults/tooltip.qml
diff --git a/tests/auto/accessibility/data/tumbler.qml b/tests/auto/accessibility/data/defaults/tumbler.qml
index fda5c2bd..fda5c2bd 100644
--- a/tests/auto/accessibility/data/tumbler.qml
+++ b/tests/auto/accessibility/data/defaults/tumbler.qml
diff --git a/tests/auto/accessibility/data/weeknumbercolumn-2.qml b/tests/auto/accessibility/data/defaults/weeknumbercolumn-2.qml
index 2c5b836b..2c5b836b 100644
--- a/tests/auto/accessibility/data/weeknumbercolumn-2.qml
+++ b/tests/auto/accessibility/data/defaults/weeknumbercolumn-2.qml
diff --git a/tests/auto/accessibility/data/weeknumbercolumn.qml b/tests/auto/accessibility/data/defaults/weeknumbercolumn.qml
index 71d533ef..71d533ef 100644
--- a/tests/auto/accessibility/data/weeknumbercolumn.qml
+++ b/tests/auto/accessibility/data/defaults/weeknumbercolumn.qml
diff --git a/tests/auto/accessibility/data/override/abstractbutton.qml b/tests/auto/accessibility/data/override/abstractbutton.qml
new file mode 100644
index 00000000..67344329
--- /dev/null
+++ b/tests/auto/accessibility/data/override/abstractbutton.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+AbstractButton {
+ text: "AbstractButton"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/busyindicator.qml b/tests/auto/accessibility/data/override/busyindicator.qml
new file mode 100644
index 00000000..cc2afbc5
--- /dev/null
+++ b/tests/auto/accessibility/data/override/busyindicator.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+BusyIndicator {
+ Accessible.name: "BusyIndicatorOverride"
+}
diff --git a/tests/auto/accessibility/data/override/button.qml b/tests/auto/accessibility/data/override/button.qml
new file mode 100644
index 00000000..8e1bdb5f
--- /dev/null
+++ b/tests/auto/accessibility/data/override/button.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Button {
+ text: "Button"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/checkbox.qml b/tests/auto/accessibility/data/override/checkbox.qml
new file mode 100644
index 00000000..ec532d65
--- /dev/null
+++ b/tests/auto/accessibility/data/override/checkbox.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+CheckBox {
+ text: "CheckBox"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/checkdelegate.qml b/tests/auto/accessibility/data/override/checkdelegate.qml
new file mode 100644
index 00000000..94bb0ee0
--- /dev/null
+++ b/tests/auto/accessibility/data/override/checkdelegate.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+CheckDelegate {
+ text: "CheckDelegate"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/combobox.qml b/tests/auto/accessibility/data/override/combobox.qml
new file mode 100644
index 00000000..dc087212
--- /dev/null
+++ b/tests/auto/accessibility/data/override/combobox.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ComboBox {
+ model: ["ComboBox"]
+ Accessible.name: model[0] + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/container.qml b/tests/auto/accessibility/data/override/container.qml
new file mode 100644
index 00000000..987b8336
--- /dev/null
+++ b/tests/auto/accessibility/data/override/container.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Container {
+ Accessible.name: "ContainerOverride"
+}
diff --git a/tests/auto/accessibility/data/override/control.qml b/tests/auto/accessibility/data/override/control.qml
new file mode 100644
index 00000000..72f92c3d
--- /dev/null
+++ b/tests/auto/accessibility/data/override/control.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Control {
+ Accessible.name: "ControlOverride"
+}
diff --git a/tests/auto/accessibility/data/override/dayofweekrow-2.qml b/tests/auto/accessibility/data/override/dayofweekrow-2.qml
new file mode 100644
index 00000000..344bd94c
--- /dev/null
+++ b/tests/auto/accessibility/data/override/dayofweekrow-2.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import Qt.labs.calendar 1.0
+
+DayOfWeekRow {
+ Accessible.name: "Override"
+}
diff --git a/tests/auto/accessibility/data/override/dayofweekrow.qml b/tests/auto/accessibility/data/override/dayofweekrow.qml
new file mode 100644
index 00000000..e1e682c5
--- /dev/null
+++ b/tests/auto/accessibility/data/override/dayofweekrow.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import Qt.labs.calendar 1.0
+
+DayOfWeekRow {
+ Accessible.name: "DayOfWeekRowOverride"
+}
diff --git a/tests/auto/accessibility/data/override/dial.qml b/tests/auto/accessibility/data/override/dial.qml
new file mode 100644
index 00000000..558b31ea
--- /dev/null
+++ b/tests/auto/accessibility/data/override/dial.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Dial {
+ Accessible.name: "DialOverride"
+}
diff --git a/tests/auto/accessibility/data/override/dialog.qml b/tests/auto/accessibility/data/override/dialog.qml
new file mode 100644
index 00000000..30843ffd
--- /dev/null
+++ b/tests/auto/accessibility/data/override/dialog.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Dialog {
+ title: "Dialog"
+ Accessible.name: title + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/drawer.qml b/tests/auto/accessibility/data/override/drawer.qml
new file mode 100644
index 00000000..9867d27d
--- /dev/null
+++ b/tests/auto/accessibility/data/override/drawer.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Drawer {
+ Accessible.name: "DrawerOverride"
+}
diff --git a/tests/auto/accessibility/data/override/frame.qml b/tests/auto/accessibility/data/override/frame.qml
new file mode 100644
index 00000000..0e99e8c3
--- /dev/null
+++ b/tests/auto/accessibility/data/override/frame.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Frame {
+ Accessible.name: "FrameOverride"
+}
diff --git a/tests/auto/accessibility/data/override/groupbox.qml b/tests/auto/accessibility/data/override/groupbox.qml
new file mode 100644
index 00000000..ab58d30b
--- /dev/null
+++ b/tests/auto/accessibility/data/override/groupbox.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+GroupBox {
+ title: "GroupBox"
+ Accessible.name: title + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/itemdelegate.qml b/tests/auto/accessibility/data/override/itemdelegate.qml
new file mode 100644
index 00000000..4f25efd3
--- /dev/null
+++ b/tests/auto/accessibility/data/override/itemdelegate.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ItemDelegate {
+ text: "ItemDelegate"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/label.qml b/tests/auto/accessibility/data/override/label.qml
new file mode 100644
index 00000000..235c0661
--- /dev/null
+++ b/tests/auto/accessibility/data/override/label.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Label {
+ text: "Label"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/menu.qml b/tests/auto/accessibility/data/override/menu.qml
new file mode 100644
index 00000000..15628ea5
--- /dev/null
+++ b/tests/auto/accessibility/data/override/menu.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Menu {
+ Accessible.name: "MenuOverride"
+}
diff --git a/tests/auto/accessibility/data/override/menuitem.qml b/tests/auto/accessibility/data/override/menuitem.qml
new file mode 100644
index 00000000..89bdaf9a
--- /dev/null
+++ b/tests/auto/accessibility/data/override/menuitem.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+MenuItem {
+ text: "MenuItem"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/monthgrid-2.qml b/tests/auto/accessibility/data/override/monthgrid-2.qml
new file mode 100644
index 00000000..f56f7788
--- /dev/null
+++ b/tests/auto/accessibility/data/override/monthgrid-2.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import Qt.labs.calendar 1.0
+
+MonthGrid {
+ title: "MonthGrid"
+ Accessible.name: title + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/monthgrid.qml b/tests/auto/accessibility/data/override/monthgrid.qml
new file mode 100644
index 00000000..f56f7788
--- /dev/null
+++ b/tests/auto/accessibility/data/override/monthgrid.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import Qt.labs.calendar 1.0
+
+MonthGrid {
+ title: "MonthGrid"
+ Accessible.name: title + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/page.qml b/tests/auto/accessibility/data/override/page.qml
new file mode 100644
index 00000000..0d275d84
--- /dev/null
+++ b/tests/auto/accessibility/data/override/page.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Page {
+ title: "Page"
+ Accessible.name: title + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/pageindicator.qml b/tests/auto/accessibility/data/override/pageindicator.qml
new file mode 100644
index 00000000..4af84eda
--- /dev/null
+++ b/tests/auto/accessibility/data/override/pageindicator.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+PageIndicator {
+ Accessible.name: "PageIndicatorOverride"
+}
diff --git a/tests/auto/accessibility/data/override/pane.qml b/tests/auto/accessibility/data/override/pane.qml
new file mode 100644
index 00000000..b2f27db2
--- /dev/null
+++ b/tests/auto/accessibility/data/override/pane.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Pane {
+ Accessible.name: "PaneOverride"
+}
diff --git a/tests/auto/accessibility/data/override/popup.qml b/tests/auto/accessibility/data/override/popup.qml
new file mode 100644
index 00000000..e1126e2f
--- /dev/null
+++ b/tests/auto/accessibility/data/override/popup.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Popup {
+ Accessible.name: "PopupOverride"
+}
diff --git a/tests/auto/accessibility/data/override/progressbar.qml b/tests/auto/accessibility/data/override/progressbar.qml
new file mode 100644
index 00000000..bba0998a
--- /dev/null
+++ b/tests/auto/accessibility/data/override/progressbar.qml
@@ -0,0 +1,10 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ProgressBar {
+ from: 0
+ to: 100
+ value: 50
+
+ Accessible.name: "ProgressBarOverride"
+}
diff --git a/tests/auto/accessibility/data/override/radiobutton.qml b/tests/auto/accessibility/data/override/radiobutton.qml
new file mode 100644
index 00000000..89ad797d
--- /dev/null
+++ b/tests/auto/accessibility/data/override/radiobutton.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+RadioButton {
+ text: "RadioButton"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/radiodelegate.qml b/tests/auto/accessibility/data/override/radiodelegate.qml
new file mode 100644
index 00000000..1e6bee91
--- /dev/null
+++ b/tests/auto/accessibility/data/override/radiodelegate.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+RadioDelegate {
+ text: "RadioDelegate"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/rangeslider.qml b/tests/auto/accessibility/data/override/rangeslider.qml
new file mode 100644
index 00000000..8758a19f
--- /dev/null
+++ b/tests/auto/accessibility/data/override/rangeslider.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+RangeSlider {
+ from: 0
+ to: 100
+ first.value: 25
+ second.value: 75
+ stepSize: 1
+ orientation: Qt.Horizontal
+
+ Accessible.name: "RangeSliderOverride"
+}
diff --git a/tests/auto/accessibility/data/override/roundbutton.qml b/tests/auto/accessibility/data/override/roundbutton.qml
new file mode 100644
index 00000000..c338afd1
--- /dev/null
+++ b/tests/auto/accessibility/data/override/roundbutton.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+RoundButton {
+ text: "RoundButton"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/scrollbar.qml b/tests/auto/accessibility/data/override/scrollbar.qml
new file mode 100644
index 00000000..4849994f
--- /dev/null
+++ b/tests/auto/accessibility/data/override/scrollbar.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ScrollBar {
+ Accessible.name: "ScrollBarOverride"
+}
diff --git a/tests/auto/accessibility/data/override/scrollindicator.qml b/tests/auto/accessibility/data/override/scrollindicator.qml
new file mode 100644
index 00000000..2e85d8db
--- /dev/null
+++ b/tests/auto/accessibility/data/override/scrollindicator.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ScrollIndicator {
+ Accessible.name: "ScrollIndicatorOverride"
+}
diff --git a/tests/auto/accessibility/data/override/slider.qml b/tests/auto/accessibility/data/override/slider.qml
new file mode 100644
index 00000000..1fde4977
--- /dev/null
+++ b/tests/auto/accessibility/data/override/slider.qml
@@ -0,0 +1,11 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Slider {
+ from: 0
+ to: 100
+ value: 50
+ stepSize: 1
+ orientation: Qt.Horizontal
+ Accessible.name: "SliderOverride"
+}
diff --git a/tests/auto/accessibility/data/override/spinbox.qml b/tests/auto/accessibility/data/override/spinbox.qml
new file mode 100644
index 00000000..51c883b1
--- /dev/null
+++ b/tests/auto/accessibility/data/override/spinbox.qml
@@ -0,0 +1,10 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+SpinBox {
+ from: 0
+ to: 100
+ value: 50
+ stepSize: 1
+ Accessible.name: "SpinBoxOverride"
+}
diff --git a/tests/auto/accessibility/data/override/stackview.qml b/tests/auto/accessibility/data/override/stackview.qml
new file mode 100644
index 00000000..dfc3e925
--- /dev/null
+++ b/tests/auto/accessibility/data/override/stackview.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+StackView {
+ Accessible.name: "StackViewOverride"
+}
diff --git a/tests/auto/accessibility/data/override/swipedelegate.qml b/tests/auto/accessibility/data/override/swipedelegate.qml
new file mode 100644
index 00000000..9e3f00a9
--- /dev/null
+++ b/tests/auto/accessibility/data/override/swipedelegate.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+SwipeDelegate {
+ text: "SwipeDelegate"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/swipeview.qml b/tests/auto/accessibility/data/override/swipeview.qml
new file mode 100644
index 00000000..9b3734b2
--- /dev/null
+++ b/tests/auto/accessibility/data/override/swipeview.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+SwipeView {
+ Accessible.name: "SwipeViewOverride"
+}
diff --git a/tests/auto/accessibility/data/override/switch.qml b/tests/auto/accessibility/data/override/switch.qml
new file mode 100644
index 00000000..9162a374
--- /dev/null
+++ b/tests/auto/accessibility/data/override/switch.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Switch {
+ text: "Switch"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/switchdelegate.qml b/tests/auto/accessibility/data/override/switchdelegate.qml
new file mode 100644
index 00000000..f1a99c69
--- /dev/null
+++ b/tests/auto/accessibility/data/override/switchdelegate.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+SwitchDelegate {
+ text: "SwitchDelegate"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/tabbar.qml b/tests/auto/accessibility/data/override/tabbar.qml
new file mode 100644
index 00000000..9e00d017
--- /dev/null
+++ b/tests/auto/accessibility/data/override/tabbar.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+TabBar {
+ Accessible.name: "TabBarOverride"
+}
diff --git a/tests/auto/accessibility/data/override/tabbutton.qml b/tests/auto/accessibility/data/override/tabbutton.qml
new file mode 100644
index 00000000..2b9f83d1
--- /dev/null
+++ b/tests/auto/accessibility/data/override/tabbutton.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+TabButton {
+ text: "TabButton"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/textarea.qml b/tests/auto/accessibility/data/override/textarea.qml
new file mode 100644
index 00000000..00ebdb59
--- /dev/null
+++ b/tests/auto/accessibility/data/override/textarea.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+TextArea {
+ text: "TextArea"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/textfield.qml b/tests/auto/accessibility/data/override/textfield.qml
new file mode 100644
index 00000000..6f5bb469
--- /dev/null
+++ b/tests/auto/accessibility/data/override/textfield.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+TextField {
+ text: "TextField"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/toolbar.qml b/tests/auto/accessibility/data/override/toolbar.qml
new file mode 100644
index 00000000..170c8ce5
--- /dev/null
+++ b/tests/auto/accessibility/data/override/toolbar.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ToolBar {
+ Accessible.name: "ToolBarOverride"
+}
diff --git a/tests/auto/accessibility/data/override/toolbutton.qml b/tests/auto/accessibility/data/override/toolbutton.qml
new file mode 100644
index 00000000..12b634e7
--- /dev/null
+++ b/tests/auto/accessibility/data/override/toolbutton.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ToolButton {
+ text: "ToolButton"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/tooltip.qml b/tests/auto/accessibility/data/override/tooltip.qml
new file mode 100644
index 00000000..92ff8396
--- /dev/null
+++ b/tests/auto/accessibility/data/override/tooltip.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+ToolTip {
+ text: "ToolTip"
+ Accessible.name: text + "Override"
+}
diff --git a/tests/auto/accessibility/data/override/tumbler.qml b/tests/auto/accessibility/data/override/tumbler.qml
new file mode 100644
index 00000000..ac1221d7
--- /dev/null
+++ b/tests/auto/accessibility/data/override/tumbler.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+
+Tumbler {
+ Accessible.name: "TumblerOverride"
+}
diff --git a/tests/auto/accessibility/data/override/weeknumbercolumn-2.qml b/tests/auto/accessibility/data/override/weeknumbercolumn-2.qml
new file mode 100644
index 00000000..2c5b836b
--- /dev/null
+++ b/tests/auto/accessibility/data/override/weeknumbercolumn-2.qml
@@ -0,0 +1,4 @@
+import QtQuick 2.12
+import Qt.labs.calendar 1.0
+
+WeekNumberColumn { }
diff --git a/tests/auto/accessibility/data/override/weeknumbercolumn.qml b/tests/auto/accessibility/data/override/weeknumbercolumn.qml
new file mode 100644
index 00000000..7e182917
--- /dev/null
+++ b/tests/auto/accessibility/data/override/weeknumbercolumn.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.12
+import Qt.labs.calendar 1.0
+
+WeekNumberColumn {
+ Accessible.name: "WeekNumberColumnOverride"
+}
diff --git a/tests/auto/accessibility/tst_accessibility.cpp b/tests/auto/accessibility/tst_accessibility.cpp
index 0c2f2e74..6e5a37df 100644
--- a/tests/auto/accessibility/tst_accessibility.cpp
+++ b/tests/auto/accessibility/tst_accessibility.cpp
@@ -57,13 +57,47 @@ private slots:
void a11y_data();
void a11y();
+ void override_data();
+ void override();
+
private:
QQmlEngine engine;
};
+#if QT_CONFIG(accessibility)
+static QPlatformAccessibility *platformAccessibility()
+{
+ QPlatformIntegration *pfIntegration = QGuiApplicationPrivate::platformIntegration();
+ return pfIntegration ? pfIntegration->accessibility() : nullptr;
+}
+#endif
+
+QString adjustFileBaseName(const QString &fileBaseName)
+{
+#if !QT_CONFIG(accessibility)
+ if (fileBaseName == QLatin1Literal("dayofweekrow")
+ || fileBaseName == QLatin1Literal("monthgrid")
+ || fileBaseName == QLatin1Literal("weeknumbercolumn"))
+ return fileBaseName += QLatin1Literal("-2");
+#else
+ return fileBaseName;
+#endif
+}
+
+QQuickItem *findItem(QObject *object)
+{
+ QQuickItem *item = qobject_cast<QQuickItem *>(object);
+ if (!item) {
+ QQuickPopup *popup = qobject_cast<QQuickPopup *>(object);
+ if (popup)
+ item = popup->popupItem();
+ }
+ return item;
+}
+
void tst_accessibility::a11y_data()
{
- QTest::addColumn<QString>("name");
+ QTest::addColumn<QString>("fileBaseName");
QTest::addColumn<QAccessible::Role>("role");
QTest::addColumn<QString>("text");
@@ -116,61 +150,135 @@ void tst_accessibility::a11y_data()
QTest::newRow("WeekNumberColumn") << "weeknumbercolumn" << QAccessible::NoRole << "WeekNumberColumn";
}
+void tst_accessibility::a11y()
+{
+ QFETCH(QString, fileBaseName);
+ QFETCH(QAccessible::Role, role);
+ QFETCH(QString, text);
+
+ QQmlComponent component(&engine);
+ component.loadUrl(testFileUrl("defaults/" + adjustFileBaseName(fileBaseName) + ".qml"));
+
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
+
+ QQuickItem *item = findItem(object.data());
+ QVERIFY(item);
+
#if QT_CONFIG(accessibility)
-static QPlatformAccessibility *platformAccessibility()
+ QQuickAccessibleAttached *attached = QQuickAccessibleAttached::attachedProperties(item);
+ if (fileBaseName != QLatin1String("dayofweekrow")
+ && fileBaseName != QLatin1String("monthgrid")
+ && fileBaseName != QLatin1String("weeknumbercolumn")) {
+ if (QAccessible::isActive()) {
+ QVERIFY(attached);
+ } else {
+ QVERIFY(!attached);
+ QPlatformAccessibility *accessibility = platformAccessibility();
+ if (!accessibility)
+ QSKIP("No QPlatformAccessibility available.");
+ accessibility->setActive(true);
+ attached = QQuickAccessibleAttached::attachedProperties(item);
+ }
+ }
+ QVERIFY(attached);
+ QCOMPARE(attached->role(), role);
+ QCOMPARE(attached->name(), text);
+#else
+ Q_UNUSED(role)
+ Q_UNUSED(text)
+#endif
+}
+
+void tst_accessibility::override_data()
{
- QPlatformIntegration *pfIntegration = QGuiApplicationPrivate::platformIntegration();
- return pfIntegration ? pfIntegration->accessibility() : nullptr;
+ QTest::addColumn<QAccessible::Role>("role");
+
+ QTest::newRow("AbstractButton") << QAccessible::Button;
+ QTest::newRow("BusyIndicator") << QAccessible::Indicator;
+ QTest::newRow("Button") << QAccessible::Button;
+ QTest::newRow("CheckBox") << QAccessible::CheckBox;
+ QTest::newRow("CheckDelegate") << QAccessible::CheckBox;
+ QTest::newRow("ComboBox") << QAccessible::ComboBox;
+ QTest::newRow("Container") << QAccessible::NoRole;
+ QTest::newRow("Control") << QAccessible::NoRole;
+ QTest::newRow("Dial") << QAccessible::Dial;
+ QTest::newRow("Dialog") << QAccessible::Dialog;
+ QTest::newRow("Drawer") << QAccessible::Dialog;
+ QTest::newRow("Frame") << QAccessible::Border;
+ QTest::newRow("GroupBox") << QAccessible::Grouping;
+ QTest::newRow("ItemDelegate") << QAccessible::ListItem;
+ QTest::newRow("Label") << QAccessible::StaticText;
+ QTest::newRow("Menu") << QAccessible::PopupMenu;
+ QTest::newRow("MenuItem") << QAccessible::MenuItem;
+ QTest::newRow("Page") << QAccessible::PageTab;
+ QTest::newRow("PageIndicator") << QAccessible::Indicator;
+ QTest::newRow("Pane") << QAccessible::Pane;
+ QTest::newRow("Popup") << QAccessible::Dialog;
+ QTest::newRow("ProgressBar") << QAccessible::ProgressBar;
+ QTest::newRow("RadioButton") << QAccessible::RadioButton;
+ QTest::newRow("RadioDelegate") << QAccessible::RadioButton;
+ QTest::newRow("RangeSlider") << QAccessible::Slider;
+ QTest::newRow("RoundButton") << QAccessible::Button;
+ QTest::newRow("ScrollBar") << QAccessible::ScrollBar;
+ QTest::newRow("ScrollIndicator") << QAccessible::Indicator;
+ QTest::newRow("Slider") << QAccessible::Slider;
+ QTest::newRow("SpinBox") << QAccessible::SpinBox;
+ QTest::newRow("StackView") << QAccessible::LayeredPane;
+ QTest::newRow("SwipeDelegate") << QAccessible::ListItem;
+ QTest::newRow("SwipeView") << QAccessible::PageTabList;
+ QTest::newRow("Switch") << QAccessible::CheckBox;
+ QTest::newRow("SwitchDelegate") << QAccessible::ListItem;
+ QTest::newRow("TabBar") << QAccessible::PageTabList;
+ QTest::newRow("TabButton") << QAccessible::PageTab;
+ QTest::newRow("TextArea") << QAccessible::EditableText;
+ QTest::newRow("TextField") << QAccessible::EditableText;
+ QTest::newRow("ToolBar") << QAccessible::ToolBar;
+ QTest::newRow("ToolButton") << QAccessible::Button;
+ QTest::newRow("ToolTip") << QAccessible::ToolTip;
+ QTest::newRow("Tumbler") << QAccessible::NoRole;
+
+ QTest::newRow("DayOfWeekRow") << QAccessible::NoRole;
+ QTest::newRow("MonthGrid") << QAccessible::NoRole;
+ QTest::newRow("WeekNumberColumn") << QAccessible::NoRole;
}
-#endif
-void tst_accessibility::a11y()
+void tst_accessibility::override()
{
- QFETCH(QString, name);
QFETCH(QAccessible::Role, role);
- QFETCH(QString, text);
- QString fn = name;
-#if !QT_CONFIG(accessibility)
- if (name == QLatin1String("dayofweekrow")
- || name == QLatin1String("monthgrid")
- || name == QLatin1String("weeknumbercolumn"))
- fn += QLatin1String("-2");
-#endif
+ const QString name = QTest::currentDataTag();
+ const QString fileBaseName = name.toLower();
QQmlComponent component(&engine);
- component.loadUrl(testFileUrl(fn + ".qml"));
+ component.loadUrl(testFileUrl("override/" + adjustFileBaseName(fileBaseName) + ".qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
- QQuickItem *item = qobject_cast<QQuickItem *>(object.data());
- if (!item) {
- QQuickPopup *popup = qobject_cast<QQuickPopup *>(object.data());
- if (popup)
- item = popup->popupItem();
- }
+ QQuickItem *item = findItem(object.data());
QVERIFY(item);
#if QT_CONFIG(accessibility)
- QQuickAccessibleAttached *acc = QQuickAccessibleAttached::attachedProperties(item);
- if (name != QLatin1String("dayofweekrow")
- && name != QLatin1String("monthgrid")
- && name != QLatin1String("weeknumbercolumn")) {
+ QQuickAccessibleAttached *attached = QQuickAccessibleAttached::attachedProperties(item);
+ if (fileBaseName != QLatin1String("dayofweekrow")
+ && fileBaseName != QLatin1String("monthgrid")
+ && fileBaseName != QLatin1String("weeknumbercolumn")) {
if (QAccessible::isActive()) {
- QVERIFY(acc);
+ QVERIFY(attached);
} else {
- QVERIFY(!acc);
QPlatformAccessibility *accessibility = platformAccessibility();
if (!accessibility)
QSKIP("No QPlatformAccessibility available.");
accessibility->setActive(true);
- acc = QQuickAccessibleAttached::attachedProperties(item);
+ if (!attached)
+ attached = QQuickAccessibleAttached::attachedProperties(item);
}
}
- QVERIFY(acc);
- QCOMPARE(acc->role(), role);
- QCOMPARE(acc->name(), text);
+
+ QVERIFY(attached);
+ QCOMPARE(attached->role(), role);
+ QCOMPARE(attached->name(), name + "Override");
#else
Q_UNUSED(role)
Q_UNUSED(text)