summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2011-10-22 22:38:14 +0200
committerQt by Nokia <qt-info@nokia.com>2011-11-23 14:54:01 +0100
commitbeb72b2fbf17a20b4a9d51d75d79f9c3c69bb357 (patch)
treec972c0a408ea912faaa67d4508ba5d855a1cb582
parente739ca0071df28adf767d148ba5095d846e898f3 (diff)
Remove virtual child integers.
This makes the accessibility apis much simpler and less error prone. Disable the itemviews implementation that is in complex widgets. The itemviews will use the new code from itemviews.h/cpp everywhere now. QToolBox was broken before, now at least it simply exposes all its children. The children are the buttons (tabs of the toolbox) and their contents. Change-Id: I45e218f49f02aebbd678ddfe29f94c2a112a2125 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
-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();