diff options
Diffstat (limited to 'user/qt5-qtbase/section-header.patch')
-rw-r--r-- | user/qt5-qtbase/section-header.patch | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/user/qt5-qtbase/section-header.patch b/user/qt5-qtbase/section-header.patch deleted file mode 100644 index 20664104a..000000000 --- a/user/qt5-qtbase/section-header.patch +++ /dev/null @@ -1,95 +0,0 @@ -From ba6e0e4aac4d06782325c7032c8ea475f2d3eab0 Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Sat, 13 Apr 2019 19:37:37 +0200 -Subject: [PATCH 1/1] QHeaderView: fix assert when restoring section sizes over - less columns -MIME-Version: 1.0 -Content-Type: text/plain; charset=utf8 -Content-Transfer-Encoding: 8bit - -If columns are removed and we get notified via layoutChanged, the code -tries to restore old section sizes, and went out of bounds, leading to -an assert in QVector. Simply add an if() to skip restoring out-of-bounds columns. - -This comes from https://bugs.kde.org/show_bug.cgi?id=395181, -which translates into the unittest that is part of this commit. - -Change-Id: Ide42176a758f87b21957c40508127d67f1d5a2d9 -Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de> -Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> ---- - src/widgets/itemviews/qheaderview.cpp | 16 +++++++++------- - .../widgets/itemviews/qheaderview/tst_qheaderview.cpp | 17 +++++++++++++++++ - 2 files changed, 26 insertions(+), 7 deletions(-) - -diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp -index 62abf567511..99309633a7b 100644 ---- a/src/widgets/itemviews/qheaderview.cpp -+++ b/src/widgets/itemviews/qheaderview.cpp -@@ -2283,13 +2283,15 @@ void QHeaderViewPrivate::_q_sectionsChanged(const QList<QPersistentModelIndex> & - : index.row()); - // the new visualIndices are already adjusted / reset by initializeSections() - const int newVisualIndex = visualIndex(newLogicalIndex); -- auto &newSection = sectionItems[newVisualIndex]; -- newSection = item.section; -- -- if (newSection.isHidden) { -- // otherwise setSectionHidden will return without doing anything -- newSection.isHidden = false; -- q->setSectionHidden(newLogicalIndex, true); -+ if (newVisualIndex < sectionItems.count()) { -+ auto &newSection = sectionItems[newVisualIndex]; -+ newSection = item.section; -+ -+ if (newSection.isHidden) { -+ // otherwise setSectionHidden will return without doing anything -+ newSection.isHidden = false; -+ q->setSectionHidden(newLogicalIndex, true); -+ } - } - } - -diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -index eaf75e74945..1b3e1e1f34e 100644 ---- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -@@ -248,6 +248,7 @@ private slots: - void sizeHintCrash(); - void testResetCachedSizeHint(); - void statusTips(); -+ void testRemovingColumnsViaLayoutChanged(); - - protected: - void setupTestData(bool use_reset_model = false); -@@ -353,6 +354,7 @@ public: - - void cleanup() - { -+ emit layoutAboutToBeChanged(); - cols = 3; - rows = 3; - emit layoutChanged(); -@@ -3489,5 +3491,20 @@ void tst_QHeaderView::statusTips() - QCOMPARE(headerView.statusTipText, QLatin1String("[0,1,0] -- Header")); - } - -+void tst_QHeaderView::testRemovingColumnsViaLayoutChanged() -+{ -+ const int persistentSectionSize = 101; -+ -+ QtTestModel model; -+ model.rows = model.cols = 5; -+ view->setModel(&model); -+ for (int i = 0; i < model.cols; ++i) -+ view->resizeSection(i, persistentSectionSize + i); -+ model.cleanup(); // down to 3 via layoutChanged (not columnsRemoved) -+ for (int j = 0; j < model.cols; ++j) -+ QCOMPARE(view->sectionSize(j), persistentSectionSize + j); -+ // The main point of this test is that the section-size restoring code didn't go out of bounds. -+} -+ - QTEST_MAIN(tst_QHeaderView) - #include "tst_qheaderview.moc" --- -2.16.3 - |