Do not include the treeview header if its hidden

Previously, accessibleTree->child(0) would return an interface for the
header even if it was hidden.

Also, the assertion was wrong since the index would be 0 if both row
and column were 0. The assertion was actually found while using the
project explorer of Qt Creator (2.7)

Change-Id: I9f3cc2c13b6887569d10c4e062a64552f898231a
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
bb10
Jan Arve Saether 2013-04-25 15:11:47 +02:00 committed by The Qt Project
parent 2e0575ce89
commit b9db3e4785
2 changed files with 8 additions and 1 deletions

View File

@ -120,6 +120,8 @@ QHeaderView *QAccessibleTable::horizontalHeader() const
#ifndef QT_NO_TREEVIEW
} else if (const QTreeView *tv = qobject_cast<const QTreeView*>(view())) {
header = tv->header();
if (header && header->isHidden())
header = 0;
#endif
}
return header;
@ -766,7 +768,6 @@ int QAccessibleTree::indexOfChild(const QAccessibleInterface *iface) const
int column = cell->m_index.column();
int index = row * view()->model()->columnCount() + column;
Q_ASSERT(index >= treeView->model()->columnCount());
return index;
} else if (iface->role() == QAccessible::ColumnHeader){
const QAccessibleTableHeaderCell* cell = static_cast<const QAccessibleTableHeaderCell*>(iface);

View File

@ -2600,6 +2600,12 @@ void tst_QAccessibility::treeTest()
QCOMPARE(iface->indexOfChild(child2), 4);
QCOMPARE(child2->text(QAccessible::Name), QString("Austria"));
treeView->setHeaderHidden(true);
QAccessibleInterface *accSpain = iface->child(0);
QCOMPARE(accSpain->role(), QAccessible::TreeItem);
QCOMPARE(iface->indexOfChild(accSpain), 0);
treeView->setHeaderHidden(false);
QTestAccessibility::clearEvents();
// table 2