summaryrefslogtreecommitdiffstats
path: root/src/widgets/accessible
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-12-13 09:36:26 +0100
committerLiang Qi <liang.qi@qt.io>2016-12-13 09:39:20 +0100
commit6755ec891a1740110c48895afd53d39e8370704a (patch)
tree982606f3bc582262e4b315a63f55ccb141fff97b /src/widgets/accessible
parent449204f8c0d6679ae0e58dbb8a30b8a86fbdb4ec (diff)
parent00c9ec63a552d040e851b561c11428fabf1a2b08 (diff)
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts: configure qmake/Makefile.unix.macos qmake/Makefile.unix.win32 qmake/generators/win32/msvc_vcproj.cpp src/3rdparty/pcre/qt_attribution.json src/corelib/io/qsettings.cpp src/corelib/kernel/qdeadlinetimer.cpp src/platformsupport/kmsconvenience/qkmsdevice.cpp src/platformsupport/kmsconvenience/qkmsdevice_p.h src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h tests/manual/qstorageinfo/printvolumes.cpp tools/configure/configureapp.cpp Change-Id: Ibaabcc8e965c44926f9fb018466e8b132b8df49e
Diffstat (limited to 'src/widgets/accessible')
-rw-r--r--src/widgets/accessible/itemviews.cpp42
-rw-r--r--src/widgets/accessible/itemviews_p.h2
2 files changed, 8 insertions, 36 deletions
diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp
index 09eba76fbd..db5af4fd7c 100644
--- a/src/widgets/accessible/itemviews.cpp
+++ b/src/widgets/accessible/itemviews.cpp
@@ -564,20 +564,8 @@ void QAccessibleTable::modelChange(QAccessibleTableModelChangeEvent *event)
QAccessible::Id id = iter.value();
QAccessibleInterface *iface = QAccessible::accessibleInterface(id);
Q_ASSERT(iface);
- if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) {
- Q_ASSERT(iface->tableCellInterface());
- QAccessibleTableCell *cell = static_cast<QAccessibleTableCell*>(iface->tableCellInterface());
- if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsInserted
- && cell->m_index.row() >= event->firstRow()) {
- int newRow = cell->m_index.row() + newRows;
- cell->m_index = cell->m_index.sibling(newRow, cell->m_index.column());
- } else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::ColumnsInserted
- && cell->m_index.column() >= event->firstColumn()) {
- int newColumn = cell->m_index.column() + newColumns;
- cell->m_index = cell->m_index.sibling(cell->m_index.row(), newColumn);
- }
- } else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsInserted
- && iface->role() == QAccessible::RowHeader) {
+ if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsInserted
+ && iface->role() == QAccessible::RowHeader) {
QAccessibleTableHeaderCell *cell = static_cast<QAccessibleTableHeaderCell*>(iface);
if (cell->index >= event->firstRow()) {
cell->index += newRows;
@@ -616,27 +604,11 @@ void QAccessibleTable::modelChange(QAccessibleTableModelChangeEvent *event)
if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) {
Q_ASSERT(iface->tableCellInterface());
QAccessibleTableCell *cell = static_cast<QAccessibleTableCell*>(iface->tableCellInterface());
- if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsRemoved) {
- if (cell->m_index.row() < event->firstRow()) {
- newCache.insert(indexOfChild(cell), id);
- } else if (cell->m_index.row() > event->lastRow()) {
- int newRow = cell->m_index.row() - deletedRows;
- cell->m_index = cell->m_index.sibling(newRow, cell->m_index.column());
- newCache.insert(indexOfChild(cell), id);
- } else {
- QAccessible::deleteAccessibleInterface(id);
- }
- } else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::ColumnsRemoved) {
- if (cell->m_index.column() < event->firstColumn()) {
- newCache.insert(indexOfChild(cell), id);
- } else if (cell->m_index.column() > event->lastColumn()) {
- int newColumn = cell->m_index.column() - deletedColumns;
- cell->m_index = cell->m_index.sibling(cell->m_index.row(), newColumn);
- newCache.insert(indexOfChild(cell), id);
- } else {
- QAccessible::deleteAccessibleInterface(id);
- }
- }
+ // Since it is a QPersistentModelIndex, we only need to check if it is valid
+ if (cell->m_index.isValid())
+ newCache.insert(indexOfChild(cell), id);
+ else
+ QAccessible::deleteAccessibleInterface(id);
} else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsRemoved
&& iface->role() == QAccessible::RowHeader) {
QAccessibleTableHeaderCell *cell = static_cast<QAccessibleTableHeaderCell*>(iface);
diff --git a/src/widgets/accessible/itemviews_p.h b/src/widgets/accessible/itemviews_p.h
index 5b73444c67..1b3869f2fa 100644
--- a/src/widgets/accessible/itemviews_p.h
+++ b/src/widgets/accessible/itemviews_p.h
@@ -216,7 +216,7 @@ private:
QHeaderView *verticalHeader() const;
QHeaderView *horizontalHeader() const;
QPointer<QAbstractItemView > view;
- QModelIndex m_index;
+ QPersistentModelIndex m_index;
QAccessible::Role m_role;
void selectCell();