summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/accessible/qaccessible.cpp6
-rw-r--r--src/gui/accessible/qaccessible.h24
-rw-r--r--src/gui/accessible/qaccessible2.cpp18
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp20
-rw-r--r--src/gui/accessible/qaccessibleobject.h12
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.cpp30
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.h6
-rw-r--r--src/plugins/accessible/widgets/itemviews.cpp130
-rw-r--r--src/plugins/accessible/widgets/itemviews.h68
-rw-r--r--src/plugins/accessible/widgets/main.cpp11
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp96
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h37
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp427
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.h57
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.cpp61
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.h18
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp64
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h26
-rw-r--r--src/plugins/platforms/windows/qwindowsaccessibility.cpp111
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp90
-rw-r--r--src/widgets/accessible/qaccessiblewidget.h12
-rw-r--r--src/widgets/itemviews/qlistview.cpp12
-rw-r--r--src/widgets/itemviews/qtreeview.cpp14
-rw-r--r--src/widgets/itemviews/qtreeview.h2
-rw-r--r--src/widgets/kernel/qwidget.cpp2
-rw-r--r--tests/auto/integrationtests/macgui/guitest.cpp58
-rw-r--r--tests/auto/integrationtests/macgui/guitest.h32
-rw-r--r--tests/auto/integrationtests/macgui/tst_macgui.cpp14
-rw-r--r--tests/auto/integrationtests/qaccessibility/tst_qaccessibility.cpp529
29 files changed, 569 insertions, 1418 deletions
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index 2aaf66973a..34484ad352 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -871,8 +871,7 @@ const QAccessibleInterface *other, int otherChild) const
\sa relations(), indexOfChild(), navigate()
*/
-QAccessible::Relation QAccessibleInterface::relationTo(int,
- const QAccessibleInterface *, int) const
+QAccessible::Relation QAccessibleInterface::relationTo(const QAccessibleInterface *) const
{
return Unrelated;
}
@@ -1206,10 +1205,9 @@ QWindow *QAccessibleInterface::window() const
Returns an invalid QVariant if the object doesn't support the action.
*/
-QVariant QAccessibleInterface::invokeMethod(Method method, int child, const QVariantList &params)
+QVariant QAccessibleInterface::invokeMethod(Method method, const QVariantList &params)
{
Q_UNUSED(method)
- Q_UNUSED(child)
Q_UNUSED(params)
return QVariant();
}
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h
index 7b9b9e12a4..0835793418 100644
--- a/src/gui/accessible/qaccessible.h
+++ b/src/gui/accessible/qaccessible.h
@@ -369,8 +369,7 @@ public:
virtual QWindow *window() const;
// relations
- virtual Relation relationTo(int child, const QAccessibleInterface *other,
- int otherChild) const;
+ virtual Relation relationTo(const QAccessibleInterface *other) const;
virtual QVector<QPair<QAccessibleInterface*, Relation> > relations() const;
virtual int childAt(int x, int y) const = 0;
@@ -383,17 +382,16 @@ public:
virtual int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const = 0;
// properties and state
- virtual QString text(Text t, int child = 0) const = 0;
- virtual void setText(Text t, int child, const QString &text) = 0;
- virtual QRect rect(int child = 0) const = 0;
- virtual Role role(int child = 0) const = 0;
- virtual State state(int child = 0) const = 0;
+ virtual QString text(Text t) const = 0;
+ virtual void setText(Text t, const QString &text) = 0;
+ virtual QRect rect() const = 0;
+ virtual Role role() const = 0;
+ virtual State state() const = 0;
virtual QColor foregroundColor() const;
virtual QColor backgroundColor() const;
- virtual QVariant invokeMethod(Method method, int child = 0,
- const QVariantList &params = QVariantList());
+ virtual QVariant invokeMethod(Method method, const QVariantList &params = QVariantList());
inline QSet<Method> supportedMethods()
{ return qvariant_cast<QSet<Method> >(invokeMethod(ListSupportedMethods)); }
@@ -431,18 +429,16 @@ private:
class QAccessibleEvent : public QEvent
{
public:
- inline QAccessibleEvent(Type type, int child);
- inline int child() const { return c; }
+ inline QAccessibleEvent(Type type);
inline QString value() const { return val; }
inline void setValue(const QString &aText) { val = aText; }
private:
- int c;
QString val;
};
-inline QAccessibleEvent::QAccessibleEvent(Type atype, int achild)
- : QEvent(atype), c(achild) {}
+inline QAccessibleEvent::QAccessibleEvent(Type atype)
+ : QEvent(atype) {}
#define QAccessibleInterface_iid "com.trolltech.Qt.QAccessibleInterface"
Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
diff --git a/src/gui/accessible/qaccessible2.cpp b/src/gui/accessible/qaccessible2.cpp
index f8d06da160..d8bebdc697 100644
--- a/src/gui/accessible/qaccessible2.cpp
+++ b/src/gui/accessible/qaccessible2.cpp
@@ -401,7 +401,7 @@ QAccessibleSimpleEditableTextInterface::QAccessibleSimpleEditableTextInterface(
#ifndef QT_NO_CLIPBOARD
static QString textForRange(QAccessibleInterface *iface, int startOffset, int endOffset)
{
- return iface->text(QAccessible::Value, 0).mid(startOffset, endOffset - startOffset);
+ return iface->text(QAccessible::Value).mid(startOffset, endOffset - startOffset);
}
#endif
@@ -417,16 +417,16 @@ void QAccessibleSimpleEditableTextInterface::copyText(int startOffset, int endOf
void QAccessibleSimpleEditableTextInterface::deleteText(int startOffset, int endOffset)
{
- QString txt = iface->text(QAccessible::Value, 0);
+ QString txt = iface->text(QAccessible::Value);
txt.remove(startOffset, endOffset - startOffset);
- iface->setText(QAccessible::Value, 0, txt);
+ iface->setText(QAccessible::Value, txt);
}
void QAccessibleSimpleEditableTextInterface::insertText(int offset, const QString &text)
{
- QString txt = iface->text(QAccessible::Value, 0);
+ QString txt = iface->text(QAccessible::Value);
txt.insert(offset, text);
- iface->setText(QAccessible::Value, 0, txt);
+ iface->setText(QAccessible::Value, txt);
}
void QAccessibleSimpleEditableTextInterface::cutText(int startOffset, int endOffset)
@@ -446,17 +446,17 @@ void QAccessibleSimpleEditableTextInterface::pasteText(int offset)
#ifdef QT_NO_CLIPBOARD
Q_UNUSED(offset);
#else
- QString txt = iface->text(QAccessible::Value, 0);
+ QString txt = iface->text(QAccessible::Value);
txt.insert(offset, QGuiApplication::clipboard()->text());
- iface->setText(QAccessible::Value, 0, txt);
+ iface->setText(QAccessible::Value, txt);
#endif
}
void QAccessibleSimpleEditableTextInterface::replaceText(int startOffset, int endOffset, const QString &text)
{
- QString txt = iface->text(QAccessible::Value, 0);
+ QString txt = iface->text(QAccessible::Value);
txt.replace(startOffset, endOffset - startOffset, text);
- iface->setText(QAccessible::Value, 0, txt);
+ iface->setText(QAccessible::Value, txt);
}
QT_END_NAMESPACE
diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp
index da68579809..695c66654e 100644
--- a/src/gui/accessible/qaccessibleobject.cpp
+++ b/src/gui/accessible/qaccessibleobject.cpp
@@ -144,13 +144,13 @@ bool QAccessibleObject::isValid() const
}
/*! \reimp */
-QRect QAccessibleObject::rect(int) const
+QRect QAccessibleObject::rect() const
{
return QRect();
}
/*! \reimp */
-void QAccessibleObject::setText(Text, int, const QString &)
+void QAccessibleObject::setText(Text, const QString &)
{
}
@@ -227,20 +227,14 @@ int QAccessibleApplication::childAt(int x, int y) const
}
/*! \reimp */
-QAccessible::Relation QAccessibleApplication::relationTo(int child, const
- QAccessibleInterface *other, int otherChild) const
+QAccessible::Relation QAccessibleApplication::relationTo(const QAccessibleInterface *other) const
{
QObject *o = other ? other->object() : 0;
if (!o)
return Unrelated;
if(o == object()) {
- if (child && !otherChild)
- return Child;
- if (!child && otherChild)
- return Ancestor;
- if (!child && !otherChild)
- return Self;
+ return Self;
}
return Unrelated;
@@ -290,7 +284,7 @@ int QAccessibleApplication::navigate(RelationFlag relation, int,
}
/*! \reimp */
-QString QAccessibleApplication::text(Text t, int) const
+QString QAccessibleApplication::text(Text t) const
{
switch (t) {
case Name:
@@ -304,13 +298,13 @@ QString QAccessibleApplication::text(Text t, int) const
}
/*! \reimp */
-QAccessible::Role QAccessibleApplication::role(int) const
+QAccessible::Role QAccessibleApplication::role() const
{
return Application;
}
/*! \reimp */
-QAccessible::State QAccessibleApplication::state(int) const
+QAccessible::State QAccessibleApplication::state() const
{
return QGuiApplication::activeWindow() ? Focused : Normal;
}
diff --git a/src/gui/accessible/qaccessibleobject.h b/src/gui/accessible/qaccessibleobject.h
index d562960554..6a02dc86c7 100644
--- a/src/gui/accessible/qaccessibleobject.h
+++ b/src/gui/accessible/qaccessibleobject.h
@@ -65,8 +65,8 @@ public:
QObject *object() const;
// properties
- QRect rect(int child = 0) const;
- void setText(Text t, int child, const QString &text);
+ QRect rect() const;
+ void setText(Text t, const QString &text);
protected:
virtual ~QAccessibleObject();
@@ -86,7 +86,7 @@ public:
// relations
int childCount() const;
int indexOfChild(const QAccessibleInterface*) const;
- Relation relationTo(int, const QAccessibleInterface *, int) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
// navigation
QAccessibleInterface *parent() const;
@@ -95,9 +95,9 @@ public:
int navigate(RelationFlag, int, QAccessibleInterface **) const;
// properties and state
- QString text(Text t, int child = 0) const;
- Role role(int child = 0) const;
- State state(int child = 0) const;
+ QString text(Text t) const;
+ Role role() const;
+ State state() const;
};
#endif // QT_NO_ACCESSIBILITY
diff --git a/src/plugins/accessible/widgets/complexwidgets.cpp b/src/plugins/accessible/widgets/complexwidgets.cpp
index 5f144b6952..766d18dbff 100644
--- a/src/plugins/accessible/widgets/complexwidgets.cpp
+++ b/src/plugins/accessible/widgets/complexwidgets.cpp
@@ -68,6 +68,7 @@ QT_BEGIN_NAMESPACE
QString Q_GUI_EXPORT qt_accStripAmp(const QString &text);
+#if 0
#ifndef QT_NO_ITEMVIEWS
/*
The MSDN article "Exposing Data Tables through Microsoft Active Accessibility" explains
@@ -425,7 +426,7 @@ int QAccessibleItemRow::childCount() const
int QAccessibleItemRow::indexOfChild(const QAccessibleInterface *iface) const
{
- if (!iface || iface->role(0) != Row)
+ if (!iface || iface->role() != Row)
return -1;
//### meaningless code?
@@ -1437,6 +1438,7 @@ QAccessible::State QAccessibleHeader::state(int child) const
return state;
}
#endif // QT_NO_ITEMVIEWS
+#endif // 0
#ifndef QT_NO_TABBAR
/*!
@@ -1456,14 +1458,14 @@ public:
{}
QObject *object() const { return 0; }
- Role role(int child) const { Q_ASSERT(child == 0); return QAccessible::PageTab; }
- State state(int) const {
+ Role role() const { return QAccessible::PageTab; }
+ State state() const {
QAccessibleInterface *parentInterface = parent();
State state = parentInterface->state();
delete parentInterface;
return state;
}
- QRect rect(int) const {
+ QRect rect() const {
if (!isValid())
return QRect();
@@ -1479,8 +1481,8 @@ public:
int childCount() const { return 0; }
int indexOfChild(const QAccessibleInterface *) const { return -1; }
- QString text(Text, int) const { return qt_accStripAmp(m_parent->tabText(m_index)); }
- void setText(Text, int, const QString &) {}
+ QString text(Text) const { return qt_accStripAmp(m_parent->tabText(m_index)); }
+ void setText(Text, const QString &) {}
QAccessibleInterface *parent() const {
return QAccessible::queryAccessibleInterface(m_parent);
@@ -1494,17 +1496,12 @@ public:
}
return -1;
}
- Relation relationTo(int, const QAccessibleInterface *, int) const
+ Relation relationTo(const QAccessibleInterface *) const
{
return QAccessible::Unrelated;
}
// action interface
- int actionCount() {
- return 1;
- }
-
-
QStringList actionNames() const
{
return QStringList(pressAction());
@@ -1587,9 +1584,8 @@ int QAccessibleTabBar::childCount() const
return tabBar()->count() + 2;
}
-QString QAccessibleTabBar::text(Text t, int child) const
+QString QAccessibleTabBar::text(Text t) const
{
- Q_ASSERT(child == 0);
if (t == QAccessible::Name) {
return qt_accStripAmp(tabBar()->tabText(tabBar()->currentIndex()));
}
@@ -1694,14 +1690,14 @@ int QAccessibleComboBox::indexOfChild(const QAccessibleInterface *child) const
}
/*! \reimp */
-QString QAccessibleComboBox::text(Text t, int) const
+QString QAccessibleComboBox::text(Text t) const
{
QString str;
switch (t) {
case Name:
#ifndef Q_OS_UNIX // on Linux we use relations for this, name is text (fall through to Value)
- str = QAccessibleWidget::text(t, 0);
+ str = QAccessibleWidget::text(t);
break;
#endif
case Value:
@@ -1719,7 +1715,7 @@ QString QAccessibleComboBox::text(Text t, int) const
break;
}
if (str.isEmpty())
- str = QAccessibleWidget::text(t, 0);
+ str = QAccessibleWidget::text(t);
return str;
}
diff --git a/src/plugins/accessible/widgets/complexwidgets.h b/src/plugins/accessible/widgets/complexwidgets.h
index 13fe9beb9f..53997b96ff 100644
--- a/src/plugins/accessible/widgets/complexwidgets.h
+++ b/src/plugins/accessible/widgets/complexwidgets.h
@@ -99,6 +99,7 @@ public:
#endif // QT_NO_SCROLLAREA
+#if 0
#ifndef QT_NO_ITEMVIEWS
class QAccessibleHeader : public QAccessibleWidget
{
@@ -226,6 +227,7 @@ private:
};
#endif
+#endif
#ifndef QT_NO_TABBAR
class QAccessibleTabBar : public QAccessibleWidget
@@ -235,7 +237,7 @@ public:
explicit QAccessibleTabBar(QWidget *w);
int childCount() const;
- QString text(Text t, int child) const;
+ QString text(Text t) const;
bool setSelected(int child, bool on, bool extend);
QVector<int> selection() const;
@@ -261,7 +263,7 @@ public:
int indexOfChild(const QAccessibleInterface *child) const;
QAccessibleInterface* child(int index) const;
- QString text(Text t, int child) const;
+ QString text(Text t) const;
// QAccessibleActionInterface
QStringList actionNames() const;
diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp
index ae9e95ddb0..6abc27b2a1 100644
--- a/src/plugins/accessible/widgets/itemviews.cpp
+++ b/src/plugins/accessible/widgets/itemviews.cpp
@@ -222,7 +222,7 @@ QAccessibleTable2Cell *QAccessibleTable2::cell(const QModelIndex &index) const
QAccessibleTable2CellInterface *QAccessibleTable2::cellAt(int row, int column) const
{
- Q_ASSERT(role(0) != QAccessible::Tree);
+ Q_ASSERT(role() != QAccessible::Tree);
QModelIndex index = view->model()->index(row, column);
//Q_ASSERT(index.isValid());
if (!index.isValid()) {
@@ -357,15 +357,13 @@ QAccessible2::TableModelChange QAccessibleTable2::modelChange() const
return change;
}
-QAccessible::Role QAccessibleTable2::role(int child) const
+QAccessible::Role QAccessibleTable2::role() const
{
- Q_ASSERT(child == 0);
return m_role;
}
-QAccessible::State QAccessibleTable2::state(int child) const
+QAccessible::State QAccessibleTable2::state() const
{
- Q_ASSERT(child == 0);
return QAccessible::Normal;
}
@@ -393,37 +391,35 @@ int QAccessibleTable2::childCount() const
int QAccessibleTable2::indexOfChild(const QAccessibleInterface *iface) const
{
- Q_ASSERT(iface->role(0) != QAccessible::TreeItem); // should be handled by tree class
- if (iface->role(0) == QAccessible::Cell || iface->role(0) == QAccessible::ListItem) {
+ Q_ASSERT(iface->role() != QAccessible::TreeItem); // should be handled by tree class
+ if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) {
const QAccessibleTable2Cell* cell = static_cast<const QAccessibleTable2Cell*>(iface);
return logicalIndex(cell->m_index);
- } else if (iface->role(0) == QAccessible::ColumnHeader){
+ } else if (iface->role() == QAccessible::ColumnHeader){
const QAccessibleTable2HeaderCell* cell = static_cast<const QAccessibleTable2HeaderCell*>(iface);
return cell->index + (verticalHeader() ? 1 : 0) + 1;
- } else if (iface->role(0) == QAccessible::RowHeader){
+ } else if (iface->role() == QAccessible::RowHeader){
const QAccessibleTable2HeaderCell* cell = static_cast<const QAccessibleTable2HeaderCell*>(iface);
return (cell->index+1) * (view->model()->rowCount()+1) + 1;
- } else if (iface->role(0) == QAccessible::Pane) {
+ } else if (iface->role() == QAccessible::Pane) {
return 1; // corner button
} else {
qWarning() << "WARNING QAccessibleTable2::indexOfChild Fix my children..."
- << iface->role(0) << iface->text(QAccessible::Name, 0);
+ << iface->role() << iface->text(QAccessible::Name);
}
// FIXME: we are in denial of our children. this should stop.
return -1;
}
-QString QAccessibleTable2::text(Text t, int child) const
+QString QAccessibleTable2::text(Text t) const
{
- Q_ASSERT(child == 0);
if (t == QAccessible::Description)
return view->accessibleDescription();
return view->accessibleName();
}
-QRect QAccessibleTable2::rect(int child) const
+QRect QAccessibleTable2::rect() const
{
- Q_ASSERT(!child);
if (!view->isVisible())
return QRect();
QPoint pos = view->mapToGlobal(QPoint(0, 0));
@@ -469,27 +465,11 @@ int QAccessibleTable2::navigate(RelationFlag relation, int index, QAccessibleInt
return -1;
}
-QAccessible::Relation QAccessibleTable2::relationTo(int, const QAccessibleInterface *, int) const
+QAccessible::Relation QAccessibleTable2::relationTo(const QAccessibleInterface *) const
{
return QAccessible::Unrelated;
}
-#ifndef QT_NO_ACTION
-int QAccessibleTable2::userActionCount(int) const
-{
- return 0;
-}
-QString QAccessibleTable2::actionText(int, Text, int) const
-{
- return QString();
-}
-bool QAccessibleTable2::doAction(int, int, const QVariantList &)
-{
- return false;
-}
-#endif
-
-
// TREE VIEW
QModelIndex QAccessibleTree::indexFromLogical(int row, int column) const
@@ -541,7 +521,7 @@ int QAccessibleTree::rowCount() const
int QAccessibleTree::indexOfChild(const QAccessibleInterface *iface) const
{
- if (iface->role(0) == QAccessible::TreeItem) {
+ if (iface->role() == QAccessible::TreeItem) {
const QAccessibleTable2Cell* cell = static_cast<const QAccessibleTable2Cell*>(iface);
const QTreeView *treeView = qobject_cast<const QTreeView*>(view);
Q_ASSERT(treeView);
@@ -552,13 +532,13 @@ int QAccessibleTree::indexOfChild(const QAccessibleInterface *iface) const
//qDebug() << "QAccessibleTree::indexOfChild r " << row << " c " << column << "index " << index;
Q_ASSERT(index > treeView->model()->columnCount());
return index;
- } else if (iface->role(0) == QAccessible::ColumnHeader){
+ } else if (iface->role() == QAccessible::ColumnHeader){
const QAccessibleTable2HeaderCell* cell = static_cast<const QAccessibleTable2HeaderCell*>(iface);
//qDebug() << "QAccessibleTree::indexOfChild header " << cell->index << "is: " << cell->index + 1;
return cell->index + 1;
} else {
qWarning() << "WARNING QAccessibleTable2::indexOfChild invalid child"
- << iface->role(0) << iface->text(QAccessible::Name, 0);
+ << iface->role() << iface->text(QAccessible::Name);
}
// FIXME: add scrollbars and don't just ignore them
return -1;
@@ -596,7 +576,7 @@ int QAccessibleTree::navigate(RelationFlag relation, int index, QAccessibleInter
return QAccessibleTable2::navigate(relation, index, iface);
}
-QAccessible::Relation QAccessibleTree::relationTo(int, const QAccessibleInterface *, int) const
+QAccessible::Relation QAccessibleTree::relationTo(const QAccessibleInterface *) const
{
return QAccessible::Unrelated;
}
@@ -695,7 +675,7 @@ int QAccessibleTable2Cell::columnIndex() const
int QAccessibleTable2Cell::rowIndex() const
{
- if (role(0) == QAccessible::TreeItem) {
+ if (role() == QAccessible::TreeItem) {
const QTreeView *treeView = qobject_cast<const QTreeView*>(view);
Q_ASSERT(treeView);
int row = treeView->d_func()->viewIndex(m_index);
@@ -723,20 +703,18 @@ QAccessibleTable2Interface* QAccessibleTable2Cell::table() const
return QAccessible::queryAccessibleInterface(view)->table2Interface();
}
-QAccessible::Role QAccessibleTable2Cell::role(int child) const
+QAccessible::Role QAccessibleTable2Cell::role() const
{
- Q_ASSERT(child == 0);
return m_role;
}
-QAccessible::State QAccessibleTable2Cell::state(int child) const
+QAccessible::State QAccessibleTable2Cell::state() const
{
- Q_ASSERT(child == 0);
State st = Normal;
QRect globalRect = view->rect();
globalRect.translate(view->mapToGlobal(QPoint(0,0)));
- if (!globalRect.intersects(rect(0)))
+ if (!globalRect.intersects(rect()))
st |= Invisible;
if (view->selectionModel()->isSelected(m_index))
@@ -768,10 +746,8 @@ bool QAccessibleTable2Cell::isExpandable() const
return view->model()->hasChildren(m_index);
}
-QRect QAccessibleTable2Cell::rect(int child) const
+QRect QAccessibleTable2Cell::rect() const
{
- Q_ASSERT(child == 0);
-
QRect r;
r = view->visualRect(m_index);
@@ -781,9 +757,8 @@ QRect QAccessibleTable2Cell::rect(int child) const
return r;
}
-QString QAccessibleTable2Cell::text(Text t, int child) const
+QString QAccessibleTable2Cell::text(Text t) const
{
- Q_ASSERT(child == 0);
QAbstractItemModel *model = view->model();
QString value;
switch (t) {
@@ -802,9 +777,8 @@ QString QAccessibleTable2Cell::text(Text t, int child) const
return value;
}
-void QAccessibleTable2Cell::setText(Text /*t*/, int child, const QString &text)
+void QAccessibleTable2Cell::setText(Text /*t*/, const QString &text)
{
- Q_ASSERT(child == 0);
if (!(m_index.flags() & Qt::ItemIsEditable))
return;
view->model()->setData(m_index, text);
@@ -888,12 +862,10 @@ int QAccessibleTable2Cell::navigate(RelationFlag relation, int index, QAccessibl
return -1;
}
-QAccessible::Relation QAccessibleTable2Cell::relationTo(int child, const QAccessibleInterface *other, int otherChild) const
+QAccessible::Relation QAccessibleTable2Cell::relationTo(const QAccessibleInterface *other) const
{
- Q_ASSERT(child == 0);
- Q_ASSERT(otherChild == 0);
// we only check for parent-child relationships in trees
- if (m_role == QAccessible::TreeItem && other->role(0) == QAccessible::TreeItem) {
+ if (m_role == QAccessible::TreeItem && other->role() == QAccessible::TreeItem) {
QModelIndex otherIndex = static_cast<const QAccessibleTable2Cell*>(other)->m_index;
// is the other our parent?
if (otherIndex.parent() == m_index)
@@ -905,46 +877,26 @@ QAccessible::Relation QAccessibleTable2Cell::relationTo(int child, const QAccess
return QAccessible::Unrelated;
}
-#ifndef QT_NO_ACTION
-int QAccessibleTable2Cell::userActionCount(int) const
-{
- return 0;
-}
-
-QString QAccessibleTable2Cell::actionText(int, Text, int) const
-{
- return QString();
-}
-
-bool QAccessibleTable2Cell::doAction(int, int, const QVariantList &)
-{
- return false;
-}
-
QAccessibleTable2HeaderCell::QAccessibleTable2HeaderCell(QAbstractItemView *view_, int index_, Qt::Orientation orientation_)
: view(view_), index(index_), orientation(orientation_)
{
Q_ASSERT(index_ >= 0);
}
-QAccessible::Role QAccessibleTable2HeaderCell::role(int child) const
+QAccessible::Role QAccessibleTable2HeaderCell::role() const
{
- Q_ASSERT(child == 0);
if (orientation == Qt::Horizontal)
return QAccessible::ColumnHeader;
return QAccessible::RowHeader;
}
-QAccessible::State QAccessibleTable2HeaderCell::state(int child) const
+QAccessible::State QAccessibleTable2HeaderCell::state() const
{
- Q_ASSERT(child == 0);
return QAccessible::Normal;
}
-QRect QAccessibleTable2HeaderCell::rect(int child) const
+QRect QAccessibleTable2HeaderCell::rect() const
{
- Q_ASSERT(child == 0);
-
QHeaderView *header = 0;
if (false) {
#ifndef QT_NO_TABLEVIEW
@@ -968,9 +920,8 @@ QRect QAccessibleTable2HeaderCell::rect(int child) const
: QRect(zero.x(), zero.y() + sectionPos, header->width(), sectionSize);
}
-QString QAccessibleTable2HeaderCell::text(Text t, int child) const
+QString QAccessibleTable2HeaderCell::text(Text t) const
{
- Q_ASSERT(child == 0);
QAbstractItemModel *model = view->model();
QString value;
switch (t) {
@@ -989,7 +940,7 @@ QString QAccessibleTable2HeaderCell::text(Text t, int child) const
return value;
}
-void QAccessibleTable2HeaderCell::setText(Text, int, const QString &)
+void QAccessibleTable2HeaderCell::setText(Text, const QString &)
{
return;
}
@@ -1031,27 +982,6 @@ QAccessible::Relation QAccessibleTable2HeaderCell::relationTo(int, const QAccess
return QAccessible::Unrelated;
}
-#ifndef QT_NO_ACTION
-int QAccessibleTable2HeaderCell::userActionCount(int) const
-{
- return 0;
-}
-
-QString QAccessibleTable2HeaderCell::actionText(int, Text, int) const
-{
- return QString();
-}
-
-bool QAccessibleTable2HeaderCell::doAction(int, int, const QVariantList &)
-{
- return false;
-}
-#endif
-
-
-
-#endif
-
#endif // QT_NO_ITEMVIEWS
QT_END_NAMESPACE
diff --git a/src/plugins/accessible/widgets/itemviews.h b/src/plugins/accessible/widgets/itemviews.h
index 41d2b6c4ef..deee866c34 100644
--- a/src/plugins/accessible/widgets/itemviews.h
+++ b/src/plugins/accessible/widgets/itemviews.h
@@ -67,10 +67,10 @@ public:
virtual ~QAccessibleTable2();
QObject *object() const { return view; }
- Role role(int child) const;
- State state(int child) const;
- QString text(Text t, int child) const;
- QRect rect(int child) const;
+ Role role() const;
+ State state() const;
+ QString text(Text t) const;
+ QRect rect() const;
int childAt(int x, int y) const;
int childCount() const;
@@ -79,14 +79,9 @@ public:
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int index) const;
int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const;
- Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
-#ifndef QT_NO_ACTION
- int userActionCount(int child) const;
- QString actionText(int action, Text t, int child) const;
- bool doAction(int action, int child, const QVariantList &params);
-#endif
- QVariant invokeMethodEx(Method, int, const QVariantList &) { return QVariant(); }
+ QVariant invokeMethod(Method, const QVariantList &) { return QVariant(); }
// table2 interface
virtual QAccessibleTable2CellInterface *cellAt(int row, int column) const;
@@ -165,7 +160,7 @@ public:
int rowCount() const;
int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const;
- Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
// table2 interface
QAccessibleTable2CellInterface *cellAt(int row, int column) const;
@@ -183,31 +178,25 @@ public:
QAccessibleTable2Cell(QAbstractItemView *view, const QModelIndex &m_index, QAccessible::Role role);
QObject *object() const { return 0; }
- Role role(int child) const;
- State state(int child) const;
- QRect rect(int child) const;
+ Role role() const;
+ State state() const;
+ QRect rect() const;
bool isValid() const;
int childAt(int, int) const { return 0; }
int childCount() const { return 0; }
int indexOfChild(const QAccessibleInterface *) const { return -1; }
- QString text(Text t, int child) const;
- void setText(Text t, int child, const QString &text);
+ QString text(Text t) const;
+ void setText(Text t, const QString &text);
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int) const;
int navigate(RelationFlag relation, int m_index, QAccessibleInterface **iface) const;
- Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
bool isExpandable() const;
-#ifndef QT_NO_ACTION
- int userActionCount(int child) const;
- QString actionText(int action, Text t, int child) const;
- bool doAction(int action, int child, const QVariantList &params);
-#endif
-
// cell interface
virtual int columnExtent() const;
virtual QList<QAccessibleInterface*> columnHeaderCells() const;
@@ -238,29 +227,23 @@ public:
QAccessibleTable2HeaderCell(QAbstractItemView *view, int index, Qt::Orientation orientation);
QObject *object() const { return 0; }
- Role role(int child) const;
- State state(int child) const;
- QRect rect(int child) const;
+ Role role() const;
+ State state() const;
+ QRect rect() const;
bool isValid() const;
int childAt(int, int) const { return 0; }
int childCount() const { return 0; }
int indexOfChild(const QAccessibleInterface *) const { return -1; }
- QString text(Text t, int child) const;
- void setText(Text t, int child, const QString &text);
+ QString text(Text t) const;
+ void setText(Text t, const QString &text);
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int index) const;
int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const;
Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
-#ifndef QT_NO_ACTION
- int userActionCount(int child) const;
- QString actionText(int action, Text t, int child) const;
- bool doAction(int action, int child, const QVariantList &params);
-#endif
-
private:
QAbstractItemView *view;
int index;
@@ -281,17 +264,17 @@ public:
{}
QObject *object() const { return 0; }
- Role role(int child) const { Q_ASSERT(child == 0); return QAccessible::Pane; }
- State state(int child) const { Q_ASSERT(child == 0); return QAccessible::Normal; }
- QRect rect(int child) const { Q_ASSERT(child == 0); return QRect(); }
+ Role role() const { return QAccessible::Pane; }
+ State state() const { return QAccessible::Normal; }
+ QRect rect() const { return QRect(); }
bool isValid() const { return true; }
int childAt(int, int) const { return 0; }
int childCount() const { return 0; }
int indexOfChild(const QAccessibleInterface *) const { return -1; }
- QString text(Text, int) const { return QString(); }
- void setText(Text, int, const QString &) {}
+ QString text(Text) const { return QString(); }
+ void setText(Text, const QString &) {}
QAccessibleInterface *parent() const {
return QAccessible::queryAccessibleInterface(view);
@@ -312,11 +295,6 @@ public:
return QAccessible::Unrelated;
}
-#ifndef QT_NO_ACTION
- int userActionCount(int) const { return 0; }
- QString actionText(int, Text, int) const { return QString(); }
- bool doAction(int, int, const QVariantList &) { return false; }
-#endif
private:
QAbstractItemView *view;
};
diff --git a/src/plugins/accessible/widgets/main.cpp b/src/plugins/accessible/widgets/main.cpp
index fb6bd1e95c..d7c8459c22 100644
--- a/src/plugins/accessible/widgets/main.cpp
+++ b/src/plugins/accessible/widgets/main.cpp
@@ -255,7 +255,6 @@ QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObjec
iface = new QAccessibleMenu(widget);
#endif
#ifndef QT_NO_ITEMVIEWS
-#ifdef Q_OS_UNIX
} else if (classname == QLatin1String("QAbstractItemView")) {
if (qobject_cast<const QTreeView*>(widget)) {
iface = new QAccessibleTree(widget);
@@ -270,16 +269,6 @@ QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObjec
} else {
iface = new QAccessibleTable2(widget->parentWidget());
}
-#else
- } else if (classname == QLatin1String("QHeaderView")) {
- iface = new QAccessibleHeader(widget);
- } else if (classname == QLatin1String("QAbstractItemView")) {
- iface = new QAccessibleItemView(widget);
- } else if (classname == QLatin1String("QWidget")
- && widget->objectName() == QLatin1String("qt_scrollarea_viewport")
- && qobject_cast<QAbstractItemView*>(widget->parentWidget())) {
- iface = new QAccessibleItemView(widget);
-#endif // Q_OS_UNIX
#endif // QT_NO_ITEMVIEWS
#ifndef QT_NO_TABBAR
} else if (classname == QLatin1String("QTabBar")) {
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.cpp b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
index 8e0f2a0c1a..13a5fe424d 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
@@ -71,12 +71,6 @@ int QAccessibleMenu::childCount() const
return menu()->actions().count();
}
-QRect QAccessibleMenu::rect(int child) const
-{
- Q_ASSERT(child == 0);
- return QAccessibleWidget::rect(child);
-}
-
int QAccessibleMenu::childAt(int x, int y) const
{
QAction *act = menu()->actionAt(menu()->mapFromGlobal(QPoint(x,y)));
@@ -85,11 +79,10 @@ int QAccessibleMenu::childAt(int x, int y) const
return menu()->actions().indexOf(act) + 1;
}
-QString QAccessibleMenu::text(Text t, int child) const
+QString QAccessibleMenu::text(Text t) const
{
- Q_ASSERT(child == 0);
- QString tx = QAccessibleWidget::text(t, child);
- if (tx.size())
+ QString tx = QAccessibleWidget::text(t);
+ if (!tx.isEmpty())
return tx;
if (t == Name)
@@ -97,19 +90,11 @@ QString QAccessibleMenu::text(Text t, int child) const
return tx;
}
-QAccessible::Role QAccessibleMenu::role(int child) const
+QAccessible::Role QAccessibleMenu::role() const
{
- Q_ASSERT(child == 0);
return PopupMenu;
}
-QAccessible::State QAccessibleMenu::state(int child) const
-{
- Q_ASSERT(child == 0);
- State s = QAccessibleWidget::state(child);
- return s;
-}
-
QAccessibleInterface *QAccessibleMenu::child(int index) const
{
if (index < childCount())
@@ -144,7 +129,7 @@ int QAccessibleMenu::navigate(RelationFlag relation, int entry, QAccessibleInter
int QAccessibleMenu::indexOfChild( const QAccessibleInterface *child ) const
{
int index = -1;
- Role r = child->role(0);
+ Role r = child->role();
if ((r == MenuItem || r == Separator) && menu()) {
index = menu()->actions().indexOf(qobject_cast<QAction*>(child->object()));
if (index != -1)
@@ -155,7 +140,7 @@ int QAccessibleMenu::indexOfChild( const QAccessibleInterface *child ) const
#ifndef QT_NO_MENUBAR
QAccessibleMenuBar::QAccessibleMenuBar(QWidget *w)
-: QAccessibleWidget(w)
+ : QAccessibleWidget(w, MenuBar)
{
Q_ASSERT(menuBar());
}
@@ -170,12 +155,6 @@ int QAccessibleMenuBar::childCount() const
return menuBar()->actions().count();
}
-QRect QAccessibleMenuBar::rect(int child) const
-{
- Q_ASSERT(child == 0);
- return QAccessibleWidget::rect(child);
-}
-
QAccessibleInterface *QAccessibleMenuBar::child(int index) const
{
if (index < childCount())
@@ -195,7 +174,7 @@ int QAccessibleMenuBar::navigate(RelationFlag relation, int entry, QAccessibleIn
int QAccessibleMenuBar::indexOfChild(const QAccessibleInterface *child) const
{
int index = -1;
- Role r = child->role(0);
+ Role r = child->role();
if ((r == MenuItem || r == Separator) && menuBar()) {
index = menuBar()->actions().indexOf(qobject_cast<QAction*>(child->object()));
if (index != -1)
@@ -204,25 +183,6 @@ int QAccessibleMenuBar::indexOfChild(const QAccessibleInterface *child) const
return index;
}
-QString QAccessibleMenuBar::text(Text t, int child) const
-{
- Q_ASSERT(child == 0);
- return QAccessibleWidget::text(t, child);
-}
-
-QAccessible::Role QAccessibleMenuBar::role(int child) const
-{
- Q_ASSERT(child == 0);
- return MenuBar;
-}
-
-QAccessible::State QAccessibleMenuBar::state(int child) const
-{
- Q_ASSERT(child == 0);
- State s = QAccessibleWidget::state(child);
- return s;
-}
-
#endif // QT_NO_MENUBAR
QAccessibleMenuItem::QAccessibleMenuItem(QWidget *owner, QAction *action) : m_action(action), m_owner(owner)
@@ -235,8 +195,12 @@ QAccessibleMenuItem::~QAccessibleMenuItem()
int QAccessibleMenuItem::childAt(int x, int y ) const
{
for (int i = childCount(); i >= 0; --i) {
- if (rect(i).contains(x,y))
+ QAccessibleInterface *childInterface = child(i);
+ if (childInterface->rect().contains(x,y)) {
+ delete childInterface;
return i;
+ }
+ delete childInterface;
}
return -1;
}
@@ -249,7 +213,7 @@ int QAccessibleMenuItem::childCount() const
int QAccessibleMenuItem::indexOfChild(const QAccessibleInterface * child) const
{
Q_ASSERT(child == 0);
- if (child->role(0) == PopupMenu && child->object() == m_action->menu())
+ if (child->role() == PopupMenu && child->object() == m_action->menu())
return 1;
return -1;
@@ -318,9 +282,8 @@ QObject *QAccessibleMenuItem::object() const
return m_action;
}
-QRect QAccessibleMenuItem::rect(int child) const
+QRect QAccessibleMenuItem::rect() const
{
- Q_ASSERT(child == 0);
QRect rect;
QWidget *own = owner();
#ifndef QT_NO_MENUBAR
@@ -338,31 +301,27 @@ QRect QAccessibleMenuItem::rect(int child) const
return rect;
}
-QAccessible::Relation QAccessibleMenuItem::relationTo ( int child, const QAccessibleInterface * other, int otherChild ) const
+QAccessible::Relation QAccessibleMenuItem::relationTo(const QAccessibleInterface *other) const
{
- Q_ASSERT(child == 0);
if (other->object() == owner()) {
return Child;
}
- Q_UNUSED(child)
Q_UNUSED(other)
- Q_UNUSED(otherChild)
// ###
return Unrelated;
}
-QAccessible::Role QAccessibleMenuItem::role(int) const
+QAccessible::Role QAccessibleMenuItem::role() const
{
return m_action->isSeparator() ? Separator : MenuItem;
}
-void QAccessibleMenuItem::setText ( Text /*t*/, int /*child*/, const QString & /*text */)
+void QAccessibleMenuItem::setText ( Text /*t*/, const QString & /*text */)
{
}
-QAccessible::State QAccessibleMenuItem::state(int child) const
+QAccessible::State QAccessibleMenuItem::state() const
{
- Q_ASSERT(child == 0);
QAccessible::State s = Normal;
QWidget *own = owner();
@@ -389,9 +348,8 @@ QAccessible::State QAccessibleMenuItem::state(int child) const
return s;
}
-QString QAccessibleMenuItem::text ( Text t, int child ) const
+QString QAccessibleMenuItem::text(Text t) const
{
- Q_ASSERT(child == 0);
QString str;
switch (t) {
case Name:
@@ -416,22 +374,6 @@ QString QAccessibleMenuItem::text ( Text t, int child ) const
return str;
}
-
-QString QAccessibleMenuItem::actionText(int action, Text text, int child) const
-{
- Q_ASSERT(child == 0);
- if (!m_action || m_action->isSeparator())
- return QString();
-
- if (text == Name && ((action == Press) || (action == DefaultAction))) {
- if (m_action->menu()) {
- return QMenu::tr("Open");
- }
- return QMenu::tr("Execute");
- }
- return QString();
-}
-
QStringList QAccessibleMenuItem::actionNames() const
{
QStringList actions;
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.h b/src/plugins/accessible/widgets/qaccessiblemenu.h
index 2ac8b37b6e..ae5c4ba8cd 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.h
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.h
@@ -61,10 +61,8 @@ public:
int childCount() const;
int childAt(int x, int y) const;
- QRect rect(int child) const;
- QString text(Text t, int child) const;
- Role role(int child) const;
- State state(int child) const;
+ QString text(Text t) const;
+ Role role() const;
QAccessibleInterface *child(int index) const;
QAccessibleInterface *parent() const;
int navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const;
@@ -83,12 +81,8 @@ public:
QAccessibleInterface *child(int index) const;
int childCount() const;
- QRect rect(int child) const;
- QString text(Text t, int child) const;
- Role role(int child) const;
- State state(int child) const;
int navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const;
- int indexOfChild( const QAccessibleInterface *child ) const;
+ int indexOfChild(const QAccessibleInterface *child) const;
protected:
QMenuBar *menuBar() const;
@@ -103,22 +97,21 @@ public:
explicit QAccessibleMenuItem(QWidget *owner, QAction *w);
virtual ~QAccessibleMenuItem();
- virtual QString actionText ( int action, Text t, int child ) const;
- virtual int childAt ( int x, int y ) const;
- virtual int childCount () const;
- virtual int indexOfChild ( const QAccessibleInterface * child ) const;
- virtual bool isValid () const;
+ virtual int childAt(int x, int y) const;
+ virtual int childCount() const;
+ virtual int indexOfChild(const QAccessibleInterface * child) const;
+ virtual bool isValid() const;
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int index) const;
- virtual int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const;
- virtual QObject * object () const;
- virtual QRect rect ( int child ) const;
- virtual Relation relationTo ( int child, const QAccessibleInterface * other, int otherChild ) const;
- virtual Role role ( int child ) const;
- virtual void setText ( Text t, int child, const QString & text );
- virtual State state ( int child ) const;
- virtual QString text ( Text t, int child ) const;
+ virtual int navigate(RelationFlag relation, int entry, QAccessibleInterface ** target) const;
+ virtual QObject * object() const;
+ virtual QRect rect() const;
+ virtual Relation relationTo(const QAccessibleInterface *other) const;
+ virtual Role role() const;
+ virtual void setText(Text t, const QString & text );
+ virtual State state() const;
+ virtual QString text(Text t) const;
// QAccessibleActionInterface
QStringList actionNames() const;
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
index 31a3aa7032..d2d56065d0 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
@@ -262,18 +262,18 @@ QTextEdit *QAccessibleTextEdit::textEdit() const
return static_cast<QTextEdit *>(widget());
}
-QString QAccessibleTextEdit::text(Text t, int) const
+QString QAccessibleTextEdit::text(Text t) const
{
if (t == Value)
return textEdit()->toPlainText();
- return QAccessibleWidget::text(t, 0);
+ return QAccessibleWidget::text(t);
}
-void QAccessibleTextEdit::setText(Text t, int, const QString &text)
+void QAccessibleTextEdit::setText(Text t, const QString &text)
{
if (t != Value) {
- QAccessibleWidget::setText(t, 0, text);
+ QAccessibleWidget::setText(t, text);
return;
}
if (textEdit()->isReadOnly())
@@ -282,7 +282,7 @@ void QAccessibleTextEdit::setText(Text t, int, const QString &text)
textEdit()->setText(text);
}
-QVariant QAccessibleTextEdit::invokeMethod(QAccessible::Method method, int,
+QVariant QAccessibleTextEdit::invokeMethod(QAccessible::Method method,
const QVariantList &params)
{
switch (method) {
@@ -290,7 +290,7 @@ QVariant QAccessibleTextEdit::invokeMethod(QAccessible::Method method, int,
QSet<QAccessible::Method> set;
set << ListSupportedMethods << SetCursorPosition << GetCursorPosition;
return QVariant::fromValue(set | qvariant_cast<QSet<QAccessible::Method> >(
- QAccessibleWidget::invokeMethod(method, 0, params)));
+ QAccessibleWidget::invokeMethod(method, params)));
}
case SetCursorPosition:
setCursorPosition(params.value(0).toInt());
@@ -298,7 +298,7 @@ QVariant QAccessibleTextEdit::invokeMethod(QAccessible::Method method, int,
case GetCursorPosition:
return textEdit()->textCursor().position();
default:
- return QAccessibleWidget::invokeMethod(method, 0, params);
+ return QAccessibleWidget::invokeMethod(method, params);
}
}
@@ -775,72 +775,6 @@ QAccessibleToolBox::QAccessibleToolBox(QWidget *widget)
Q_ASSERT(qobject_cast<QToolBox *>(widget));
}
-QString QAccessibleToolBox::text(Text textType, int child) const
-{
- if (textType != Value || child <= 0 || child > toolBox()->count())
- return QAccessibleWidget::text(textType, child);
- return toolBox()->itemText(child - 1);
-}
-
-void QAccessibleToolBox::setText(Text textType, int child, const QString &text)
-{
- if (textType != Value || child <= 0 || child > toolBox()->count()) {
- QAccessibleWidget::setText(textType, child, text);
- return;
- }
- toolBox()->setItemText(child - 1, text);
-}
-
-QAccessible::State QAccessibleToolBox::state(int child) const
-{
- QWidget *childWidget = toolBox()->widget(child - 1);
- if (!childWidget)
- return QAccessibleWidget::state(child);
- QAccessible::State childState = QAccessible::Normal;
- if (toolBox()->currentWidget() == childWidget)
- childState |= QAccessible::Expanded;
- else
- childState |= QAccessible::Collapsed;
- return childState;
-}
-
-QVariant QAccessibleToolBox::invokeMethod(QAccessible::Method, int, const QVariantList &)
-{
- return QVariant();
-}
-
-int QAccessibleToolBox::childCount() const
-{
- return toolBox()->count();
-}
-
-int QAccessibleToolBox::indexOfChild(const QAccessibleInterface *child) const
-{
- if (!child)
- return -1;
- QWidget *childWidget = qobject_cast<QWidget *>(child->object());
- if (!childWidget)
- return -1;
- int index = toolBox()->indexOf(childWidget);
- if (index != -1)
- ++index;
- return index;
-}
-
-int QAccessibleToolBox::navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const
-{
- *target = 0;
- if (entry <= 0 || entry > toolBox()->count())
- return QAccessibleWidget::navigate(relation, entry, target);
- int index = -1;
- if (relation == QAccessible::Up)
- index = entry - 2;
- else if (relation == QAccessible::Down)
- index = entry;
- *target = QAccessible::queryAccessibleInterface(toolBox()->widget(index));
- return *target ? 0: -1;
-}
-
QToolBox * QAccessibleToolBox::toolBox() const
{
return static_cast<QToolBox *>(object());
@@ -855,25 +789,6 @@ QAccessibleMdiArea::QAccessibleMdiArea(QWidget *widget)
Q_ASSERT(qobject_cast<QMdiArea *>(widget));
}
-QAccessible::State QAccessibleMdiArea::state(int child) const
-{
- if (child < 0)
- return QAccessibleWidget::state(child);
- if (child == 0)
- return QAccessible::Normal;
- QList<QMdiSubWindow *> subWindows = mdiArea()->subWindowList();
- if (subWindows.isEmpty() || child > subWindows.count())
- return QAccessibleWidget::state(child);
- if (subWindows.at(child - 1) == mdiArea()->activeSubWindow())
- return QAccessible::Focused;
- return QAccessible::Normal;
-}
-
-QVariant QAccessibleMdiArea::invokeMethod(QAccessible::Method, int, const QVariantList &)
-{
- return QVariant();
-}
-
int QAccessibleMdiArea::childCount() const
{
return mdiArea()->subWindowList().count();
@@ -927,28 +842,26 @@ QAccessibleMdiSubWindow::QAccessibleMdiSubWindow(QWidget *widget)
Q_ASSERT(qobject_cast<QMdiSubWindow *>(widget));
}
-QString QAccessibleMdiSubWindow::text(Text textType, int child) const
+QString QAccessibleMdiSubWindow::text(Text textType) const
{
- if (textType == QAccessible::Name && (child == 0 || child == 1)) {
+ if (textType == QAccessible::Name) {
QString title = mdiSubWindow()->windowTitle();
title.replace(QLatin1String("[*]"), QLatin1String(""));
return title;
}
- return QAccessibleWidget::text(textType, child);
+ return QAccessibleWidget::text(textType);
}
-void QAccessibleMdiSubWindow::setText(Text textType, int child, const QString &text)
+void QAccessibleMdiSubWindow::setText(Text textType, const QString &text)
{
- if (textType == QAccessible::Name && (child == 0 || child == 1))
+ if (textType == QAccessible::Name)
mdiSubWindow()->setWindowTitle(text);
else
- QAccessibleWidget::setText(textType, child, text);
+ QAccessibleWidget::setText(textType, text);
}
-QAccessible::State QAccessibleMdiSubWindow::state(int child) const
+QAccessible::State QAccessibleMdiSubWindow::state() const
{
- if (child != 0 || !mdiSubWindow()->parent())
- return QAccessibleWidget::state(child);
QAccessible::State state = QAccessible::Normal | QAccessible::Focusable;
if (!mdiSubWindow()->isMaximized())
state |= (QAccessible::Movable | QAccessible::Sizeable);
@@ -964,11 +877,6 @@ QAccessible::State QAccessibleMdiSubWindow::state(int child) const
return state;
}
-QVariant QAccessibleMdiSubWindow::invokeMethod(QAccessible::Method, int, const QVariantList &)
-{
- return QVariant();
-}
-
int QAccessibleMdiSubWindow::childCount() const
{
if (mdiSubWindow()->widget())
@@ -1026,23 +934,14 @@ int QAccessibleMdiSubWindow::navigate(RelationFlag relation, int entry, QAccessi
return *target ? 0: -1;
}
-QRect QAccessibleMdiSubWindow::rect(int child) const
+QRect QAccessibleMdiSubWindow::rect() const
{
if (mdiSubWindow()->isHidden())
return QRect();
if (!mdiSubWindow()->parent())
- return QAccessibleWidget::rect(child);
+ return QAccessibleWidget::rect();
const QPoint pos = mdiSubWindow()->mapToGlobal(QPoint(0, 0));
- if (child == 0)
- return QRect(pos, mdiSubWindow()->size());
- if (child == 1 && mdiSubWindow()->widget()) {
- if (mdiSubWindow()->widget()->isHidden())
- return QRect();
- const QRect contentsRect = mdiSubWindow()->contentsRect();
- return QRect(pos.x() + contentsRect.x(), pos.y() + contentsRect.y(),
- contentsRect.width(), contentsRect.height());
- }
- return QRect();
+ return QRect(pos, mdiSubWindow()->size());
}
int QAccessibleMdiSubWindow::childAt(int x, int y) const
@@ -1051,10 +950,12 @@ int QAccessibleMdiSubWindow::childAt(int x, int y) const
return -1;
if (!mdiSubWindow()->parent())
return QAccessibleWidget::childAt(x, y);
- const QRect globalGeometry = rect(0);
+ const QRect globalGeometry = rect();
if (!globalGeometry.isValid())
return -1;
- const QRect globalChildGeometry = rect(1);
+ QAccessibleInterface *childIface = child(0);
+ const QRect globalChildGeometry = childIface->rect();
+ delete childIface;
if (globalChildGeometry.isValid() && globalChildGeometry.contains(QPoint(x, y)))
return 1;
if (globalGeometry.contains(QPoint(x, y)))
@@ -1076,25 +977,6 @@ QAccessibleWorkspace::QAccessibleWorkspace(QWidget *widget)
Q_ASSERT(qobject_cast<QWorkspace *>(widget));
}
-QAccessible::State QAccessibleWorkspace::state(int child) const
-{
- if (child < 0)
- return QAccessibleWidget::state(child);
- if (child == 0)
- return QAccessible::Normal;
- QWidgetList subWindows = workspace()->windowList();
- if (subWindows.isEmpty() || child > subWindows.count())
- return QAccessibleWidget::state(child);
- if (subWindows.at(child - 1) == workspace()->activeWindow())
- return QAccessible::Focused;
- return QAccessible::Normal;
-}
-
-QVariant QAccessibleWorkspace::invokeMethod(QAccessible::Method, int, const QVariantList &)
-{
- return QVariant();
-}
-
int QAccessibleWorkspace::childCount() const
{
return workspace()->windowList().count();
@@ -1163,10 +1045,8 @@ QAccessibleTextBrowser::QAccessibleTextBrowser(QWidget *widget)
Q_ASSERT(qobject_cast<QTextBrowser *>(widget));
}
-QAccessible::Role QAccessibleTextBrowser::role(int child) const
+QAccessible::Role QAccessibleTextBrowser::role() const
{
- if (child != 0)
- return QAccessibleTextEdit::role(child);
return QAccessible::StaticText;
}
#endif // QT_NO_TEXTBROWSER
@@ -1275,15 +1155,6 @@ QAccessibleInterface *QAccessibleDockWidget::child(int index) const
return 0;
}
-int QAccessibleDockWidget::childAt(int x, int y) const
-{
- for (int i = childCount(); i >= 0; --i) {
- if (rect(i).contains(x,y))
- return i;
- }
- return -1;
-}
-
int QAccessibleDockWidget::childCount() const
{
return dockWidget()->widget() ? 2 : 1;
@@ -1292,7 +1163,7 @@ int QAccessibleDockWidget::childCount() const
int QAccessibleDockWidget::indexOfChild(const QAccessibleInterface *child) const
{
if (child) {
- if (child->role(0) == TitleBar) {
+ if (child->role() == TitleBar) {
return 1;
} else {
return 2; //###
@@ -1301,60 +1172,25 @@ int QAccessibleDockWidget::indexOfChild(const QAccessibleInterface *child) const
return -1;
}
-QAccessible::Role QAccessibleDockWidget::role(int child) const
-{
- switch (child) {
- case 0:
- return Window;
- case 1:
- return TitleBar;
- case 2:
- //###
- break;
- default:
- break;
- }
- return NoRole;
-}
-
-QAccessible::State QAccessibleDockWidget::state(int child) const
+QAccessible::Role QAccessibleDockWidget::role() const
{
- //### mark tabified widgets as invisible
- return QAccessibleWidget::state(child);
+ return Window;
}
-QRect QAccessibleDockWidget::rect(int child) const
+QRect QAccessibleDockWidget::rect() const
{
QRect rect;
- bool mapToGlobal = true;
- if (child == 0) {
- if (dockWidget()->isFloating()) {
- rect = dockWidget()->frameGeometry();
- mapToGlobal = false;
- } else {
- rect = dockWidget()->rect();
- }
- }else if (child == 1) {
- QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());
- rect = layout->titleArea();
- }else if (child == 2) {
- if (dockWidget()->widget())
- rect = dockWidget()->widget()->geometry();
- }
- if (rect.isNull())
- return rect;
- if (mapToGlobal)
+ if (dockWidget()->isFloating()) {
+ rect = dockWidget()->frameGeometry();
+ } else {
+ rect = dockWidget()->rect();
rect.moveTopLeft(dockWidget()->mapToGlobal(rect.topLeft()));
+ }
return rect;
}
-QVariant QAccessibleDockWidget::invokeMethod(QAccessible::Method, int, const QVariantList &)
-{
- return QVariant();
-}
-
QDockWidget *QAccessibleDockWidget::dockWidget() const
{
return static_cast<QDockWidget *>(object());
@@ -1426,7 +1262,7 @@ int QAccessibleTitleBar::navigate(RelationFlag relation, int entry, QAccessibleI
return -1;
}
-QAccessible::Relation QAccessibleTitleBar::relationTo(int /*child*/, const QAccessibleInterface * /*other*/, int /*otherChild*/) const
+QAccessible::Relation QAccessibleTitleBar::relationTo(const QAccessibleInterface * /*otherChild*/) const
{
return Unrelated; //###
}
@@ -1448,72 +1284,49 @@ int QAccessibleTitleBar::childCount() const
return count;
}
-QString QAccessibleTitleBar::text(Text t, int child) const
+QString QAccessibleTitleBar::text(Text t) const
{
- if (!child) {
- if (t == Name || t == Value) {
- return qt_accStripAmp(dockWidget()->windowTitle());
- }
+ if (t == Name || t == Value) {
+ return qt_accStripAmp(dockWidget()->windowTitle());
}
return QString();
}
-QAccessible::State QAccessibleTitleBar::state(int child) const
+QAccessible::State QAccessibleTitleBar::state() const
{
QAccessible::State state = Normal;
- if (child) {
- QDockWidgetLayout *layout = dockWidgetLayout();
- QAbstractButton *b = static_cast<QAbstractButton *>(layout->widgetForRole((QDockWidgetLayout::Role)child));
- if (b) {
- if (b->isDown())
- state |= Pressed;
- }
- } else {
- QDockWidget *w = dockWidget();
- if (w->testAttribute(Qt::WA_WState_Visible) == false)
- state |= Invisible;
- if (w->focusPolicy() != Qt::NoFocus && w->isActiveWindow())
- state |= Focusable;
- if (w->hasFocus())
- state |= Focused;
- if (!w->isEnabled())
- state |= Unavailable;
- }
+
+ QDockWidget *w = dockWidget();
+ if (w->testAttribute(Qt::WA_WState_Visible) == false)
+ state |= Invisible;
+ if (w->focusPolicy() != Qt::NoFocus && w->isActiveWindow())
+ state |= Focusable;
+ if (w->hasFocus())
+ state |= Focused;
+ if (!w->isEnabled())
+ state |= Unavailable;
return state;
}
-QRect QAccessibleTitleBar::rect(int child) const
+QRect QAccessibleTitleBar::rect() const
{
bool mapToGlobal = true;
QRect rect;
- if (child == 0) {
- if (dockWidget()->isFloating()) {
- rect = dockWidget()->frameGeometry();
- if (dockWidget()->widget()) {
- QPoint globalPos = dockWidget()->mapToGlobal(dockWidget()->widget()->rect().topLeft());
- globalPos.ry()--;
- rect.setBottom(globalPos.y());
- mapToGlobal = false;
- }
- } else {
- QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());
- rect = layout->titleArea();
- }
- }else if (child >= 1 && child <= childCount()) {
- QDockWidgetLayout *layout = dockWidgetLayout();
- int index = 1;
- for (int role = QDockWidgetLayout::CloseButton; role <= QDockWidgetLayout::FloatButton; ++role) {
- QWidget *w = layout->widgetForRole((QDockWidgetLayout::Role)role);
- if (!w || !w->isVisible())
- continue;
- if (index == child) {
- rect = w->geometry();
- break;
- }
- ++index;
+
+ if (dockWidget()->isFloating()) {
+ rect = dockWidget()->frameGeometry();
+ if (dockWidget()->widget()) {
+ QPoint globalPos = dockWidget()->mapToGlobal(dockWidget()->widget()->rect().topLeft());
+ globalPos.ry()--;
+ rect.setBottom(globalPos.y());
+ mapToGlobal = false;
}
+ } else {
+ QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());
+ rect = layout->titleArea();
}
+
if (rect.isNull())
return rect;
@@ -1525,8 +1338,12 @@ QRect QAccessibleTitleBar::rect(int child) const
int QAccessibleTitleBar::childAt(int x, int y) const
{
for (int i = childCount(); i >= 0; --i) {
- if (rect(i).contains(x,y))
+ QAccessibleInterface *childIface = child(i - 1);
+ if (childIface->rect().contains(x,y)) {
+ delete childIface;
return i;
+ }
+ delete childIface;
}
return -1;
}
@@ -1546,73 +1363,57 @@ QDockWidget *QAccessibleTitleBar::dockWidget() const
return m_dockWidget;
}
-QString QAccessibleTitleBar::actionText(int action, Text t, int child) const
-{
- QString str;
- if (child >= 1 && child <= childCount()) {
- if (t == Name) {
- switch (action) {
- case Press:
- case DefaultAction:
- if (child == QDockWidgetLayout::CloseButton) {
- str = QDockWidget::tr("Close");
- } else if (child == QDockWidgetLayout::FloatButton) {
- str = dockWidget()->isFloating() ? QDockWidget::tr("Dock")
- : QDockWidget::tr("Float");
- }
- break;
- default:
- break;
- }
- }
- }
- return str;
-}
-
-bool QAccessibleTitleBar::doAction(int action, int child, const QVariantList& /*params*/)
+//QString QAccessibleTitleBar::actionText(int action, Text t, int child) const
+//{
+// QString str;
+// if (child >= 1 && child <= childCount()) {
+// if (t == Name) {
+// switch (action) {
+// case Press:
+// case DefaultAction:
+// if (child == QDockWidgetLayout::CloseButton) {
+// str = QDockWidget::tr("Close");
+// } else if (child == QDockWidgetLayout::FloatButton) {
+// str = dockWidget()->isFloating() ? QDockWidget::tr("Dock")
+// : QDockWidget::tr("Float");
+// }
+// break;
+// default:
+// break;
+// }
+// }
+// }
+// return str;
+//}
+
+//bool QAccessibleTitleBar::doAction(int action, int child, const QVariantList& /*params*/)
+//{
+// if (!child || !dockWidget()->isEnabled())
+// return false;
+
+// switch (action) {
+// case DefaultAction:
+// case Press: {
+// QDockWidgetLayout *layout = dockWidgetLayout();
+// QAbstractButton *btn = static_cast<QAbstractButton *>(layout->widgetForRole((QDockWidgetLayout::Role)child));
+// if (btn)
+// btn->animateClick();
+// return true;
+// break;}
+// default:
+// break;
+// }
+
+// return false;
+//}
+
+QAccessible::Role QAccessibleTitleBar::role() const
+{
+ return TitleBar;
+}
+
+void QAccessibleTitleBar::setText(Text /*t*/, const QString &/*text*/)
{
- if (!child || !dockWidget()->isEnabled())
- return false;
-
- switch (action) {
- case DefaultAction:
- case Press: {
- QDockWidgetLayout *layout = dockWidgetLayout();
- QAbstractButton *btn = static_cast<QAbstractButton *>(layout->widgetForRole((QDockWidgetLayout::Role)child));
- if (btn)
- btn->animateClick();
- return true;
- break;}
- default:
- break;
- }
-
- return false;
-}
-
-int QAccessibleTitleBar::userActionCount (int /*child*/) const
-{
- return 0;
-}
-
-QAccessible::Role QAccessibleTitleBar::role(int child) const
-{
- switch (child) {
- case 0:
- return TitleBar;
- break;
- default:
- if (child >= 1 && child <= childCount())
- return PushButton;
- break;
- }
-
- return NoRole;
-}
-
-void QAccessibleTitleBar::setText(Text /*t*/, int /*child*/, const QString &/*text*/)
-{
-
}
bool QAccessibleTitleBar::isValid() const
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.h b/src/plugins/accessible/widgets/qaccessiblewidgets.h
index c28f9b0f33..04de22bb1e 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.h
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.h
@@ -73,10 +73,10 @@ class QAccessibleTextEdit : public QAccessibleWidget, public QAccessibleTextInte
public:
explicit QAccessibleTextEdit(QWidget *o);
- QString text(Text t, int child) const;
- void setText(Text t, int control, const QString &text);
+ QString text(Text t) const;
+ void setText(Text t, const QString &text);
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
+ QVariant invokeMethod(QAccessible::Method method, const QVariantList &params);
// QAccessibleTextInterface
void addSelection(int startOffset, int endOffset);
@@ -139,13 +139,11 @@ class QAccessibleToolBox : public QAccessibleWidget
public:
explicit QAccessibleToolBox(QWidget *widget);
- QString text(Text textType, int child) const;
- void setText(Text textType, int child, const QString &text);
- State state(int child) const;
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
- int childCount() const;
- int indexOfChild(const QAccessibleInterface *child) const;
- int navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const;
+// FIXME we currently expose the toolbox but it is not keyboard navigatable
+// and the accessible hierarchy is not exactly beautiful.
+// int childCount() const;
+// QAccessibleInterface *child(int index) const;
+// int indexOfChild(const QAccessibleInterface *child) const;
protected:
QToolBox *toolBox() const;
@@ -157,8 +155,6 @@ class QAccessibleMdiArea : public QAccessibleWidget
public:
explicit QAccessibleMdiArea(QWidget *widget);
- State state(int child) const;
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
int childCount() const;
int indexOfChild(const QAccessibleInterface *child) const;
int navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const;
@@ -172,14 +168,13 @@ class QAccessibleMdiSubWindow : public QAccessibleWidget
public:
explicit QAccessibleMdiSubWindow(QWidget *widget);
- QString text(Text textType, int child) const;
- void setText(Text textType, int child, const QString &text);
- State state(int child) const;
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
+ QString text(Text textType) const;
+ void setText(Text textType, const QString &text);
+ State state() const;
int childCount() const;
int indexOfChild(const QAccessibleInterface *child) const;
int navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const;
- QRect rect(int child) const;
+ QRect rect() const;
int childAt(int x, int y) const;
protected:
@@ -193,8 +188,6 @@ class QAccessibleWorkspace : public QAccessibleWidget
public:
explicit QAccessibleWorkspace(QWidget *widget);
- State state(int child) const;
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
int childCount() const;
int indexOfChild(const QAccessibleInterface *child) const;
int navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const;
@@ -218,7 +211,7 @@ class QAccessibleTextBrowser : public QAccessibleTextEdit
public:
explicit QAccessibleTextBrowser(QWidget *widget);
- Role role(int child) const;
+ Role role() const;
};
#endif // QT_NO_TEXTBROWSER
@@ -253,12 +246,9 @@ public:
QAccessibleInterface *child(int index) const;
int indexOfChild(const QAccessibleInterface *child) const;
int childCount() const;
- QRect rect (int child ) const;
- Role role(int child) const;
- State state(int child) const;
- int childAt(int x, int y) const;
+ QRect rect () const;
+ Role role() const;
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
QDockWidget *dockWidget() const;
};
@@ -266,25 +256,22 @@ class QAccessibleTitleBar : public QAccessibleInterface
{
public:
explicit QAccessibleTitleBar(QDockWidget *widget);
- QString actionText(int action, Text t, int child) const;
- bool doAction(int action, int child, const QVariantList& params = QVariantList());
- int userActionCount ( int child) const;
+
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int index) const;
int navigate(RelationFlag relation, int entry, QAccessibleInterface **iface) const;
int indexOfChild(const QAccessibleInterface *child) const;
int childCount() const;
- Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
- void setText(Text t, int child, const QString &text);
- QString text(Text t, int child) const;
- Role role(int child) const;
- QRect rect (int child) const;
- State state(int child) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
+ void setText(Text t, const QString &text);
+ QString text(Text t) const;
+ Role role() const;
+ QRect rect () const;
+ State state() const;
int childAt(int x, int y) const;
QObject *object() const;
bool isValid() const;
-
QPointer<QDockWidget> m_dockWidget;
QDockWidget *dockWidget() const;
diff --git a/src/plugins/accessible/widgets/rangecontrols.cpp b/src/plugins/accessible/widgets/rangecontrols.cpp
index 9eac2730b2..db10a1bff3 100644
--- a/src/plugins/accessible/widgets/rangecontrols.cpp
+++ b/src/plugins/accessible/widgets/rangecontrols.cpp
@@ -80,12 +80,11 @@ QAbstractSpinBox *QAccessibleAbstractSpinBox::abstractSpinBox() const
return qobject_cast<QAbstractSpinBox*>(object());
}
-QString QAccessibleAbstractSpinBox::text(Text t, int child) const
+QString QAccessibleAbstractSpinBox::text(Text t) const
{
- Q_UNUSED(child)
if (t == QAccessible::Value)
return abstractSpinBox()->text();
- return QAccessibleWidget::text(t, 0);
+ return QAccessibleWidget::text(t);
}
QVariant QAccessibleAbstractSpinBox::currentValue()
@@ -116,21 +115,6 @@ QVariant QAccessibleAbstractSpinBox::minimumValue()
return abstractSpinBox()->property("minimum");
}
-QVariant QAccessibleAbstractSpinBox::invokeMethod(Method method, int child, const QVariantList &params)
-{
- switch (method) {
- case ListSupportedMethods: {
- QSet<QAccessible::Method> set;
- set << ListSupportedMethods;
- return QVariant::fromValue(set | qvariant_cast<QSet<QAccessible::Method> >(
- QAccessibleWidget::invokeMethod(method, child, params)));
- }
- default:
- return QAccessibleWidget::invokeMethod(method, child, params);
- }
-}
-
-
/*!
\class QAccessibleSpinBox
\brief The QAccessibleSpinBox class implements the QAccessibleInterface for spinbox widgets.
@@ -176,17 +160,11 @@ QDoubleSpinBox *QAccessibleDoubleSpinBox::doubleSpinBox() const
return static_cast<QDoubleSpinBox*>(object());
}
-QVariant QAccessibleDoubleSpinBox::invokeMethod(QAccessible::Method, int, const QVariantList &)
-{
- return QVariant();
-}
-
-QString QAccessibleDoubleSpinBox::text(Text textType, int child) const
+QString QAccessibleDoubleSpinBox::text(Text textType) const
{
- Q_UNUSED(child)
if (textType == Value)
return doubleSpinBox()->textFromValue(doubleSpinBox()->value());
- return QAccessibleWidget::text(textType, 0);
+ return QAccessibleWidget::text(textType);
}
#endif // QT_NO_SPINBOX
@@ -217,11 +195,11 @@ QScrollBar *QAccessibleScrollBar::scrollBar() const
return qobject_cast<QScrollBar*>(object());
}
-QString QAccessibleScrollBar::text(Text t, int child) const
+QString QAccessibleScrollBar::text(Text t) const
{
if (t == Value)
return QString::number(scrollBar()->value());
- return QAccessibleAbstractSlider::text(t, child);
+ return QAccessibleAbstractSlider::text(t);
}
#endif // QT_NO_SCROLLBAR
@@ -252,12 +230,12 @@ QSlider *QAccessibleSlider::slider() const
return qobject_cast<QSlider*>(object());
}
-QString QAccessibleSlider::text(Text t, int child) const
+QString QAccessibleSlider::text(Text t) const
{
if (t == Value)
return QString::number(slider()->value());
- return QAccessibleAbstractSlider::text(t, child);
+ return QAccessibleAbstractSlider::text(t);
}
QAccessibleAbstractSlider::QAccessibleAbstractSlider(QWidget *w, Role r)
@@ -266,20 +244,6 @@ QAccessibleAbstractSlider::QAccessibleAbstractSlider(QWidget *w, Role r)
Q_ASSERT(qobject_cast<QAbstractSlider *>(w));
}
-QVariant QAccessibleAbstractSlider::invokeMethod(Method method, int child, const QVariantList &params)
-{
- switch (method) {
- case ListSupportedMethods: {
- QSet<QAccessible::Method> set;
- set << ListSupportedMethods;
- return QVariant::fromValue(set | qvariant_cast<QSet<QAccessible::Method> >(
- QAccessibleWidget::invokeMethod(method, child, params)));
- }
- default:
- return QAccessibleWidget::invokeMethod(method, child, params);
- }
-}
-
QVariant QAccessibleAbstractSlider::currentValue()
{
return abstractSlider()->value();
@@ -316,17 +280,12 @@ QAccessibleDial::QAccessibleDial(QWidget *widget)
addControllingSignal(QLatin1String("valueChanged(int)"));
}
-QString QAccessibleDial::text(Text textType, int) const
+QString QAccessibleDial::text(Text textType) const
{
if (textType == Value)
return QString::number(dial()->value());
- return QAccessibleAbstractSlider::text(textType, 0);
-}
-
-QVariant QAccessibleDial::invokeMethod(Method, int, const QVariantList &)
-{
- return QVariant();
+ return QAccessibleAbstractSlider::text(textType);
}
QDial *QAccessibleDial::dial() const
diff --git a/src/plugins/accessible/widgets/rangecontrols.h b/src/plugins/accessible/widgets/rangecontrols.h
index 827c305c49..6719329cd8 100644
--- a/src/plugins/accessible/widgets/rangecontrols.h
+++ b/src/plugins/accessible/widgets/rangecontrols.h
@@ -64,11 +64,7 @@ class QAccessibleAbstractSpinBox: public QAccessibleWidget, public QAccessibleVa
public:
explicit QAccessibleAbstractSpinBox(QWidget *w);
- QString text(Text t, int child) const;
-
- bool doAction(int action, int child, const QVariantList &params);
-
- QVariant invokeMethod(Method method, int child, const QVariantList &params);
+ QString text(Text t) const;
// QAccessibleValueInterface
QVariant currentValue();
@@ -96,8 +92,7 @@ class QAccessibleDoubleSpinBox : public QAccessibleAbstractSpinBox
public:
explicit QAccessibleDoubleSpinBox(QWidget *widget);
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
- QString text(Text t, int child) const;
+ QString text(Text t) const;
protected:
QDoubleSpinBox *doubleSpinBox() const;
@@ -110,8 +105,6 @@ class QAccessibleAbstractSlider: public QAccessibleWidget, public QAccessibleVal
public:
explicit QAccessibleAbstractSlider(QWidget *w, Role r = Slider);
- QVariant invokeMethod(Method method, int child, const QVariantList &params);
-
// QAccessibleValueInterface
QVariant currentValue();
void setCurrentValue(const QVariant &value);
@@ -127,7 +120,7 @@ class QAccessibleScrollBar : public QAccessibleAbstractSlider
{
public:
explicit QAccessibleScrollBar(QWidget *w);
- QString text(Text t, int child) const;
+ QString text(Text t) const;
protected:
QScrollBar *scrollBar() const;
@@ -139,7 +132,7 @@ class QAccessibleSlider : public QAccessibleAbstractSlider
{
public:
explicit QAccessibleSlider(QWidget *w);
- QString text(Text t, int child) const;
+ QString text(Text t) const;
protected:
QSlider *slider() const;
@@ -152,8 +145,7 @@ class QAccessibleDial : public QAccessibleAbstractSlider
public:
explicit QAccessibleDial(QWidget *w);
- QString text(Text textType, int child) const;
- QVariant invokeMethod(Method method, int child, const QVariantList &params);
+ QString text(Text textType) const;
protected:
QDial *dial() const;
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index f518fa9241..f83c9fe30e 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -105,9 +105,8 @@ QAbstractButton *QAccessibleButton::button() const
}
/*! \reimp */
-QString QAccessibleButton::text(Text t, int child) const
+QString QAccessibleButton::text(Text t) const
{
- Q_ASSERT(child == 0);
QString str;
switch (t) {
case Accelerator:
@@ -130,13 +129,12 @@ QString QAccessibleButton::text(Text t, int child) const
break;
}
if (str.isEmpty())
- str = QAccessibleWidget::text(t, child);
+ str = QAccessibleWidget::text(t);
return qt_accStripAmp(str);
}
-QAccessible::State QAccessibleButton::state(int child) const
+QAccessible::State QAccessibleButton::state() const
{
- Q_ASSERT(child == 0);
State state = QAccessibleWidget::state();
QAbstractButton *b = button();
@@ -261,7 +259,7 @@ bool QAccessibleToolButton::isSplitButton() const
#endif
}
-QAccessible::State QAccessibleToolButton::state(int) const
+QAccessible::State QAccessibleToolButton::state() const
{
QAccessible::State st = QAccessibleButton::state();
if (toolButton()->autoRaise())
@@ -295,7 +293,7 @@ QAccessibleInterface *QAccessibleToolButton::child(int index) const
Returns the button's text label, depending on the text \a t, and
the \a child.
*/
-QString QAccessibleToolButton::text(Text t, int) const
+QString QAccessibleToolButton::text(Text t) const
{
QString str;
switch (t) {
@@ -312,16 +310,6 @@ QString QAccessibleToolButton::text(Text t, int) const
return qt_accStripAmp(str);
}
-/*!
- \internal
-
- Returns the number of actions. 1 to trigger the button, 2 to show the menu.
-*/
-int QAccessibleToolButton::actionCount(int) const
-{
- return 1;
-}
-
/*
The three different tool button types can have the following actions:
| DelayedPopup | ShowMenuAction + (PressedAction || CheckedAction) |
@@ -379,9 +367,8 @@ QAccessibleDisplay::QAccessibleDisplay(QWidget *w, Role role)
{
}
-QAccessible::Role QAccessibleDisplay::role(int child) const
+QAccessible::Role QAccessibleDisplay::role() const
{
- Q_ASSERT(child == 0);
QLabel *l = qobject_cast<QLabel*>(object());
if (l) {
if (l->pixmap())
@@ -399,12 +386,11 @@ QAccessible::Role QAccessibleDisplay::role(int child) const
return ProgressBar;
#endif
}
- return QAccessibleWidget::role(child);
+ return QAccessibleWidget::role();
}
-QString QAccessibleDisplay::text(Text t, int child) const
+QString QAccessibleDisplay::text(Text t) const
{
- Q_ASSERT(child == 0);
QString str;
switch (t) {
case Name:
@@ -437,17 +423,13 @@ QString QAccessibleDisplay::text(Text t, int child) const
break;
}
if (str.isEmpty())
- str = QAccessibleWidget::text(t, child);;
+ str = QAccessibleWidget::text(t);
return qt_accStripAmp(str);
}
-QAccessible::Relation QAccessibleDisplay::relationTo(int child, const QAccessibleInterface *other,
- int otherChild) const
+QAccessible::Relation QAccessibleDisplay::relationTo(const QAccessibleInterface *other) const
{
- Q_ASSERT(child == 0);
- Relation relation = QAccessibleWidget::relationTo(child, other, otherChild);
- if (child || otherChild)
- return relation;
+ Relation relation = QAccessibleWidget::relationTo(other);
QObject *o = other->object();
QLabel *label = qobject_cast<QLabel*>(object());
@@ -560,9 +542,8 @@ QLineEdit *QAccessibleLineEdit::lineEdit() const
return qobject_cast<QLineEdit*>(object());
}
-QString QAccessibleLineEdit::text(Text t, int child) const
+QString QAccessibleLineEdit::text(Text t) const
{
- Q_ASSERT(child == 0);
QString str;
switch (t) {
case Value:
@@ -573,14 +554,14 @@ QString QAccessibleLineEdit::text(Text t, int child) const
break;
}
if (str.isEmpty())
- str = QAccessibleWidget::text(t, child);;
+ str = QAccessibleWidget::text(t);;
return qt_accStripAmp(str);
}
-void QAccessibleLineEdit::setText(Text t, int control, const QString &text)
+void QAccessibleLineEdit::setText(Text t, const QString &text)
{
- if (t != Value || control) {
- QAccessibleWidget::setText(t, control, text);
+ if (t != Value) {
+ QAccessibleWidget::setText(t, text);
return;
}
@@ -593,10 +574,9 @@ void QAccessibleLineEdit::setText(Text t, int control, const QString &text)
lineEdit()->setText(newText);
}
-QAccessible::State QAccessibleLineEdit::state(int child) const
+QAccessible::State QAccessibleLineEdit::state() const
{
- Q_ASSERT(child == 0);
- State state = QAccessibleWidget::state(child);
+ State state = QAccessibleWidget::state();
QLineEdit *l = lineEdit();
if (l->isReadOnly())
@@ -614,17 +594,15 @@ QAccessible::State QAccessibleLineEdit::state(int child) const
return state;
}
-QVariant QAccessibleLineEdit::invokeMethod(QAccessible::Method method, int child,
+QVariant QAccessibleLineEdit::invokeMethod(QAccessible::Method method,
const QVariantList &params)
{
- Q_ASSERT(child == 0);
-
switch (method) {
case ListSupportedMethods: {
QSet<QAccessible::Method> set;
set << ListSupportedMethods << SetCursorPosition << GetCursorPosition;
return QVariant::fromValue(set | qvariant_cast<QSet<QAccessible::Method> >(
- QAccessibleWidget::invokeMethod(method, child, params)));
+ QAccessibleWidget::invokeMethod(method, params)));
}
case SetCursorPosition:
setCursorPosition(params.value(0).toInt());
@@ -632,7 +610,7 @@ QVariant QAccessibleLineEdit::invokeMethod(QAccessible::Method method, int child
case GetCursorPosition:
return cursorPosition();
default:
- return QAccessibleWidget::invokeMethod(method, child, params);
+ return QAccessibleWidget::invokeMethod(method, params);
}
}
diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h
index 8642f8d9b9..25c3150386 100644
--- a/src/plugins/accessible/widgets/simplewidgets.h
+++ b/src/plugins/accessible/widgets/simplewidgets.h
@@ -62,8 +62,8 @@ class QAccessibleButton : public QAccessibleWidget
public:
QAccessibleButton(QWidget *w, Role r);
- QString text(Text t, int child = 0) const;
- State state(int child = 0) const;
+ QString text(Text t) const;
+ State state() const;
QStringList actionNames() const;
void doAction(const QString &actionName);
@@ -79,16 +79,12 @@ class QAccessibleToolButton : public QAccessibleButton
public:
QAccessibleToolButton(QWidget *w, Role role);
- State state(int) const;
+ State state() const;
int childCount() const;
QAccessibleInterface *child(int index) const;
- QString text(Text t, int child) const;
-
- int actionCount(int child) const;
- QString actionText(int action, Text text, int child) const;
- bool doAction(int action, int child, const QVariantList &params);
+ QString text(Text t) const;
// QAccessibleActionInterface
QStringList actionNames() const;
@@ -107,10 +103,10 @@ class QAccessibleDisplay : public QAccessibleWidget, public QAccessibleImageInte
public:
explicit QAccessibleDisplay(QWidget *w, Role role = StaticText);
- QString text(Text t, int child) const;
- Role role(int child) const;
+ QString text(Text t) const;
+ Role role() const;
- Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
int navigate(RelationFlag, int entry, QAccessibleInterface **target) const;
// QAccessibleImageInterface
@@ -127,10 +123,10 @@ class QAccessibleLineEdit : public QAccessibleWidget, public QAccessibleTextInte
public:
explicit QAccessibleLineEdit(QWidget *o, const QString &name = QString());
- QString text(Text t, int child) const;
- void setText(Text t, int control, const QString &text);
- State state(int child) const;
- QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
+ QString text(Text t) const;
+ void setText(Text t, const QString &text);
+ State state() const;
+ QVariant invokeMethod(QAccessible::Method method, const QVariantList &params);
// QAccessibleTextInterface
void addSelection(int startOffset, int endOffset);
diff --git a/src/plugins/platforms/windows/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/qwindowsaccessibility.cpp
index 66afb636a2..ee8ecc162e 100644
--- a/src/plugins/platforms/windows/qwindowsaccessibility.cpp
+++ b/src/plugins/platforms/windows/qwindowsaccessibility.cpp
@@ -50,6 +50,7 @@
#include <QtCore/qmap.h>
#include <QtCore/qsettings.h>
+#include <QtCore/qsharedpointer.h>
#include <QtCore/qpair.h>
#include <QtWidgets/qapplication.h>
#include <QtWidgets/qmessagebox.h>
@@ -277,6 +278,8 @@ void showDebug(const char* funcName, const QAccessibleInterface *iface)
# define showDebug(f, iface)
#endif
+typedef QSharedPointer<QAccessibleInterface> QAIPointer;
+
// This stuff is used for widgets/items with no window handle:
typedef QMap<int, QPair<QObject*,int> > NotifyMap;
Q_GLOBAL_STATIC(NotifyMap, qAccessibleRecentSentEvents)
@@ -448,6 +451,11 @@ public:
private:
ULONG ref;
QAccessibleInterface *accessible;
+
+ QAIPointer childPointer(VARIANT varID)
+ {
+ return QAIPointer(accessible->child(varID.lVal - 1));
+ }
};
static inline BSTR QStringToBSTR(const QString &str)
@@ -790,18 +798,20 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accLocation(long *pxLeft, long *py
if (!accessible->isValid())
return E_FAIL;
- QRect rect = accessible->rect(varID.lVal);
- if (rect.isValid()) {
- *pxLeft = rect.x();
- *pyTop = rect.y();
- *pcxWidth = rect.width();
- *pcyHeight = rect.height();
+ QRect rect;
+ if (varID.lVal) {
+ QAIPointer child = QAIPointer(accessible->child(varID.lVal - 1));
+ if (child->isValid())
+ rect = child->rect();
} else {
- *pxLeft = 0;
- *pyTop = 0;
- *pcxWidth = 0;
- *pcyHeight = 0;
+ rect = accessible->rect();
}
+
+ *pxLeft = rect.x();
+ *pyTop = rect.y();
+ *pcxWidth = rect.width();
+ *pcyHeight = rect.height();
+
return S_OK;
}
@@ -998,7 +1008,16 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDescription(VARIANT varID,
if (!accessible->isValid())
return E_FAIL;
- QString descr = accessible->text(Description, varID.lVal);
+
+ QString descr;
+ if (varID.lVal) {
+ QAIPointer child = childPointer(varID);
+ if (!child)
+ return E_FAIL;
+ descr = child->text(Description);
+ } else {
+ descr = accessible->text(Description);
+ }
if (descr.size()) {
*pszDescription = QStringToBSTR(descr);
return S_OK;
@@ -1014,7 +1033,15 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accHelp(VARIANT varID, BSTR *p
if (!accessible->isValid())
return E_FAIL;
- QString help = accessible->text(Help, varID.lVal);
+ QString help;
+ if (varID.lVal) {
+ QAIPointer child = childPointer(varID);
+ if (!child)
+ return E_FAIL;
+ help = child->text(Help);
+ } else {
+ help = accessible->text(Help);
+ }
if (help.size()) {
*pszHelp = QStringToBSTR(help);
return S_OK;
@@ -1038,7 +1065,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accKeyboardShortcut(VARIANT va
*pszKeyboardShortcut = 0;
if (QAccessibleActionInterface *actionIface = accessible->actionInterface()) {
- const QString def = actionIface->actionNames().value(0);
+ const QString def = actionIface->actionNames().value(0); // I CRASH YOU
if (!def.isEmpty()) {
const QString keyBoardShortCut = actionIface->keyBindingsForAction(def).value(0);
if (!keyBoardShortCut.isEmpty())
@@ -1055,9 +1082,17 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accName(VARIANT varID, BSTR* p
if (!accessible->isValid())
return E_FAIL;
- QString n = accessible->text(Name, varID.lVal);
- if (n.size()) {
- *pszName = QStringToBSTR(n);
+ QString name;
+ if (varID.lVal) {
+ QAIPointer child = childPointer(varID);
+ if (!child)
+ return E_FAIL;
+ name = child->text(Name);
+ } else {
+ name = accessible->text(Name);
+ }
+ if (name.size()) {
+ *pszName = QStringToBSTR(name);
return S_OK;
}
@@ -1078,7 +1113,16 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accRole(VARIANT varID, VARIANT
if (!accessible->isValid())
return E_FAIL;
- Role role = accessible->role(varID.lVal);
+ Role role;
+ if (varID.lVal) {
+ QAIPointer child = childPointer(varID);
+ if (!child)
+ return E_FAIL;
+ role = child->role();
+ } else {
+ role = accessible->role();
+ }
+
if (role != NoRole) {
if (role == LayeredPane)
role = QAccessible::Pane;
@@ -1097,8 +1141,18 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIAN
if (!accessible->isValid())
return E_FAIL;
+ State state;
+ if (varID.lVal) {
+ QAIPointer child = childPointer(varID);
+ if (!child.data())
+ return E_FAIL;
+ state = child->state();
+ } else {
+ state = accessible->state();
+ }
+
(*pvarState).vt = VT_I4;
- (*pvarState).lVal = accessible->state(varID.lVal);
+ (*pvarState).lVal = state;
return S_OK;
}
@@ -1106,10 +1160,15 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIAN
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accValue(VARIANT varID, BSTR* pszValue)
{
showDebug(__FUNCTION__, accessible);
- if (!accessible->isValid())
+ if (!accessible->isValid() || varID.lVal)
return E_FAIL;
- QString value = accessible->text(Value, varID.lVal);
+ QString value;
+ if (accessible->valueInterface()) {
+ value = QString::number(accessible->valueInterface()->currentValue().toDouble());
+ } else {
+ value = accessible->text(Value);
+ }
if (!value.isNull()) {
*pszValue = QStringToBSTR(value);
return S_OK;
@@ -1197,19 +1256,15 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accSelection(VARIANT *pvarChil
int cc = accessible->childCount();
QVector<int> sel(cc);
int selIndex = 0;
- for (int i = 1; i <= cc; ++i) {
- QAccessibleInterface *child = 0;
- int i2 = accessible->navigate(Child, i, &child);
+ for (int i = 0; i < cc; ++i) {
bool isSelected = false;
+ QAccessibleInterface *child = accessible->child(i);
if (child) {
- isSelected = child->state(0) & Selected;
+ isSelected = child->state() & Selected;
delete child;
- child = 0;
- } else {
- isSelected = accessible->state(i2) & Selected;
}
if (isSelected)
- sel[selIndex++] = i;
+ sel[selIndex++] = i+1;
}
sel.resize(selIndex);
if (sel.isEmpty()) {
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 6f3e661f2d..9afb45c45e 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -244,13 +244,8 @@ int QAccessibleWidget::childAt(int x, int y) const
}
/*! \reimp */
-QRect QAccessibleWidget::rect(int child) const
+QRect QAccessibleWidget::rect() const
{
- if (child) {
- qWarning("QAccessibleWidget::rect: This implementation does not support subelements! "
- "(ID %d unknown for %s)", child, widget()->metaObject()->className());
- }
-
QWidget *w = widget();
if (!w->isVisible())
return QRect();
@@ -353,8 +348,7 @@ static inline bool isAncestor(const QObject *obj, const QObject *child)
/*! \reimp */
-QAccessible::Relation QAccessibleWidget::relationTo(int child,
- const QAccessibleInterface *other, int otherChild) const
+QAccessible::Relation QAccessibleWidget::relationTo(const QAccessibleInterface *other) const
{
Relation relation = Unrelated;
if (d->asking == this) // recursive call
@@ -378,7 +372,7 @@ QAccessible::Relation QAccessibleWidget::relationTo(int child,
// test for passive relationships.
// d->asking protects from endless recursion.
d->asking = this;
- int inverse = other->relationTo(otherChild, this, child);
+ int inverse = other->relationTo(this);
d->asking = 0;
if (inverse & Controller)
@@ -387,12 +381,7 @@ QAccessible::Relation QAccessibleWidget::relationTo(int child,
relation |= Labelled;
if(o == object()) {
- if (child && !otherChild)
- return relation | Child;
- if (!child && otherChild)
- return relation | Ancestor;
- if (!child && !otherChild)
- return relation | Self;
+ return relation | Self;
}
QObject *parent = object()->parent();
@@ -403,12 +392,12 @@ QAccessible::Relation QAccessibleWidget::relationTo(int child,
relation |= Sibling;
QAccessibleInterface *sibIface = QAccessible::queryAccessibleInterface(o);
Q_ASSERT(sibIface);
- QRect wg = rect(0);
- QRect sg = sibIface->rect(0);
+ QRect wg = rect();
+ QRect sg = sibIface->rect();
if (wg.intersects(sg)) {
QAccessibleInterface *pIface = 0;
pIface = sibIface->parent();
- if (pIface && !((sibIface->state(0) | state(0)) & Invisible)) {
+ if (pIface && !((sibIface->state() | state()) & Invisible)) {
int wi = pIface->indexOfChild(this);
int si = pIface->indexOfChild(sibIface);
@@ -508,7 +497,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
if (!pIface)
return -1;
- QRect startg = rect(0);
+ QRect startg = rect();
QPoint startc = startg.center();
QAccessibleInterface *candidate = 0;
int mindist = 100000;
@@ -517,13 +506,13 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
QAccessibleInterface *sibling = 0;
sibling = pIface->child(i);
Q_ASSERT(sibling);
- if ((relationTo(0, sibling, 0) & Self) || (sibling->state(0) & QAccessible::Invisible)) {
+ if ((relationTo(sibling) & Self) || (sibling->state() & QAccessible::Invisible)) {
//ignore ourself and invisible siblings
delete sibling;
continue;
}
- QRect sibg = sibling->rect(0);
+ QRect sibg = sibling->rect();
QPoint sibc = sibg.center();
QPoint sibp;
QPoint startp;
@@ -590,7 +579,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
if (!pIface)
return -1;
- QRect r = rect(0);
+ QRect r = rect();
int sibCount = pIface->childCount();
QAccessibleInterface *sibling = 0;
for (int i = pIface->indexOfChild(this) + 1; i <= sibCount && entry; ++i) {
@@ -600,7 +589,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
sibling = 0;
continue;
}
- if (sibling->rect(0).intersects(r))
+ if (sibling->rect().intersects(r))
--entry;
if (!entry)
break;
@@ -619,18 +608,18 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
if (!pIface)
return -1;
- QRect r = rect(0);
+ QRect r = rect();
int index = pIface->indexOfChild(this);
QAccessibleInterface *sibling = 0;
for (int i = 1; i < index && entry; ++i) {
sibling = pIface->child(i - 1);
Q_ASSERT(sibling);
- if (!sibling || (sibling->state(0) & Invisible)) {
+ if (!sibling || (sibling->state() & Invisible)) {
delete sibling;
sibling = 0;
continue;
}
- if (sibling->rect(0).intersects(r))
+ if (sibling->rect().intersects(r))
--entry;
if (!entry)
break;
@@ -682,7 +671,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
for (int i = 0; i < sibCount && entry; ++i) {
candidate = pIface->child(i);
Q_ASSERT(candidate);
- if (candidate->relationTo(0, this, 0) & Label)
+ if (candidate->relationTo(this) & Label)
--entry;
if (!entry)
break;
@@ -691,7 +680,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
candidate = 0;
}
if (!candidate) {
- if (pIface->relationTo(0, this, 0) & Label)
+ if (pIface->relationTo(this) & Label)
--entry;
if (!entry)
candidate = pIface;
@@ -718,7 +707,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry,
QAccessibleInterface *candidate = QAccessible::queryAccessibleInterface(sender);
if (!candidate)
continue;
- if (candidate->relationTo(0, this, 0)&Controller)
+ if (candidate->relationTo(this) & Controller)
senders << sender;
delete candidate;
}
@@ -767,7 +756,7 @@ int QAccessibleWidget::indexOfChild(const QAccessibleInterface *child) const
extern QString qt_setWindowTitle_helperHelper(const QString &, const QWidget*);
/*! \reimp */
-QString QAccessibleWidget::text(Text t, int child) const
+QString QAccessibleWidget::text(Text t) const
{
QString str;
@@ -777,7 +766,7 @@ QString QAccessibleWidget::text(Text t, int child) const
str = d->name;
} else if (!widget()->accessibleName().isEmpty()) {
str = widget()->accessibleName();
- } else if (!child && widget()->isWindow()) {
+ } else if (widget()->isWindow()) {
if (widget()->isMinimized())
str = qt_setWindowTitle_helperHelper(widget()->windowIconText(), widget());
else
@@ -847,31 +836,14 @@ QStringList QAccessibleWidget::keyBindingsForAction(const QString & /* actionNam
}
/*! \reimp */
-QAccessible::Role QAccessibleWidget::role(int child) const
+QAccessible::Role QAccessibleWidget::role() const
{
- if (!child)
- return d->role;
-
- QWidgetList childList = childWidgets(widget());
- if (childList.count() > 0 && child <= childList.count()) {
- QWidget *targetWidget = childList.at(child - 1);
- QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(targetWidget);
- if (iface) {
- QAccessible::Role role = iface->role(0);
- delete iface;
- return role;
- }
- }
-
- return NoRole;
+ return d->role;
}
/*! \reimp */
-QAccessible::State QAccessibleWidget::state(int child) const
+QAccessible::State QAccessibleWidget::state() const
{
- if (child)
- return Normal;
-
QAccessible::State state = Normal;
QWidget *w = widget();
@@ -903,22 +875,6 @@ QColor QAccessibleWidget::backgroundColor() const
return widget()->palette().color(widget()->backgroundRole());
}
-QVariant QAccessibleWidget::invokeMethod(Method method, int child, const QVariantList & /*params*/)
-{
- if (child)
- return QVariant();
-
- switch (method) {
- case ListSupportedMethods: {
- QSet<QAccessible::Method> set;
- set << ListSupportedMethods << ForegroundColor << BackgroundColor;
- return QVariant::fromValue(set);
- }
- default:
- return QVariant();
- }
-}
-
QT_END_NAMESPACE
#endif //QT_NO_ACCESSIBILITY
diff --git a/src/widgets/accessible/qaccessiblewidget.h b/src/widgets/accessible/qaccessiblewidget.h
index e3b5a86356..87edf75f0e 100644
--- a/src/widgets/accessible/qaccessiblewidget.h
+++ b/src/widgets/accessible/qaccessiblewidget.h
@@ -63,29 +63,27 @@ public:
QWindow *window() const;
int childCount() const;
int indexOfChild(const QAccessibleInterface *child) const;
- Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
+ Relation relationTo(const QAccessibleInterface *other) const;
int childAt(int x, int y) const;
- QRect rect(int child = 0) const;
+ QRect rect() const;
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int index) const;
int navigate(RelationFlag rel, int entry, QAccessibleInterface **target) const;
- QString text(Text t, int child = 0) const;
- Role role(int child = 0) const;
- State state(int child = 0) const;
+ QString text(Text t) const;
+ Role role() const;
+ State state() const;
QColor foregroundColor() const;
QColor backgroundColor() const;
- QVariant invokeMethod(Method method, int child, const QVariantList &params);
// QAccessibleActionInterface
QStringList actionNames() const;
void doAction(const QString &actionName);
QStringList keyBindingsForAction(const QString &actionName) const;
-
protected:
~QAccessibleWidget();
QWidget *widget() const;
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp
index ee20d8880b..44ae7246c4 100644
--- a/src/widgets/itemviews/qlistview.cpp
+++ b/src/widgets/itemviews/qlistview.cpp
@@ -3169,11 +3169,7 @@ void QListView::currentChanged(const QModelIndex &current, const QModelIndex &pr
if (QAccessible::isActive()) {
if (current.isValid()) {
int entry = visualIndex(current) + 1;
-#ifdef Q_OS_UNIX
QAccessible::updateAccessibility(this, entry, QAccessible::Focus);
-#else
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::Focus);
-#endif
}
}
#endif
@@ -3192,20 +3188,12 @@ void QListView::selectionChanged(const QItemSelection &selected,
QModelIndex sel = selected.indexes().value(0);
if (sel.isValid()) {
int entry = visualIndex(sel) + 1;
-#ifdef Q_OS_UNIX
QAccessible::updateAccessibility(this, entry, QAccessible::Selection);
-#else
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::Selection);
-#endif
}
QModelIndex desel = deselected.indexes().value(0);
if (desel.isValid()) {
int entry = visualIndex(desel) + 1;
-#ifdef Q_OS_UNIX
QAccessible::updateAccessibility(this, entry, QAccessible::SelectionRemove);
-#else
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::SelectionRemove);
-#endif
}
}
#endif
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index 25cb29ffd2..5674162b05 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -3749,29 +3749,15 @@ void QTreeView::selectionChanged(const QItemSelection &selected,
// ### does not work properly for selection ranges.
QModelIndex sel = selected.indexes().value(0);
if (sel.isValid()) {
-#ifdef Q_OS_UNIX
int entry = (visualIndex(sel) + (header()?1:0))*sel.model()->columnCount()+sel.column() + 1;
Q_ASSERT(entry > 0);
QAccessible::updateAccessibility(this, entry, QAccessible::Selection);
-#else
- int entry = visualIndex(sel) + 1;
- if (header())
- ++entry;
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::Selection);
-#endif
}
QModelIndex desel = deselected.indexes().value(0);
if (desel.isValid()) {
-#ifdef Q_OS_UNIX
int entry = (visualIndex(desel) + (header()?1:0))*desel.model()->columnCount()+desel.column() + 1;
Q_ASSERT(entry > 0);
QAccessible::updateAccessibility(this, entry, QAccessible::SelectionRemove);
-#else
- int entry = visualIndex(desel) + 1;
- if (header())
- ++entry;
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::SelectionRemove);
-#endif
}
}
#endif
diff --git a/src/widgets/itemviews/qtreeview.h b/src/widgets/itemviews/qtreeview.h
index 47cac2faed..bf8d016e31 100644
--- a/src/widgets/itemviews/qtreeview.h
+++ b/src/widgets/itemviews/qtreeview.h
@@ -218,7 +218,7 @@ protected:
void currentChanged(const QModelIndex &current, const QModelIndex &previous);
private:
- friend class QAccessibleItemView;
+ //friend class QAccessibleItemView;
friend class QAccessibleTable2;
friend class QAccessibleTree;
friend class QAccessibleTable2Cell;
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 9cf9a550a8..e5ebfba851 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -8192,8 +8192,6 @@ bool QWidget::event(QEvent *event)
case QEvent::AccessibilityDescription:
case QEvent::AccessibilityHelp: {
QAccessibleEvent *ev = static_cast<QAccessibleEvent *>(event);
- if (ev->child())
- return false;
switch (ev->type()) {
#ifndef QT_NO_TOOLTIP
case QEvent::AccessibilityDescription:
diff --git a/tests/auto/integrationtests/macgui/guitest.cpp b/tests/auto/integrationtests/macgui/guitest.cpp
index ac8b66ba9b..e5245528cb 100644
--- a/tests/auto/integrationtests/macgui/guitest.cpp
+++ b/tests/auto/integrationtests/macgui/guitest.cpp
@@ -58,13 +58,12 @@
class PrintTest : public TestBase
{
public:
- bool operator()(InterfaceChildPair candidate)
+ bool operator()(QAccessibleInterface *candidate)
{
qDebug() << "";
- qDebug() << "Name" << candidate.iface->text(QAccessible::Name, candidate.possibleChild);
- qDebug() << "Pos" << candidate.iface->rect(candidate.possibleChild);
- if (candidate.possibleChild == 0)
- qDebug() << "Number of children" << candidate.iface->childCount();
+ qDebug() << "Name" << candidate->text(QAccessible::Name);
+ qDebug() << "Pos" << candidate->rect();
+ qDebug() << "Number of children" << candidate->childCount();
return false;
}
};
@@ -76,9 +75,9 @@ public:
QString text;
QAccessible::Text textType;
- bool operator()(InterfaceChildPair candidate)
+ bool operator()(QAccessibleInterface *candidate)
{
- return (candidate.iface->text(textType, candidate.possibleChild) == text);
+ return (candidate->text(textType) == text);
}
};
@@ -86,66 +85,63 @@ void WidgetNavigator::printAll(QWidget *widget)
{
QAccessibleInterface * const iface = QAccessible::queryAccessibleInterface(widget);
deleteInDestructor(iface);
- printAll(InterfaceChildPair(iface, 0));
+ printAll(iface);
}
-void WidgetNavigator::printAll(InterfaceChildPair interface)
+void WidgetNavigator::printAll(QAccessibleInterface *interface)
{
PrintTest printTest;
- recursiveSearch(&printTest, interface.iface, interface.possibleChild);
+ recursiveSearch(&printTest, interface);
}
-InterfaceChildPair WidgetNavigator::find(QAccessible::Text textType, const QString &text, QWidget *start)
+QAccessibleInterface *WidgetNavigator::find(QAccessible::Text textType, const QString &text, QWidget *start)
{
- QAccessibleInterface * const iface = QAccessible::queryAccessibleInterface(start);
+ QAccessibleInterface *const iface = QAccessible::queryAccessibleInterface(start);
deleteInDestructor(iface);
return find(textType, text, iface);
}
-InterfaceChildPair WidgetNavigator::find(QAccessible::Text textType, const QString &text, QAccessibleInterface *start)
+QAccessibleInterface *WidgetNavigator::find(QAccessible::Text textType, const QString &text, QAccessibleInterface *start)
{
NameTest nameTest(text, textType);
- return recursiveSearch(&nameTest, start, 0);
+ return recursiveSearch(&nameTest, start);
}
/*
Recursiveley navigates the accessible hiearchy looking for an interface that
passsed the Test (meaning it returns true).
*/
-InterfaceChildPair WidgetNavigator::recursiveSearch(TestBase *test, QAccessibleInterface *iface, int possibleChild)
+QAccessibleInterface *WidgetNavigator::recursiveSearch(TestBase *test, QAccessibleInterface *iface)
{
- QStack<InterfaceChildPair> todoInterfaces;
- todoInterfaces.push(InterfaceChildPair(iface, possibleChild));
+ QStack<QAccessibleInterface *> todoInterfaces;
+ todoInterfaces.push(iface);
while (todoInterfaces.isEmpty() == false) {
- InterfaceChildPair testInterface = todoInterfaces.pop();
+ QAccessibleInterface *testInterface = todoInterfaces.pop();
if ((*test)(testInterface))
return testInterface;
- if (testInterface.possibleChild != 0)
- continue;
-
- const int numChildren = testInterface.iface->childCount();
+ const int numChildren = testInterface->childCount();
for (int i = 0; i < numChildren; ++i) {
- QAccessibleInterface *childInterface = testInterface.iface->child(i);
+ QAccessibleInterface *childInterface = testInterface->child(i);
if (childInterface) {
- todoInterfaces.push(InterfaceChildPair(childInterface, 0));
+ todoInterfaces.push(childInterface);
deleteInDestructor(childInterface);
}
}
}
- return InterfaceChildPair();
+ return 0;
}
-void WidgetNavigator::deleteInDestructor(QAccessibleInterface * interface)
+void WidgetNavigator::deleteInDestructor(QAccessibleInterface *interface)
{
interfaces.insert(interface);
}
-QWidget *WidgetNavigator::getWidget(InterfaceChildPair interface)
+QWidget *WidgetNavigator::getWidget(QAccessibleInterface *interface)
{
- return qobject_cast<QWidget *>(interface.iface->object());
+ return qobject_cast<QWidget *>(interface->object());
}
WidgetNavigator::~WidgetNavigator()
@@ -275,7 +271,7 @@ void DelayedAction::run()
Schedules a mouse click at an interface using a singleShot timer.
Only one click can be scheduled at a time.
*/
-ClickLaterAction::ClickLaterAction(InterfaceChildPair interface, Qt::MouseButtons buttons)
+ClickLaterAction::ClickLaterAction(QAccessibleInterface *interface, Qt::MouseButtons buttons)
{
this->useInterface = true;
this->interface = interface;
@@ -296,7 +292,7 @@ ClickLaterAction::ClickLaterAction(QWidget *widget, Qt::MouseButtons buttons)
void ClickLaterAction::run()
{
if (useInterface) {
- const QPoint globalCenter = interface.iface->rect(interface.possibleChild).center();
+ const QPoint globalCenter = interface->rect().center();
NativeEvents::mouseClick(globalCenter, buttons);
} else { // use widget
const QSize halfSize = widget->size() / 2;
@@ -306,7 +302,7 @@ void ClickLaterAction::run()
DelayedAction::run();
}
-void GuiTester::clickLater(InterfaceChildPair interface, Qt::MouseButtons buttons, int delay)
+void GuiTester::clickLater(QAccessibleInterface *interface, Qt::MouseButtons buttons, int delay)
{
clearSequence();
addToSequence(new ClickLaterAction(interface, buttons), delay);
diff --git a/tests/auto/integrationtests/macgui/guitest.h b/tests/auto/integrationtests/macgui/guitest.h
index 432021c54a..170fc5c19c 100644
--- a/tests/auto/integrationtests/macgui/guitest.h
+++ b/tests/auto/integrationtests/macgui/guitest.h
@@ -54,23 +54,9 @@ QT_USE_NAMESPACE
- Simulating platform mouse and keybord events.
*/
-/*
- InterfaceChildPair specifies an accessibilty interface item.
-*/
-class InterfaceChildPair {
-public:
- InterfaceChildPair() : iface(0), possibleChild(0) {}
- InterfaceChildPair(QAccessibleInterface *iface, int possibleChild)
- :iface(iface), possibleChild(possibleChild)
- { }
-
- QAccessibleInterface *iface;
- int possibleChild;
-};
-
class TestBase {
public:
- virtual bool operator()(InterfaceChildPair candidate) = 0;
+ virtual bool operator()(QAccessibleInterface *candidate) = 0;
virtual ~TestBase() {}
};
@@ -83,15 +69,15 @@ public:
~WidgetNavigator();
void printAll(QWidget *widget);
- void printAll(InterfaceChildPair interface);
+ void printAll(QAccessibleInterface *interface);
- InterfaceChildPair find(QAccessible::Text textType, const QString &text, QWidget *start);
- InterfaceChildPair find(QAccessible::Text textType, const QString &text, QAccessibleInterface *start);
+ QAccessibleInterface *find(QAccessible::Text textType, const QString &text, QWidget *start);
+ QAccessibleInterface *find(QAccessible::Text textType, const QString &text, QAccessibleInterface *start);
- InterfaceChildPair recursiveSearch(TestBase *test, QAccessibleInterface *iface, int possibleChild);
+ QAccessibleInterface *recursiveSearch(TestBase *test, QAccessibleInterface *iface);
void deleteInDestructor(QAccessibleInterface * interface);
- static QWidget *getWidget(InterfaceChildPair interface);
+ static QWidget *getWidget(QAccessibleInterface *interface);
private:
QSet<QAccessibleInterface *> interfaces;
};
@@ -141,13 +127,13 @@ class ClickLaterAction : public DelayedAction
{
Q_OBJECT
public:
- ClickLaterAction(InterfaceChildPair interface, Qt::MouseButtons buttons = Qt::LeftButton);
+ ClickLaterAction(QAccessibleInterface *interface, Qt::MouseButtons buttons = Qt::LeftButton);
ClickLaterAction(QWidget *widget, Qt::MouseButtons buttons = Qt::LeftButton);
protected slots:
void run();
private:
bool useInterface;
- InterfaceChildPair interface;
+ QAccessibleInterface *interface;
QWidget *widget;
Qt::MouseButtons buttons;
};
@@ -168,7 +154,7 @@ public:
protected slots:
void exitLoopSlot();
protected:
- void clickLater(InterfaceChildPair interface, Qt::MouseButtons buttons = Qt::LeftButton, int delay = 300);
+ void clickLater(QAccessibleInterface *interface, Qt::MouseButtons buttons = Qt::LeftButton, int delay = 300);
void clickLater(QWidget *widget, Qt::MouseButtons buttons = Qt::LeftButton, int delay = 300);
void clearSequence();
diff --git a/tests/auto/integrationtests/macgui/tst_macgui.cpp b/tests/auto/integrationtests/macgui/tst_macgui.cpp
index 1552db21ab..9ff2897aa8 100644
--- a/tests/auto/integrationtests/macgui/tst_macgui.cpp
+++ b/tests/auto/integrationtests/macgui/tst_macgui.cpp
@@ -116,8 +116,8 @@ void tst_MacGui::dummy()
box->show();
// Find the "OK" button and schedule a press.
- InterfaceChildPair interface = wn.find(QAccessible::Name, "OK", box);
- QVERIFY(interface.iface);
+ QAccessibleInterface *interface = wn.find(QAccessible::Name, "OK", box);
+ QVERIFY(interface);
const int delay = 1000;
clickLater(interface, Qt::LeftButton, delay);
@@ -142,8 +142,8 @@ void tst_MacGui::splashScreenModality()
box.show();
// Find the "OK" button and schedule a press.
- InterfaceChildPair interface = wn.find(QAccessible::Name, "OK", &box);
- QVERIFY(interface.iface);
+ QAccessibleInterface *interface = wn.find(QAccessible::Name, "OK", &box);
+ QVERIFY(interface);
const int delay = 1000;
clickLater(interface, Qt::LeftButton, delay);
@@ -220,8 +220,8 @@ void tst_MacGui::spinBoxArrowButtons()
const QImage noFocus = grabWindowContents(&colorWidget).toImage();
// Set focus by clicking the less button.
- InterfaceChildPair lessInterface = wn.find(QAccessible::Name, "Less", &spinBox);
- QVERIFY(lessInterface.iface);
+ QAccessibleInterface *lessInterface = wn.find(QAccessible::Name, "Less", &spinBox);
+ QVERIFY(lessInterface);
const int delay = 500;
clickLater(lessInterface, Qt::LeftButton, delay);
const int timeout = 1;
@@ -231,7 +231,7 @@ void tst_MacGui::spinBoxArrowButtons()
const QImage focus = grabWindowContents(&colorWidget).toImage();
// Compare the arrow area of the less button to see if it moved.
- const QRect lessRect = lessInterface.iface->rect(lessInterface.possibleChild);
+ const QRect lessRect = lessInterface->rect();
const QRect lessLocalRect(colorWidget.mapFromGlobal(lessRect.topLeft()), colorWidget.mapFromGlobal(lessRect.bottomRight()));
const QRect compareRect = lessLocalRect.adjusted(5, 3, -5, -7);
QVERIFY(noFocus.copy(compareRect) == focus.copy(compareRect));
diff --git a/tests/auto/integrationtests/qaccessibility/tst_qaccessibility.cpp b/tests/auto/integrationtests/qaccessibility/tst_qaccessibility.cpp
index fc583d8bd8..93a8dbe219 100644
--- a/tests/auto/integrationtests/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/integrationtests/qaccessibility/tst_qaccessibility.cpp
@@ -196,6 +196,13 @@ static int verifyHierarchy(QAccessibleInterface *iface)
return errorAt;
}
+QRect childRect(QAccessibleInterface *iface, int index = 0)
+{
+ QAccessibleInterface *child = iface->child(index);
+ QRect rect = child->rect();
+ delete child;
+ return rect;
+}
//TESTED_FILES=
@@ -246,10 +253,6 @@ private slots:
void abstractScrollAreaTest();
void scrollAreaTest();
- void listViewTest();
- void treeWidgetTest();
- void tableWidgetTest();
- void tableViewTest();
void table2ListTest();
void table2TreeTest();
@@ -344,11 +347,11 @@ class QtTestAccessibleWidgetIface: public QAccessibleWidget
{
public:
QtTestAccessibleWidgetIface(QtTestAccessibleWidget *w): QAccessibleWidget(w) {}
- QString text(Text t, int control = 0) const
+ QString text(Text t) const
{
if (t == Help)
return QString::fromLatin1("Help yourself");
- return QAccessibleWidget::text(t, control);
+ return QAccessibleWidget::text(t);
}
static QAccessibleInterface *ifaceFactory(const QString &key, QObject *o)
{
@@ -434,7 +437,7 @@ void tst_QAccessibility::customWidget()
QVERIFY(iface->isValid());
QCOMPARE(iface->object(), (QObject*)widget);
QCOMPARE(iface->object()->objectName(), QString("Heinz"));
- QCOMPARE(iface->text(QAccessible::Help, 0), QString("Help yourself"));
+ QCOMPARE(iface->text(QAccessible::Help), QString("Help yourself"));
delete iface;
delete widget;
@@ -623,8 +626,8 @@ void tst_QAccessibility::navigateCovered()
for (int y = 0; y < w->height(); ++y) {
w1->move(x, y);
if (w1->geometry().intersects(w2->geometry())) {
- QVERIFY(iface1->relationTo(0, iface2, 0) & QAccessible::Covers);
- QVERIFY(iface2->relationTo(0, iface1, 0) & QAccessible::Covered);
+ QVERIFY(iface1->relationTo(iface2) & QAccessible::Covers);
+ QVERIFY(iface2->relationTo(iface1) & QAccessible::Covered);
QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), 0);
QVERIFY(iface3 != 0);
QVERIFY(iface3->isValid());
@@ -636,8 +639,8 @@ void tst_QAccessibility::navigateCovered()
QCOMPARE(iface3->object(), iface1->object());
delete iface3; iface3 = 0;
} else {
- QVERIFY(!(iface1->relationTo(0, iface2, 0) & QAccessible::Covers));
- QVERIFY(!(iface2->relationTo(0, iface1, 0) & QAccessible::Covered));
+ QVERIFY(!(iface1->relationTo(iface2) & QAccessible::Covers));
+ QVERIFY(!(iface2->relationTo(iface1) & QAccessible::Covered));
QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), -1);
QVERIFY(iface3 == 0);
QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1);
@@ -669,13 +672,13 @@ void tst_QAccessibility::navigateCovered()
w1->move(0,0);
w2->move(0,0);
w1->raise();
- QVERIFY(iface1->relationTo(0, iface2, 0) & QAccessible::Covers);
- QVERIFY(iface2->relationTo(0, iface1, 0) & QAccessible::Covered);
+ QVERIFY(iface1->relationTo(iface2) & QAccessible::Covers);
+ QVERIFY(iface2->relationTo(iface1) & QAccessible::Covered);
QVERIFY(!(iface1->state() & QAccessible::Invisible));
w1->hide();
QVERIFY(iface1->state() & QAccessible::Invisible);
- QVERIFY(!(iface1->relationTo(0, iface2, 0) & QAccessible::Covers));
- QVERIFY(!(iface2->relationTo(0, iface1, 0) & QAccessible::Covered));
+ QVERIFY(!(iface1->relationTo(iface2) & QAccessible::Covers));
+ QVERIFY(!(iface2->relationTo(iface1) & QAccessible::Covered));
QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1);
QVERIFY(iface3 == 0);
QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1);
@@ -967,6 +970,7 @@ void tst_QAccessibility::actionTest()
{
QPushButton *button = new QPushButton;
button->show();
+ button->clearFocus();
QCOMPARE(button->hasFocus(), false);
QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(button);
QAccessibleActionInterface *actions = interface->actionInterface();
@@ -996,7 +1000,7 @@ void tst_QAccessibility::applicationTest()
QLatin1String name = QLatin1String("My Name");
qApp->setApplicationName(name);
QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(qApp);
- QCOMPARE(interface->text(QAccessible::Name, 0), name);
+ QCOMPARE(interface->text(QAccessible::Name), name);
QCOMPARE(interface->role(), QAccessible::Application);
delete interface;
}
@@ -1013,7 +1017,7 @@ void tst_QAccessibility::mainWindowTest()
QVERIFY_EVENT(mw, 0, QAccessible::ObjectShow);
QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(mw);
- QCOMPARE(interface->text(QAccessible::Name, 0), name);
+ QCOMPARE(interface->text(QAccessible::Name), name);
QCOMPARE(interface->role(), QAccessible::Window);
delete interface;
delete mw;
@@ -1463,19 +1467,19 @@ void tst_QAccessibility::menuTest()
QVERIFY(interface->rect().contains(iAction->rect()));
#endif
- QCOMPARE(iFile->text(QAccessible::Name, 0), QString("File"));
- QCOMPARE(iEdit->text(QAccessible::Name, 0), QString("Edit"));
- QCOMPARE(iSeparator->text(QAccessible::Name, 0), QString());
- QCOMPARE(iHelp->text(QAccessible::Name, 0), QString("Help"));
- QCOMPARE(iAction->text(QAccessible::Name, 0), QString("Action!"));
+ QCOMPARE(iFile->text(QAccessible::Name), QString("File"));
+ QCOMPARE(iEdit->text(QAccessible::Name), QString("Edit"));
+ QCOMPARE(iSeparator->text(QAccessible::Name), QString());
+ QCOMPARE(iHelp->text(QAccessible::Name), QString("Help"));
+ QCOMPARE(iAction->text(QAccessible::Name), QString("Action!"));
// TODO: Currently not working, task to fix is #100019.
#ifndef Q_OS_MAC
- QCOMPARE(iFile->text(QAccessible::Accelerator, 0), tr("Alt+F"));
- QCOMPARE(iEdit->text(QAccessible::Accelerator, 0), tr("Alt+E"));
- QCOMPARE(iSeparator->text(QAccessible::Accelerator, 0), QString());
- QCOMPARE(iHelp->text(QAccessible::Accelerator, 0), tr("Alt+H"));
- QCOMPARE(iAction->text(QAccessible::Accelerator, 0), QString());
+ QCOMPARE(iFile->text(QAccessible::Accelerator), tr("Alt+F"));
+ QCOMPARE(iEdit->text(QAccessible::Accelerator), tr("Alt+E"));
+ QCOMPARE(iSeparator->text(QAccessible::Accelerator), QString());
+ QCOMPARE(iHelp->text(QAccessible::Accelerator), tr("Alt+H"));
+ QCOMPARE(iAction->text(QAccessible::Accelerator), QString());
#endif
QVERIFY(iFile->actionInterface());
@@ -1662,7 +1666,7 @@ void tst_QAccessibility::spinBoxTest()
const QRect widgetRect = spinBox->geometry();
const QRect accessibleRect = interface->rect();
QCOMPARE(accessibleRect, widgetRect);
- QCOMPARE(interface->text(QAccessible::Value, 0), QLatin1String("3"));
+ QCOMPARE(interface->text(QAccessible::Value), QLatin1String("3"));
// one child, the line edit
const int numChildren = interface->childCount();
@@ -1670,7 +1674,7 @@ void tst_QAccessibility::spinBoxTest()
QAccessibleInterface *lineEdit = interface->child(0);
QCOMPARE(lineEdit->role(), QAccessible::EditableText);
- QCOMPARE(lineEdit->text(QAccessible::Value, 0), QLatin1String("3"));
+ QCOMPARE(lineEdit->text(QAccessible::Value), QLatin1String("3"));
delete lineEdit;
QVERIFY(interface->valueInterface());
@@ -1704,9 +1708,11 @@ void tst_QAccessibility::doubleSpinBoxTest()
// Test that we get valid rects for all the spinbox child interfaces.
const int numChildren = interface->childCount();
- for (int i = 1; i <= numChildren; ++i) {
- const QRect childRect = interface->rect(i);
+ for (int i = 0; i < numChildren; ++i) {
+ QAccessibleInterface *childIface = interface->child(i);
+ const QRect childRect = childIface->rect();
QVERIFY(childRect.isValid());
+ delete childIface;
}
delete doubleSpinBox;
@@ -1724,7 +1730,7 @@ void tst_QAccessibility::textEditTest()
edit.show();
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&edit);
- QCOMPARE(iface->text(QAccessible::Value, 0), text);
+ QCOMPARE(iface->text(QAccessible::Value), text);
QCOMPARE(iface->textInterface()->textAtOffset(8, QAccessible2::WordBoundary, &startOffset, &endOffset), QString("world"));
QCOMPARE(startOffset, 6);
QCOMPARE(endOffset, 11);
@@ -1751,7 +1757,7 @@ void tst_QAccessibility::textBrowserTest()
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&textBrowser);
QVERIFY(iface);
QCOMPARE(iface->role(), QAccessible::StaticText);
- QCOMPARE(iface->text(QAccessible::Value, 0), text);
+ QCOMPARE(iface->text(QAccessible::Value), text);
int startOffset;
int endOffset;
QCOMPARE(iface->textInterface()->textAtOffset(8, QAccessible2::WordBoundary, &startOffset, &endOffset), QString("world"));
@@ -1860,15 +1866,11 @@ void tst_QAccessibility::mdiSubWindowTest()
QCOMPARE(interface->childCount(), 1);
// setText / text
- QCOMPARE(interface->text(QAccessible::Name, 0), QString());
- QCOMPARE(interface->text(QAccessible::Name, 1), QString());
+ QCOMPARE(interface->text(QAccessible::Name), QString());
testWindow->setWindowTitle(QLatin1String("ReplaceMe"));
- QCOMPARE(interface->text(QAccessible::Name, 0), QLatin1String("ReplaceMe"));
- QCOMPARE(interface->text(QAccessible::Name, 1), QLatin1String("ReplaceMe"));
- interface->setText(QAccessible::Name, 0, QLatin1String("TitleSetOnWindow"));
- QCOMPARE(interface->text(QAccessible::Name, 0), QLatin1String("TitleSetOnWindow"));
- interface->setText(QAccessible::Name, 1, QLatin1String("TitleSetOnChild"));
- QCOMPARE(interface->text(QAccessible::Name, 0), QLatin1String("TitleSetOnChild"));
+ QCOMPARE(interface->text(QAccessible::Name), QLatin1String("ReplaceMe"));
+ interface->setText(QAccessible::Name, QLatin1String("TitleSetOnWindow"));
+ QCOMPARE(interface->text(QAccessible::Name), QLatin1String("TitleSetOnWindow"));
mdiArea.setActiveSubWindow(testWindow);
@@ -1919,17 +1921,17 @@ void tst_QAccessibility::mdiSubWindowTest()
QCOMPARE(interface->rect(), QRect(globalPos, testWindow->size()));
testWindow->hide();
QCOMPARE(interface->rect(), QRect());
- QCOMPARE(interface->rect(1), QRect());
+ QCOMPARE(childRect(interface), QRect());
testWindow->showMinimized();
- QCOMPARE(interface->rect(1), QRect());
+ QCOMPARE(childRect(interface), QRect());
testWindow->showNormal();
testWindow->widget()->hide();
- QCOMPARE(interface->rect(1), QRect());
+ QCOMPARE(childRect(interface), QRect());
testWindow->widget()->show();
const QRect widgetGeometry = testWindow->contentsRect();
const QPoint globalWidgetPos = QPoint(globalPos.x() + widgetGeometry.x(),
globalPos.y() + widgetGeometry.y());
- QCOMPARE(interface->rect(1), QRect(globalWidgetPos, widgetGeometry.size()));
+ QCOMPARE(childRect(interface), QRect(globalWidgetPos, widgetGeometry.size()));
// childAt
QCOMPARE(interface->childAt(-10, 0), -1);
@@ -1962,19 +1964,19 @@ void tst_QAccessibility::lineEditTest()
le->setText(secret);
le->setEchoMode(QLineEdit::Normal);
QVERIFY(!(iface->state() & QAccessible::Protected));
- QCOMPARE(iface->text(QAccessible::Value, 0), secret);
+ QCOMPARE(iface->text(QAccessible::Value), secret);
le->setEchoMode(QLineEdit::NoEcho);
QVERIFY(iface->state() & QAccessible::Protected);
- QVERIFY(iface->text(QAccessible::Value, 0).isEmpty());
+ QVERIFY(iface->text(QAccessible::Value).isEmpty());
le->setEchoMode(QLineEdit::Password);
QVERIFY(iface->state() & QAccessible::Protected);
- QVERIFY(iface->text(QAccessible::Value, 0).isEmpty());
+ QVERIFY(iface->text(QAccessible::Value).isEmpty());
le->setEchoMode(QLineEdit::PasswordEchoOnEdit);
QVERIFY(iface->state() & QAccessible::Protected);
- QVERIFY(iface->text(QAccessible::Value, 0).isEmpty());
+ QVERIFY(iface->text(QAccessible::Value).isEmpty());
le->setEchoMode(QLineEdit::Normal);
QVERIFY(!(iface->state() & QAccessible::Protected));
- QCOMPARE(iface->text(QAccessible::Value, 0), secret);
+ QCOMPARE(iface->text(QAccessible::Value), secret);
QWidget *toplevel = new QWidget;
le->setParent(toplevel);
@@ -1999,7 +2001,7 @@ void tst_QAccessibility::lineEditTest()
le->setText(QLatin1String("500"));
le->setValidator(new QIntValidator());
- iface->setText(QAccessible::Value, 0, QLatin1String("This text is not a number"));
+ iface->setText(QAccessible::Value, QLatin1String("This text is not a number"));
QCOMPARE(le->text(), QLatin1String("500"));
delete iface;
@@ -2141,13 +2143,12 @@ void tst_QAccessibility::dialogButtonBoxTest()
QApplication::processEvents();
QCOMPARE(iface->childCount(), 3);
QCOMPARE(iface->role(), QAccessible::Grouping);
- QCOMPARE(iface->role(1), QAccessible::PushButton);
- QCOMPARE(iface->role(2), QAccessible::PushButton);
- QCOMPARE(iface->role(3), QAccessible::PushButton);
QStringList actualOrder;
QAccessibleInterface *child;
QAccessibleInterface *leftmost;
child = iface->child(0);
+ QCOMPARE(child->role(), QAccessible::PushButton);
+
// first find the leftmost button
while (child->navigate(QAccessible::Left, 1, &leftmost) != -1) {
delete child;
@@ -2158,7 +2159,7 @@ void tst_QAccessibility::dialogButtonBoxTest()
// then traverse from left to right to find the correct order of the buttons
int right = 0;
while (right != -1) {
- actualOrder << leftmost->text(QAccessible::Name, 0);
+ actualOrder << leftmost->text(QAccessible::Name);
right = leftmost->navigate(QAccessible::Right, 1, &child);
delete leftmost;
leftmost = child;
@@ -2219,7 +2220,7 @@ void tst_QAccessibility::dialogButtonBoxTest()
actualOrder.clear();
int right = 0;
while (right != -1) {
- actualOrder << other->text(QAccessible::Name, 0);
+ actualOrder << other->text(QAccessible::Name);
right = other->navigate(QAccessible::Down, 1, &child);
delete other;
other = child;
@@ -2252,7 +2253,7 @@ void tst_QAccessibility::dialTest()
QVERIFY(interface);
QCOMPARE(interface->childCount(), 0);
- QCOMPARE(interface->text(QAccessible::Value, 0), QString::number(dial.value()));
+ QCOMPARE(interface->text(QAccessible::Value), QString::number(dial.value()));
QCOMPARE(interface->rect(), dial.geometry());
QAccessibleValueInterface *valueIface = interface->valueInterface();
@@ -2459,345 +2460,8 @@ void tst_QAccessibility::scrollAreaTest()
QTestAccessibility::clearEvents();
}
-void tst_QAccessibility::listViewTest()
-{
-#if defined(Q_OS_UNIX)
- QSKIP( "Accessible table1 interface is no longer supported on X11.");
-#else
- {
- QListView listView;
- QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&listView);
- QVERIFY(iface);
- QCOMPARE(iface->childCount(), 1);
- delete iface;
- }
- {
- QListWidget listView;
- listView.addItem(tr("A"));
- listView.addItem(tr("B"));
- listView.addItem(tr("C"));
- listView.resize(400,400);
- listView.show();
- QTest::qWait(1); // Need this for indexOfchild to work.
-
- QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&listView);
- QCOMPARE((int)iface->role(), (int)QAccessible::Client);
- QCOMPARE((int)iface->role(1), (int)QAccessible::List);
- QCOMPARE(iface->childCount(), 1);
- QAccessibleInterface *child;
- iface->navigate(QAccessible::Child, 1, &child);
- delete iface;
- iface = child;
- QCOMPARE(iface->text(QAccessible::Name, 1), QString("A"));
- QCOMPARE(iface->text(QAccessible::Name, 2), QString("B"));
- QCOMPARE(iface->text(QAccessible::Name, 3), QString("C"));
-
- QCOMPARE(iface->childCount(), 3);
-
- QAccessibleInterface *childA = 0;
- QCOMPARE(iface->navigate(QAccessible::Child, 1, &childA), 0);
- QVERIFY(childA);
- QCOMPARE(iface->indexOfChild(childA), 1);
- QCOMPARE(childA->text(QAccessible::Name, 1), QString("A"));
- delete childA;
-
- QAccessibleInterface *childB = 0;
- QCOMPARE(iface->navigate(QAccessible::Child, 2, &childB), 0);
- QVERIFY(childB);
- QCOMPARE(iface->indexOfChild(childB), 2);
- QCOMPARE(childB->text(QAccessible::Name, 1), QString("B"));
- delete childB;
-
- QAccessibleInterface *childC = 0;
- QCOMPARE(iface->navigate(QAccessible::Child, 3, &childC), 0);
- QVERIFY(childC);
- QCOMPARE(iface->indexOfChild(childC), 3);
- QCOMPARE(childC->text(QAccessible::Name, 1), QString("C"));
- delete childC;
- QTestAccessibility::clearEvents();
-
- // Check for events
- QTest::mouseClick(listView.viewport(), Qt::LeftButton, 0, listView.visualItemRect(listView.item(1)).center());
- QTest::mouseClick(listView.viewport(), Qt::LeftButton, 0, listView.visualItemRect(listView.item(2)).center());
- QVERIFY(QTestAccessibility::events().contains(QTestAccessibilityEvent(listView.viewport(), 2, QAccessible::Selection)));
- QVERIFY(QTestAccessibility::events().contains(QTestAccessibilityEvent(listView.viewport(), 3, QAccessible::Selection)));
- delete iface;
- }
- QTestAccessibility::clearEvents();
-#endif
-}
-
-void tst_QAccessibility::treeWidgetTest()
-{
-#if defined(Q_OS_UNIX)
- QSKIP( "Accessible table1 interface is no longer supported on X11.");
-#else
- QWidget *w = new QWidget;
- QTreeWidget *tree = new QTreeWidget(w);
- QHBoxLayout *l = new QHBoxLayout(w);
- l->addWidget(tree);
- for (int i = 0; i < 10; ++i) {
- QStringList strings = QStringList() << QString::fromAscii("row: %1").arg(i)
- << QString("column 1") << QString("column 2");
-
- tree->addTopLevelItem(new QTreeWidgetItem(strings));
- }
- w->show();
-
- QAccessibleInterface *acc = QAccessible::queryAccessibleInterface(tree);
- QAccessibleInterface *accViewport = 0;
- int entry = acc->navigate(QAccessible::Child, 1, &accViewport);
- QVERIFY(accViewport);
- QCOMPARE(entry, 0);
- QAccessibleInterface *accTreeItem = 0;
- entry = accViewport->navigate(QAccessible::Child, 1, &accTreeItem);
- QCOMPARE(entry, 0);
-
- QAccessibleInterface *accTreeItem2 = 0;
- entry = accTreeItem->navigate(QAccessible::Sibling, 3, &accTreeItem2);
- QCOMPARE(entry, 0);
- QCOMPARE(accTreeItem2->text(QAccessible::Name, 0), QLatin1String("row: 1"));
-
- // test selected/focused state
- QItemSelectionModel *selModel = tree->selectionModel();
- QVERIFY(selModel);
- selModel->select(QItemSelection(tree->model()->index(0, 0), tree->model()->index(3, 0)), QItemSelectionModel::Select);
- selModel->setCurrentIndex(tree->model()->index(1, 0), QItemSelectionModel::Current);
-
- for (int i = 1; i < 10 ; ++i) {
- QAccessible::State expected;
- if (i <= 5 && i >= 2)
- expected = QAccessible::Selected;
- if (i == 3)
- expected |= QAccessible::Focused;
-
- QCOMPARE(accViewport->state(i) & (QAccessible::Focused | QAccessible::Selected), expected);
- }
-
- // Test sanity of its navigation functions
- QCOMPARE(verifyHierarchy(acc), 0);
-
- delete accTreeItem2;
- delete accTreeItem;
- delete accViewport;
- delete acc;
- delete w;
-
- QTestAccessibility::clearEvents();
-#endif
-}
-
-void tst_QAccessibility::tableWidgetTest()
-{
-#if defined(Q_OS_UNIX)
- QSKIP( "Accessible table1 interface is no longer supported on X11.");
-#else
- {
- QWidget *topLevel = new QWidget;
- QTableWidget *w = new QTableWidget(8,4,topLevel);
- for (int r = 0; r < 8; ++r) {
- for (int c = 0; c < 4; ++c) {
- w->setItem(r, c, new QTableWidgetItem(tr("%1,%2").arg(c).arg(r)));
- }
- }
- w->resize(100, 100);
- topLevel->show();
-
- QAccessibleInterface *client = QAccessible::queryAccessibleInterface(w);
- QCOMPARE(client->role(), QAccessible::Client);
- QCOMPARE(client->childCount(), 3);
- QAccessibleInterface *view = 0;
- view = client->child(0);
- QCOMPARE(view->role(), QAccessible::Table);
- QAccessibleInterface *ifRow;
- ifRow = view->child(1);
- QCOMPARE(ifRow->role(), QAccessible::Row);
- QAccessibleInterface *item;
- int entry = ifRow->navigate(QAccessible::Child, 1, &item);
- QCOMPARE(entry, 1);
- QCOMPARE(item , (QAccessibleInterface*)0);
- QCOMPARE(ifRow->text(QAccessible::Name, 2), QLatin1String("0,0"));
- QCOMPARE(ifRow->text(QAccessible::Name, 3), QLatin1String("1,0"));
-
- QCOMPARE(verifyHierarchy(client), 0);
-
- delete ifRow;
- delete view;
- delete client;
- delete w;
- delete topLevel;
- }
- QTestAccessibility::clearEvents();
-#endif
-}
-
-class QtTestTableModel: public QAbstractTableModel
-{
- Q_OBJECT
-
-signals:
- void invalidIndexEncountered() const;
-
-public:
- QtTestTableModel(int rows = 0, int columns = 0, QObject *parent = 0)
- : QAbstractTableModel(parent),
- row_count(rows),
- column_count(columns) {}
-
- int rowCount(const QModelIndex& = QModelIndex()) const { return row_count; }
- int columnCount(const QModelIndex& = QModelIndex()) const { return column_count; }
-
- QVariant data(const QModelIndex &idx, int role) const
- {
- if (!idx.isValid() || idx.row() >= row_count || idx.column() >= column_count) {
- qWarning() << "Invalid modelIndex [%d,%d,%p]" << idx;
- emit invalidIndexEncountered();
- return QVariant();
- }
-
- if (role == Qt::DisplayRole || role == Qt::EditRole)
- return QString("[%1,%2,%3]").arg(idx.row()).arg(idx.column()).arg(0);
-
- return QVariant();
- }
-
- void removeLastRow()
- {
- beginRemoveRows(QModelIndex(), row_count - 1, row_count - 1);
- --row_count;
- endRemoveRows();
- }
-
- void removeAllRows()
- {
- beginRemoveRows(QModelIndex(), 0, row_count - 1);
- row_count = 0;
- endRemoveRows();
- }
-
- void removeLastColumn()
- {
- beginRemoveColumns(QModelIndex(), column_count - 1, column_count - 1);
- --column_count;
- endRemoveColumns();
- }
-
- void removeAllColumns()
- {
- beginRemoveColumns(QModelIndex(), 0, column_count - 1);
- column_count = 0;
- endRemoveColumns();
- }
-
- void reset()
- {
- QAbstractTableModel::reset();
- }
-
- int row_count;
- int column_count;
-};
-
-class QtTestDelegate : public QItemDelegate
-{
-public:
- QtTestDelegate(QWidget *parent = 0) : QItemDelegate(parent) {}
-
- virtual QSize sizeHint(const QStyleOptionViewItem &/*option*/, const QModelIndex &/*index*/) const
- {
- return QSize(100,50);
- }
-};
-
-void tst_QAccessibility::tableViewTest()
-{
-#if defined(Q_OS_UNIX)
- QSKIP( "Accessible table1 interface is no longer supported on X11.");
-#else
- {
- QtTestTableModel *model = new QtTestTableModel(3, 4);
- QTableView *w = new QTableView();
- w->setModel(model);
- w->setItemDelegate(new QtTestDelegate(w));
- w->resize(450,200);
- w->resizeColumnsToContents();
- w->resizeRowsToContents();
- w->show();
-
- QAccessibleInterface *client = QAccessible::queryAccessibleInterface(w);
- QAccessibleInterface *table2;
- client->navigate(QAccessible::Child, 1, &table2);
- QVERIFY(table2);
- QCOMPARE(table2->role(1), QAccessible::Row);
- QAccessibleInterface *toprow = 0;
- table2->navigate(QAccessible::Child, 1, &toprow);
- QVERIFY(toprow);
- QCOMPARE(toprow->role(1), QAccessible::RowHeader);
- QCOMPARE(toprow->role(2), QAccessible::ColumnHeader);
- delete toprow;
-
- // call childAt() for each child until we reach the bottom,
- // and do it for each row in the table
- for (int y = 1; y < 5; ++y) { // this includes the special header
- for (int x = 1; x < 6; ++x) {
- QCOMPARE(client->role(), QAccessible::Client);
- QRect globalRect = client->rect();
- QVERIFY(globalRect.isValid());
- // make sure we don't hit the vertical header #####
- QPoint p = globalRect.topLeft() + QPoint(8, 8);
- p.ry() += 50 * (y - 1);
- p.rx() += 100 * (x - 1);
- int index = client->childAt(p.x(), p.y());
- QCOMPARE(index, 1);
- QCOMPARE(client->role(index), QAccessible::Table);
-
- // navigate to table/viewport
- QAccessibleInterface *table;
- client->navigate(QAccessible::Child, index, &table);
- QVERIFY(table);
- index = table->childAt(p.x(), p.y());
- QCOMPARE(index, y);
- QCOMPARE(table->role(index), QAccessible::Row);
- QAccessibleInterface *row;
- QCOMPARE(table->role(1), QAccessible::Row);
-
- // navigate to the row
- table->navigate(QAccessible::Child, index, &row);
- QVERIFY(row);
- QCOMPARE(row->role(1), QAccessible::RowHeader);
- index = row->childAt(p.x(), p.y());
- QVERIFY(index > 0);
- if (x == 1 && y == 1) {
- QCOMPARE(row->role(index), QAccessible::RowHeader);
- QCOMPARE(row->text(QAccessible::Name, index), QLatin1String(""));
- } else if (x > 1 && y > 1) {
- QCOMPARE(row->role(index), QAccessible::Cell);
- QCOMPARE(row->text(QAccessible::Name, index), QString::fromAscii("[%1,%2,0]").arg(y - 2).arg(x - 2));
- } else if (x == 1) {
- QCOMPARE(row->role(index), QAccessible::RowHeader);
- QCOMPARE(row->text(QAccessible::Name, index), QString::fromAscii("%1").arg(y - 1));
- } else if (y == 1) {
- QCOMPARE(row->role(index), QAccessible::ColumnHeader);
- QCOMPARE(row->text(QAccessible::Name, index), QString::fromAscii("%1").arg(x - 1));
- }
- delete table;
- delete row;
- }
- }
- delete table2;
- delete client;
- delete w;
- delete model;
- }
- QTestAccessibility::clearEvents();
-#endif
-}
-
void tst_QAccessibility::table2ListTest()
{
-#if !defined(Q_OS_UNIX)
- QSKIP( "Accessible table2 interface is currently only supported on X11.");
-#else
QListWidget *listView = new QListWidget;
listView->addItem("Oslo");
listView->addItem("Berlin");
@@ -2818,7 +2482,7 @@ void tst_QAccessibility::table2ListTest()
child1 = iface->child(0);
QVERIFY(child1);
QCOMPARE(iface->indexOfChild(child1), 1);
- QCOMPARE(child1->text(QAccessible::Name, 0), QString("Oslo"));
+ QCOMPARE(child1->text(QAccessible::Name), QString("Oslo"));
QCOMPARE(child1->role(), QAccessible::ListItem);
delete child1;
@@ -2826,14 +2490,14 @@ void tst_QAccessibility::table2ListTest()
child2 = iface->child(1);
QVERIFY(child2);
QCOMPARE(iface->indexOfChild(child2), 2);
- QCOMPARE(child2->text(QAccessible::Name, 0), QString("Berlin"));
+ QCOMPARE(child2->text(QAccessible::Name), QString("Berlin"));
delete child2;
QAccessibleInterface *child3 = 0;
child3 = iface->child(2);
QVERIFY(child3);
QCOMPARE(iface->indexOfChild(child3), 3);
- QCOMPARE(child3->text(QAccessible::Name, 0), QString("Brisbane"));
+ QCOMPARE(child3->text(QAccessible::Name), QString("Brisbane"));
delete child3;
QTestAccessibility::clearEvents();
@@ -2855,10 +2519,10 @@ void tst_QAccessibility::table2ListTest()
QCOMPARE(table2->rowCount(), 4);
QAccessibleTable2CellInterface *cell1;
QVERIFY(cell1 = table2->cellAt(0,0));
- QCOMPARE(cell1->text(QAccessible::Name, 0), QString("Oslo"));
+ QCOMPARE(cell1->text(QAccessible::Name), QString("Oslo"));
QAccessibleTable2CellInterface *cell4;
QVERIFY(cell4 = table2->cellAt(3,0));
- QCOMPARE(cell4->text(QAccessible::Name, 0), QString("Munich"));
+ QCOMPARE(cell4->text(QAccessible::Name), QString("Munich"));
QCOMPARE(cell4->role(), QAccessible::ListItem);
QCOMPARE(cell4->rowIndex(), 3);
QCOMPARE(cell4->columnIndex(), 0);
@@ -2869,14 +2533,10 @@ void tst_QAccessibility::table2ListTest()
delete iface;
delete listView;
QTestAccessibility::clearEvents();
-#endif
}
void tst_QAccessibility::table2TreeTest()
{
-#if !defined(Q_OS_UNIX)
- QSKIP( "Accessible table2 interface is currently only supported on X11.");
-#else
QTreeWidget *treeView = new QTreeWidget;
treeView->setColumnCount(2);
QTreeWidgetItem *header = new QTreeWidgetItem;
@@ -2924,7 +2584,7 @@ void tst_QAccessibility::table2TreeTest()
header1 = iface->child(0);
QVERIFY(header1);
QCOMPARE(iface->indexOfChild(header1), 1);
- QCOMPARE(header1->text(QAccessible::Name, 0), QString("Artist"));
+ QCOMPARE(header1->text(QAccessible::Name), QString("Artist"));
QCOMPARE(header1->role(), QAccessible::ColumnHeader);
delete header1;
@@ -2932,7 +2592,7 @@ void tst_QAccessibility::table2TreeTest()
child1 = iface->child(2);
QVERIFY(child1);
QCOMPARE(iface->indexOfChild(child1), 3);
- QCOMPARE(child1->text(QAccessible::Name, 0), QString("Spain"));
+ QCOMPARE(child1->text(QAccessible::Name), QString("Spain"));
QCOMPARE(child1->role(), QAccessible::TreeItem);
QVERIFY(!(child1->state() & QAccessible::Expanded));
delete child1;
@@ -2941,7 +2601,7 @@ void tst_QAccessibility::table2TreeTest()
child2 = iface->child(4);
QVERIFY(child2);
QCOMPARE(iface->indexOfChild(child2), 5);
- QCOMPARE(child2->text(QAccessible::Name, 0), QString("Austria"));
+ QCOMPARE(child2->text(QAccessible::Name), QString("Austria"));
delete child2;
QTestAccessibility::clearEvents();
@@ -2953,10 +2613,10 @@ void tst_QAccessibility::table2TreeTest()
QCOMPARE(table2->rowCount(), 2);
QAccessibleTable2CellInterface *cell1;
QVERIFY(cell1 = table2->cellAt(0,0));
- QCOMPARE(cell1->text(QAccessible::Name, 0), QString("Spain"));
+ QCOMPARE(cell1->text(QAccessible::Name), QString("Spain"));
QAccessibleTable2CellInterface *cell2;
QVERIFY(cell2 = table2->cellAt(1,0));
- QCOMPARE(cell2->text(QAccessible::Name, 0), QString("Austria"));
+ QCOMPARE(cell2->text(QAccessible::Name), QString("Austria"));
QCOMPARE(cell2->role(), QAccessible::TreeItem);
QCOMPARE(cell2->rowIndex(), 1);
QCOMPARE(cell2->columnIndex(), 0);
@@ -2976,11 +2636,11 @@ void tst_QAccessibility::table2TreeTest()
QCOMPARE(table2->columnCount(), 2);
QCOMPARE(table2->rowCount(), 5);
cell1 = table2->cellAt(1,0);
- QCOMPARE(cell1->text(QAccessible::Name, 0), QString("Picasso"));
+ QCOMPARE(cell1->text(QAccessible::Name), QString("Picasso"));
QCOMPARE(iface->indexOfChild(cell1), 5); // 1 based + 2 header + 2 for root item
cell2 = table2->cellAt(4,0);
- QCOMPARE(cell2->text(QAccessible::Name, 0), QString("Klimt"));
+ QCOMPARE(cell2->text(QAccessible::Name), QString("Klimt"));
QCOMPARE(cell2->role(), QAccessible::TreeItem);
QCOMPARE(cell2->rowIndex(), 4);
QCOMPARE(cell2->columnIndex(), 0);
@@ -2992,14 +2652,10 @@ void tst_QAccessibility::table2TreeTest()
delete iface;
QTestAccessibility::clearEvents();
-#endif
}
void tst_QAccessibility::table2TableTest()
{
-#if !defined(Q_OS_UNIX)
- QSKIP( "Accessible table2 interface is currently only supported on X11.");
-#else
QTableWidget *tableView = new QTableWidget(3, 3);
tableView->setColumnCount(3);
QStringList hHeader;
@@ -3038,7 +2694,7 @@ void tst_QAccessibility::table2TableTest()
QAccessibleInterface *child1 = iface->child(2);
QVERIFY(child1);
QCOMPARE(iface->indexOfChild(child1), 3);
- QCOMPARE(child1->text(QAccessible::Name, 0), QString("h2"));
+ QCOMPARE(child1->text(QAccessible::Name), QString("h2"));
QCOMPARE(child1->role(), QAccessible::ColumnHeader);
QVERIFY(!(child1->state() & QAccessible::Expanded));
delete child1;
@@ -3046,7 +2702,7 @@ void tst_QAccessibility::table2TableTest()
QAccessibleInterface *child2 = iface->child(10);
QVERIFY(child2);
QCOMPARE(iface->indexOfChild(child2), 11);
- QCOMPARE(child2->text(QAccessible::Name, 0), QString("1.1"));
+ QCOMPARE(child2->text(QAccessible::Name), QString("1.1"));
QAccessibleTable2CellInterface *cell2Iface = static_cast<QAccessibleTable2CellInterface*>(child2);
QCOMPARE(cell2Iface->rowIndex(), 1);
QCOMPARE(cell2Iface->columnIndex(), 1);
@@ -3054,7 +2710,7 @@ void tst_QAccessibility::table2TableTest()
QAccessibleInterface *child3 = iface->child(11);
QCOMPARE(iface->indexOfChild(child3), 12);
- QCOMPARE(child3->text(QAccessible::Name, 0), QString("1.2"));
+ QCOMPARE(child3->text(QAccessible::Name), QString("1.2"));
delete child3;
QTestAccessibility::clearEvents();
@@ -3066,12 +2722,12 @@ void tst_QAccessibility::table2TableTest()
QCOMPARE(table2->rowCount(), 3);
QAccessibleTable2CellInterface *cell1;
QVERIFY(cell1 = table2->cellAt(0,0));
- QCOMPARE(cell1->text(QAccessible::Name, 0), QString("0.0"));
+ QCOMPARE(cell1->text(QAccessible::Name), QString("0.0"));
QCOMPARE(iface->indexOfChild(cell1), 6);
QAccessibleTable2CellInterface *cell2;
QVERIFY(cell2 = table2->cellAt(0,1));
- QCOMPARE(cell2->text(QAccessible::Name, 0), QString("0.1"));
+ QCOMPARE(cell2->text(QAccessible::Name), QString("0.1"));
QCOMPARE(cell2->role(), QAccessible::Cell);
QCOMPARE(cell2->rowIndex(), 0);
QCOMPARE(cell2->columnIndex(), 1);
@@ -3080,7 +2736,7 @@ void tst_QAccessibility::table2TableTest()
QAccessibleTable2CellInterface *cell3;
QVERIFY(cell3 = table2->cellAt(1,2));
- QCOMPARE(cell3->text(QAccessible::Name, 0), QString("1.2"));
+ QCOMPARE(cell3->text(QAccessible::Name), QString("1.2"));
QCOMPARE(cell3->role(), QAccessible::Cell);
QCOMPARE(cell3->rowIndex(), 1);
QCOMPARE(cell3->columnIndex(), 2);
@@ -3099,7 +2755,6 @@ void tst_QAccessibility::table2TableTest()
delete tableView;
QTestAccessibility::clearEvents();
-#endif
}
void tst_QAccessibility::calendarWidgetTest()
@@ -3112,7 +2767,6 @@ void tst_QAccessibility::calendarWidgetTest()
QVERIFY(interface);
QCOMPARE(interface->role(), QAccessible::Table);
QVERIFY(!interface->rect().isValid());
- QVERIFY(!interface->rect(1).isValid());
QCOMPARE(interface->childAt(200, 200), -1);
calendarWidget.resize(400, 300);
@@ -3228,9 +2882,9 @@ void tst_QAccessibility::dockWidgetTest()
// 4 children: menu bar, dock1, dock2, and central widget
QCOMPARE(accMainWindow->childCount(), 4);
QAccessibleInterface *accDock1 = 0;
- for (int i = 1; i <= 4; ++i) {
- if (accMainWindow->role(i) == QAccessible::Window) {
- accDock1 = accMainWindow->child(i-1);
+ for (int i = 0; i < 4; ++i) {
+ accDock1 = accMainWindow->child(i);
+ if (accMainWindow->role() == QAccessible::Window) {
if (accDock1 && qobject_cast<QDockWidget*>(accDock1->object()) == dock1) {
break;
} else {
@@ -3240,8 +2894,11 @@ void tst_QAccessibility::dockWidgetTest()
}
QVERIFY(accDock1);
QCOMPARE(accDock1->role(), QAccessible::Window);
- QCOMPARE(accDock1->role(1), QAccessible::TitleBar);
- QVERIFY(accDock1->rect().contains(accDock1->rect(1)));
+
+ QAccessibleInterface *dock1TitleBar = accDock1->child(0);
+ QCOMPARE(dock1TitleBar->role(), QAccessible::TitleBar);
+ QVERIFY(accDock1->rect().contains(dock1TitleBar->rect()));
+ delete dock1TitleBar;
QPoint globalPos = dock1->mapToGlobal(QPoint(0,0));
globalPos.rx()+=5; //### query style
@@ -3347,7 +3004,7 @@ void tst_QAccessibility::labelTest()
QAccessibleInterface *acc_label = QAccessible::queryAccessibleInterface(label);
QVERIFY(acc_label);
- QCOMPARE(acc_label->text(QAccessible::Name, 0), text);
+ QCOMPARE(acc_label->text(QAccessible::Name), text);
delete acc_label;
delete label;
@@ -3388,24 +3045,24 @@ void tst_QAccessibility::accelerators()
window->show();
QAccessibleInterface *accLineEdit = QAccessible::queryAccessibleInterface(le);
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("L"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("L"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("L"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("L"));
label->setText(tr("Q &"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QString());
label->setText(tr("Q &&"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QString());
label->setText(tr("Q && A"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QString());
label->setText(tr("Q &&&A"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("A"));
label->setText(tr("Q &&A"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QString());
#if !defined(QT_NO_DEBUG) && !defined(Q_WS_MAC)
QTest::ignoreMessage(QtWarningMsg, "QKeySequence::mnemonic: \"Q &A&B\" contains multiple occurrences of '&'");
#endif
label->setText(tr("Q &A&B"));
- QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QKeySequence(Qt::ALT).toString(QKeySequence::NativeText) + QLatin1String("A"));
#if defined(Q_OS_UNIX)
QCoreApplication::processEvents();