Fix QTabBar's SelectPreviousTab behavior
When setCurrentIndex is called by removeTab, the old current index might no longer be valid. Only update the lastTab value of the new current tab if the old current index is still valid. As a drive-by, use the validIndex helper function. Fixes: QTBUG-94352 Pick-to: 6.2 Change-Id: I945e2093a90a1fccbba86d32b1113f83fedd41de Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>bb10
parent
4682af483f
commit
5d4b91ea66
|
|
@ -1435,9 +1435,10 @@ void QTabBar::setCurrentIndex(int index)
|
|||
d->currentIndex = index;
|
||||
update();
|
||||
d->makeVisible(index);
|
||||
tab->lastTab = oldIndex;
|
||||
if (oldIndex >= 0 && oldIndex < count())
|
||||
if (d->validIndex(oldIndex)) {
|
||||
tab->lastTab = oldIndex;
|
||||
d->layoutTab(oldIndex);
|
||||
}
|
||||
d->layoutTab(index);
|
||||
#ifndef QT_NO_ACCESSIBILITY
|
||||
if (QAccessible::isActive()) {
|
||||
|
|
|
|||
|
|
@ -602,6 +602,8 @@ void tst_QTabBar::selectionBehaviorOnRemove_data()
|
|||
// every other one
|
||||
QTest::newRow("previous-10") << QTabBar::SelectPreviousTab << 7 << (IntList() << 0 << 2 << 4 << 6) << (IntList() << 6 << 4) << 2;
|
||||
|
||||
// QTBUG-94352
|
||||
QTest::newRow("QTBUG-94352") << QTabBar::SelectPreviousTab << 4 << (IntList() << 3) << (IntList() << 2 << 2) << 0;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue