From 30ad53a0a6b1f6d5d50fe12777dc1045dec22803 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 9 Jan 2012 13:13:33 +0100 Subject: Make QAccessibleInterface::indexOfChild() 0-based. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Makes the code nicer and more consistent with the rest of the world. Change-Id: I5ba0ee39f5b0afd1a079a3cea9990d123955ed3f Reviewed-by: Jan-Arve Sæther --- src/plugins/accessible/widgets/complexwidgets.cpp | 13 +++++------ src/plugins/accessible/widgets/itemviews.cpp | 14 ++++++------ src/plugins/accessible/widgets/qaccessiblemenu.cpp | 23 +++++++------------ .../accessible/widgets/qaccessiblewidgets.cpp | 26 ++++++++-------------- .../platforms/cocoa/qcocoaaccessibilityelement.mm | 2 +- .../platforms/windows/qwindowsaccessibility.cpp | 4 ++-- 6 files changed, 33 insertions(+), 49 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/accessible/widgets/complexwidgets.cpp b/src/plugins/accessible/widgets/complexwidgets.cpp index f09c942170..94eb535791 100644 --- a/src/plugins/accessible/widgets/complexwidgets.cpp +++ b/src/plugins/accessible/widgets/complexwidgets.cpp @@ -187,11 +187,13 @@ QAccessibleInterface* QAccessibleTabBar::child(int index) const int QAccessibleTabBar::indexOfChild(const QAccessibleInterface *child) const { + // FIXME this looks broken + if (child->object() && child->object() == tabBar()->d_func()->leftB) - return tabBar()->count() + 1; // fixme - one based + return tabBar()->count(); if (child->object() && child->object() == tabBar()->d_func()->rightB) - return tabBar()->count() + 2; // fixme - one based - return 0; + return tabBar()->count() + 1; + return -1; } int QAccessibleTabBar::childCount() const @@ -404,10 +406,7 @@ int QAccessibleAbstractScrollArea::indexOfChild(const QAccessibleInterface *chil { if (!child || !child->object()) return -1; - int index = accessibleChildren().indexOf(qobject_cast(child->object())); - if (index >= 0) - return ++index; - return -1; + return accessibleChildren().indexOf(qobject_cast(child->object())); } bool QAccessibleAbstractScrollArea::isValid() const diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index ec575371db..df7713726b 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -393,15 +393,15 @@ int QAccessibleTable::indexOfChild(const QAccessibleInterface *iface) const Q_ASSERT(iface->role() != QAccessible::TreeItem); // should be handled by tree class if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) { const QAccessibleTableCell* cell = static_cast(iface); - return logicalIndex(cell->m_index); + return logicalIndex(cell->m_index) - 1; } else if (iface->role() == QAccessible::ColumnHeader){ const QAccessibleTableHeaderCell* cell = static_cast(iface); - return cell->index + (verticalHeader() ? 1 : 0) + 1; + return cell->index + (verticalHeader() ? 1 : 0); } else if (iface->role() == QAccessible::RowHeader){ const QAccessibleTableHeaderCell* cell = static_cast(iface); - return (cell->index+1) * (view->model()->rowCount()+1) + 1; + return (cell->index+1) * (view->model()->rowCount()+1); } else if (iface->role() == QAccessible::Pane) { - return 1; // corner button + return 0; // corner button } else { qWarning() << "WARNING QAccessibleTable::indexOfChild Fix my children..." << iface->role() << iface->text(QAccessible::Name); @@ -543,14 +543,14 @@ int QAccessibleTree::indexOfChild(const QAccessibleInterface *iface) const int row = treeView->d_func()->viewIndex(cell->m_index) + (horizontalHeader() ? 1 : 0); int column = cell->m_index.column(); - int index = row * view->model()->columnCount() + column + 1; + int index = row * view->model()->columnCount() + column; //qDebug() << "QAccessibleTree::indexOfChild r " << row << " c " << column << "index " << index; - Q_ASSERT(index > treeView->model()->columnCount()); + Q_ASSERT(index >= treeView->model()->columnCount()); return index; } else if (iface->role() == QAccessible::ColumnHeader){ const QAccessibleTableHeaderCell* cell = static_cast(iface); //qDebug() << "QAccessibleTree::indexOfChild header " << cell->index << "is: " << cell->index + 1; - return cell->index + 1; + return cell->index; } else { qWarning() << "WARNING QAccessibleTable::indexOfChild invalid child" << iface->role() << iface->text(QAccessible::Name); diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.cpp b/src/plugins/accessible/widgets/qaccessiblemenu.cpp index 9771f23881..e188db284f 100644 --- a/src/plugins/accessible/widgets/qaccessiblemenu.cpp +++ b/src/plugins/accessible/widgets/qaccessiblemenu.cpp @@ -113,14 +113,11 @@ QAccessibleInterface *QAccessibleMenu::parent() const int QAccessibleMenu::indexOfChild( const QAccessibleInterface *child) const { - int index = -1; QAccessible::Role r = child->role(); if ((r == QAccessible::MenuItem || r == QAccessible::Separator) && menu()) { - index = menu()->actions().indexOf(qobject_cast(child->object())); - if (index != -1) - ++index; + return menu()->actions().indexOf(qobject_cast(child->object())); } - return index; + return -1; } #ifndef QT_NO_MENUBAR @@ -149,14 +146,11 @@ QAccessibleInterface *QAccessibleMenuBar::child(int index) const int QAccessibleMenuBar::indexOfChild(const QAccessibleInterface *child) const { - int index = -1; QAccessible::Role r = child->role(); if ((r == QAccessible::MenuItem || r == QAccessible::Separator) && menuBar()) { - index = menuBar()->actions().indexOf(qobject_cast(child->object())); - if (index != -1) - ++index; + return menuBar()->actions().indexOf(qobject_cast(child->object())); } - return index; + return -1; } #endif // QT_NO_MENUBAR @@ -188,10 +182,8 @@ int QAccessibleMenuItem::childCount() const int QAccessibleMenuItem::indexOfChild(const QAccessibleInterface * child) const { - Q_ASSERT(child == 0); - if (child->role() == QAccessible::PopupMenu && child->object() == m_action->menu()) - return 1; - + if (child && child->role() == QAccessible::PopupMenu && child->object() == m_action->menu()) + return 0; return -1; } @@ -227,7 +219,8 @@ int QAccessibleMenuItem::navigate(QAccessible::RelationFlag relation, int entry, int index = parentIface->indexOfChild(this); if (index != -1) { index += (relation == QAccessible::Down ? +1 : -1); - *target = parentIface->child(index - 1); + if (index >= 0) + *target = parentIface->child(index); } } delete parentIface; diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp index 6598582e2a..a067adaaa8 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp @@ -727,10 +727,7 @@ int QAccessibleStackedWidget::indexOfChild(const QAccessibleInterface *child) co return -1; QWidget* widget = qobject_cast(child->object()); - int index = stackedWidget()->indexOf(widget); - if (index >= 0) // one based counting of children - return index + 1; - return -1; + return stackedWidget()->indexOf(widget); } QAccessibleInterface *QAccessibleStackedWidget::child(int index) const @@ -788,9 +785,7 @@ int QAccessibleMdiArea::indexOfChild(const QAccessibleInterface *child) const if (!child || !child->object() || mdiArea()->subWindowList().isEmpty()) return -1; if (QMdiSubWindow *window = qobject_cast(child->object())) { - int index = mdiArea()->subWindowList().indexOf(window); - if (index != -1) - return ++index; + return mdiArea()->subWindowList().indexOf(window); } return -1; } @@ -882,7 +877,7 @@ QAccessibleInterface *QAccessibleMdiSubWindow::child(int index) const int QAccessibleMdiSubWindow::indexOfChild(const QAccessibleInterface *child) const { if (child && child->object() && child->object() == mdiSubWindow()->widget()) - return 1; + return 0; return -1; } @@ -967,9 +962,7 @@ int QAccessibleWorkspace::indexOfChild(const QAccessibleInterface *child) const if (!child || !child->object() || workspace()->windowList().isEmpty()) return -1; if (QWidget *window = qobject_cast(child->object())) { - int index = workspace()->windowList().indexOf(window); - if (index != -1) - return ++index; + return workspace()->windowList().indexOf(window); } return -1; } @@ -1048,8 +1041,8 @@ int QAccessibleCalendarWidget::indexOfChild(const QAccessibleInterface *child) c if (!child || !child->object() || childCount() <= 0) return -1; if (qobject_cast(child->object())) - return childCount(); - return 1; + return childCount() - 1; // FIXME + return 0; } QAccessibleInterface *QAccessibleCalendarWidget::child(int index) const @@ -1135,9 +1128,9 @@ int QAccessibleDockWidget::indexOfChild(const QAccessibleInterface *child) const { if (child) { if (child->role() == QAccessible::TitleBar) { - return 1; + return 0; } else { - return 2; //### + return 1; // FIXME } } return -1; @@ -1414,8 +1407,7 @@ int QAccessibleMainWindow::childCount() const int QAccessibleMainWindow::indexOfChild(const QAccessibleInterface *iface) const { QList kids = childWidgets(mainWindow(), true); - int childIndex = kids.indexOf(static_cast(iface->object())); - return childIndex == -1 ? -1 : ++childIndex; + return kids.indexOf(static_cast(iface->object())); } QAccessibleInterface *QAccessibleMainWindow::childAt(int x, int y) const diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm index 1441a02d1e..deacf518af 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm @@ -232,7 +232,7 @@ static QAccessibleInterface *acast(void *ptr) // hit a child, forward to child accessible interface. int childIndex = acast(accessibleInterface)->indexOfChild(childInterface); - QCocoaAccessibleElement *accessibleElement = [QCocoaAccessibleElement elementWithIndex:childIndex -1 parent:self accessibleInterface: childInterface]; + QCocoaAccessibleElement *accessibleElement = [QCocoaAccessibleElement elementWithIndex:childIndex parent:self accessibleInterface: childInterface]; return [accessibleElement accessibilityHitTest:point]; } diff --git a/src/plugins/platforms/windows/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/qwindowsaccessibility.cpp index afd92701f7..82e65f66b5 100644 --- a/src/plugins/platforms/windows/qwindowsaccessibility.cpp +++ b/src/plugins/platforms/windows/qwindowsaccessibility.cpp @@ -676,8 +676,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT v if (parent) { int index = parent->indexOfChild(accessible); index += (navDir == NAVDIR_NEXT) ? 1 : -1; - if (index > 0 && index <= parent->childCount()) - acc = parent->child(index - 1); + if (index >= 0 && index < parent->childCount()) + acc = parent->child(index); delete parent; } } else { -- cgit v1.2.3