summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-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
14 files changed, 370 insertions, 772 deletions
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()) {