From beb72b2fbf17a20b4a9d51d75d79f9c3c69bb357 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sat, 22 Oct 2011 22:38:14 +0200 Subject: Remove virtual child integers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/gui/accessible/qaccessible.cpp | 6 +- src/gui/accessible/qaccessible.h | 24 +- src/gui/accessible/qaccessible2.cpp | 18 +- src/gui/accessible/qaccessibleobject.cpp | 20 +- src/gui/accessible/qaccessibleobject.h | 12 +- src/plugins/accessible/widgets/complexwidgets.cpp | 30 +- src/plugins/accessible/widgets/complexwidgets.h | 6 +- src/plugins/accessible/widgets/itemviews.cpp | 130 ++----- src/plugins/accessible/widgets/itemviews.h | 68 ++-- src/plugins/accessible/widgets/main.cpp | 11 - src/plugins/accessible/widgets/qaccessiblemenu.cpp | 96 +---- src/plugins/accessible/widgets/qaccessiblemenu.h | 37 +- .../accessible/widgets/qaccessiblewidgets.cpp | 427 ++++++--------------- .../accessible/widgets/qaccessiblewidgets.h | 57 ++- src/plugins/accessible/widgets/rangecontrols.cpp | 61 +-- src/plugins/accessible/widgets/rangecontrols.h | 18 +- src/plugins/accessible/widgets/simplewidgets.cpp | 64 +-- src/plugins/accessible/widgets/simplewidgets.h | 26 +- .../platforms/windows/qwindowsaccessibility.cpp | 111 ++++-- src/widgets/accessible/qaccessiblewidget.cpp | 90 ++--- src/widgets/accessible/qaccessiblewidget.h | 12 +- src/widgets/itemviews/qlistview.cpp | 12 - src/widgets/itemviews/qtreeview.cpp | 14 - src/widgets/itemviews/qtreeview.h | 2 +- src/widgets/kernel/qwidget.cpp | 2 - 25 files changed, 433 insertions(+), 921 deletions(-) (limited to 'src') 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 ¶ms) +QVariant QAccessibleInterface::invokeMethod(Method method, const QVariantList ¶ms) { 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 > 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 ¶ms = QVariantList()); + virtual QVariant invokeMethod(Method method, const QVariantList ¶ms = QVariantList()); inline QSet supportedMethods() { return qvariant_cast >(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 { @@ -225,6 +226,7 @@ private: bool atVP; }; +#endif #endif #ifndef QT_NO_TABBAR @@ -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 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(iface); return logicalIndex(cell->m_index); - } else if (iface->role(0) == QAccessible::ColumnHeader){ + } else if (iface->role() == QAccessible::ColumnHeader){ const QAccessibleTable2HeaderCell* cell = static_cast(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(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(iface); const QTreeView *treeView = qobject_cast(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(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(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(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 ¶ms); -#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 ¶ms); -#endif - // cell interface virtual int columnExtent() const; virtual QList 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 ¶ms); -#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(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(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(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(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(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 ¶ms) { switch (method) { @@ -290,7 +290,7 @@ QVariant QAccessibleTextEdit::invokeMethod(QAccessible::Method method, int, QSet set; set << ListSupportedMethods << SetCursorPosition << GetCursorPosition; return QVariant::fromValue(set | qvariant_cast >( - 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(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(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(object()); @@ -855,25 +789,6 @@ QAccessibleMdiArea::QAccessibleMdiArea(QWidget *widget) Q_ASSERT(qobject_cast(widget)); } -QAccessible::State QAccessibleMdiArea::state(int child) const -{ - if (child < 0) - return QAccessibleWidget::state(child); - if (child == 0) - return QAccessible::Normal; - QList 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(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(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(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(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(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(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(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(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(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(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 ¶ms); + QVariant invokeMethod(QAccessible::Method method, const QVariantList ¶ms); // 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 ¶ms); - 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 ¶ms); 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 ¶ms); + 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 ¶ms); 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 ¶ms); 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 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(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 ¶ms) -{ - switch (method) { - case ListSupportedMethods: { - QSet set; - set << ListSupportedMethods; - return QVariant::fromValue(set | qvariant_cast >( - 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(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(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(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(w)); } -QVariant QAccessibleAbstractSlider::invokeMethod(Method method, int child, const QVariantList ¶ms) -{ - switch (method) { - case ListSupportedMethods: { - QSet set; - set << ListSupportedMethods; - return QVariant::fromValue(set | qvariant_cast >( - 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 ¶ms); - - QVariant invokeMethod(Method method, int child, const QVariantList ¶ms); + 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 ¶ms); - 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 ¶ms); - // 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 ¶ms); + 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(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(object()); @@ -560,9 +542,8 @@ QLineEdit *QAccessibleLineEdit::lineEdit() const return qobject_cast(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 ¶ms) { - Q_ASSERT(child == 0); - switch (method) { case ListSupportedMethods: { QSet set; set << ListSupportedMethods << SetCursorPosition << GetCursorPosition; return QVariant::fromValue(set | qvariant_cast >( - 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 ¶ms); + 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 ¶ms); + QString text(Text t) const; + void setText(Text t, const QString &text); + State state() const; + QVariant invokeMethod(QAccessible::Method method, const QVariantList ¶ms); // 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 #include +#include #include #include #include @@ -277,6 +278,8 @@ void showDebug(const char* funcName, const QAccessibleInterface *iface) # define showDebug(f, iface) #endif +typedef QSharedPointer QAIPointer; + // This stuff is used for widgets/items with no window handle: typedef QMap > 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 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 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 ¶ms); // 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 ¤t, 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 ¤t, 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(event); - if (ev->child()) - return false; switch (ev->type()) { #ifndef QT_NO_TOOLTIP case QEvent::AccessibilityDescription: -- cgit v1.2.3