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:
Frederik Gladhorn 2012-05-10 21:36:24 +02:00 committed by Qt by Nokia
parent 3db8877d28
commit 8b24ed162c
2 changed files with 0 additions and 43 deletions

View File

@ -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();

View File

@ -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();