Accessibility: Do not automatically add controllers
While I do like the idea, it currently relies on every QWidget having QAccessibleWidget as a11y representation. This crashes for example when using the itemviews and asking them for relations. Change-Id: Ie15a78dae620eefb97c646b9e802b13bdf864650 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
This commit is contained in:
parent
3db8877d28
commit
8b24ed162c
@ -377,25 +377,6 @@ QAccessibleWidget::relations(QAccessible::Relation match /*= QAccessible::AllRel
|
||||
}
|
||||
}
|
||||
|
||||
if (match & QAccessible::Controller) {
|
||||
const QAccessible::Relation rel = QAccessible::Controller;
|
||||
QACConnectionObject *connectionObject = (QACConnectionObject*)object();
|
||||
const QObjectList senderList = connectionObject->senderList();
|
||||
for (int s = 0; s < senderList.count(); ++s) {
|
||||
QObject *sender = senderList.at(s);
|
||||
if (sender->isWidgetType() && sender != object()) {
|
||||
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(sender);
|
||||
QACConnectionObject *connectionSender = (QACConnectionObject*)sender;
|
||||
QStringList senderPrimarySignals = static_cast<QAccessibleWidget*>(iface)->d->primarySignals;
|
||||
for (int sig = 0; sig < senderPrimarySignals.count(); ++sig) {
|
||||
const QByteArray strSignal = senderPrimarySignals.at(sig).toLatin1();
|
||||
if (connectionSender->isSender(object(), strSignal.constData()))
|
||||
rels.append(qMakePair(iface, rel));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (match & QAccessible::Controlled) {
|
||||
QObjectList allReceivers;
|
||||
QACConnectionObject *connectionObject = (QACConnectionObject*)object();
|
||||
|
@ -906,30 +906,6 @@ void tst_QAccessibility::buttonTest()
|
||||
toggletool.setText("Toggle");
|
||||
toggletool.setMinimumSize(20,20);
|
||||
|
||||
// test Controller/Controlled relations
|
||||
{
|
||||
QCheckBox toggler("Toggle me!", &window);
|
||||
bool ok = connect(&pushButton, SIGNAL(clicked()), &toggler, SLOT(toggle()));
|
||||
QCOMPARE(ok, true);
|
||||
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&toggler);
|
||||
QVERIFY(iface);
|
||||
QCOMPARE(iface->role(), QAccessible::CheckBox);
|
||||
QAccessibleInterface *buttonIFace = relatedInterface(iface, QAccessible::Controller);
|
||||
QVERIFY(buttonIFace);
|
||||
QCOMPARE(buttonIFace->role(), QAccessible::Button);
|
||||
QCOMPARE(buttonIFace->object(), &pushButton);
|
||||
delete buttonIFace;
|
||||
delete iface;
|
||||
|
||||
buttonIFace = QAccessible::queryAccessibleInterface(&pushButton);
|
||||
QVERIFY(buttonIFace);
|
||||
QCOMPARE(buttonIFace->role(), QAccessible::Button);
|
||||
iface = relatedInterface(buttonIFace, QAccessible::Controlled);
|
||||
QVERIFY(iface);
|
||||
QCOMPARE(iface->object(), &toggler);
|
||||
|
||||
}
|
||||
|
||||
// test push button
|
||||
QAccessibleInterface* interface = QAccessible::queryAccessibleInterface(&pushButton);
|
||||
QAccessibleActionInterface* actionInterface = interface->actionInterface();
|
||||
|
Loading…
Reference in New Issue
Block a user