From 22745be2627b1321a6c1d6c10d3a860be3884e39 Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Sat, 26 May 2018 19:05:58 +1100 Subject: [PATCH] upgpkg : 5.11.0-2 --- PKGBUILD | 42 +---- qheaderview-restore.patch | 115 ------------ qt-private-includes.patch | 49 ++++++ qtbug-65478.patch | 30 ---- qtbug-66444.patch | 165 ------------------ rebuild.list | 25 --- ...ainter-correctly-for-QGraphicsEffect.patch | 70 -------- 7 files changed, 57 insertions(+), 439 deletions(-) delete mode 100644 qheaderview-restore.patch create mode 100644 qt-private-includes.patch delete mode 100644 qtbug-65478.patch delete mode 100644 qtbug-66444.patch delete mode 100644 rebuild.list delete mode 100644 revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch diff --git a/PKGBUILD b/PKGBUILD index 187521b..a9520a1 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,15 +5,15 @@ pkgbase=qt5-base pkgname=(qt5-base qt5-xcb-private-headers) -_qtver=5.10.1 +_qtver=5.11.0 pkgver=${_qtver/-/} -pkgrel=10 +pkgrel=2 arch=(x86_64) url='http://qt-project.org/' license=('GPL3' 'LGPL3' 'FDL' 'custom') pkgdesc='A cross-platform application and UI framework' -depends=('libjpeg-turbo' 'xcb-util-keysyms' 'xcb-util-renderutil' 'libgl' 'fontconfig' 'xdg-utils' - 'xcb-util-wm' 'libxrender' 'libxi' 'sqlite' 'xcb-util-image' 'icu' 'pcre2' 'shared-mime-info' +depends=('libjpeg-turbo' 'xcb-util-keysyms' 'xcb-util-renderutil' 'libgl' 'fontconfig' 'xdg-utils' 'shared-mime-info' + 'xcb-util-wm' 'libxrender' 'libxi' 'sqlite' 'xcb-util-image' 'icu' 'pcre2' 'tslib' 'libinput' 'libsm' 'libxkbcommon-x11' 'libproxy' 'libcups' 'double-conversion') makedepends=('libfbclient' 'libmariadbclient' 'sqlite' 'unixodbc' 'postgresql-libs' 'alsa-lib' 'gst-plugins-base-libs' 'gtk3' 'libpulse' 'cups' 'freetds' 'vulkan-headers' 'icu') @@ -28,17 +28,9 @@ conflicts=('qtchooser') groups=('qt' 'qt5') _pkgfqn="${pkgbase/5-/}-everywhere-src-${_qtver}" source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" - "revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch" - "qtbug-65478.patch" - qheaderview-restore.patch::"https://code.qt.io/cgit/qt/qtbase.git/patch/?id=4a04eea4" - qtbug-66444.patch::"https://code.qt.io/cgit/qt/qtbase.git/patch/?id=9395f35c" - qtbug-66420.patch::"https://code.qt.io/cgit/qt/qtbase.git/patch/?id=fa091640" - qtbug-66816.patch::"https://code.qt.io/cgit/qt/qtbase.git/patch/?id=e4e87a2e") -sha256sums=('d8660e189caa5da5142d5894d328b61a4d3ee9750b76d61ad74e4eee8765a969' - 'e98cb66de308f85ef2d8e05062ada4d1ca4d88ebe836281489d5c0c9c2495a4b' - '9afdfc018c3894f12e7a01a8221d9f7be9feba00902d98f0e6a09612b68b2619' - '3a1016cbf8c3c4676e6fc406756ffa5a151ffe09153dfc0fa7ed3c16945b0ae5' - '88766a7b73a03e1219800c8fdc56afbf23b15d16cc61c4d77547b1fd2404ea6e') + qt-private-includes.patch::"http://code.qt.io/cgit/qt/qtbase.git/patch/?id=67aa365d") +sha256sums=('ed6e46db84f7d34923ab4eae165c63e05ab3cfa9d19a73d3f57b4e7bfd41de66' + 'bf6e52cc613599ff3dc756113ffb61aa1896a84abefbe69f42bdb846202d1f71') validpgpkeys=('6DD4217456569BA711566AC7F06E8FDE7B45DAAC') # Eric Vidal prepare() { @@ -56,26 +48,8 @@ prepare() { 's|#![ ]*/usr/bin/python$|&2|;s|#![ ]*/usr/bin/env python$|&2|' {} + # Fix missing private includes https://bugreports.qt.io/browse/QTBUG-37417 - sed -e '/CMAKE_NO_PRIVATE_INCLUDES\ \=\ true/d' -i mkspecs/features/create_cmake.prf - - # Revert upstream commit which breaks some Deepin components (FS#57531) - # https://bugreports.qt.io/browse/QTBUG-66226 - patch -Np1 -i ../revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch - - # Fix kexi crash at startup http://bugreports.qt.io/browse/QTBUG-65478 - patch -p1 -i ../qtbug-65478.patch - - # Fix restoring column status in kmail and ksysguard - patch -p1 -i ../qheaderview-restore.patch - - # Fix QHeaderView regression https://bugreports.qt.io/browse/QTBUG-66444 - patch -p1 -i ../qtbug-66444.patch + patch -p1 -i ../qt-private-includes.patch - # Fix white screen with Mesa 18 https://bugreports.qt.io/browse/QTBUG-66420 - patch -p1 -i ../qtbug-66420.patch - - # Fix crashes in QSqlite http://bugreports.qt.io/browse/QTBUG-66816 - patch -p1 -i ../qtbug-66816.patch } build() { diff --git a/qheaderview-restore.patch b/qheaderview-restore.patch deleted file mode 100644 index 27bb4f4..0000000 --- a/qheaderview-restore.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 4a04eea4f4316684e20c509352c6c533cf39306e Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Thu, 1 Mar 2018 11:04:00 +0100 -Subject: QHeaderView: fix inconsistent saved state, ignored during restore -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The code that updates a section size must also update length, -otherwise saveState can end up saving inconsistent state, and -restoreState() goes to an early-return, not doing anything. - -The actual bug was fixed meanwhile because _q_sectionsChanged is called -again, which recalculates length. I still see this only as a safety -measure, every other code path that changes section sizes updates length -right away. - -Change-Id: I6cc16261692d93b3640afafef600a5bdff8dca0c -Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> ---- - src/widgets/itemviews/qheaderview.cpp | 6 ++- - .../widgets/itemviews/qtreeview/tst_qtreeview.cpp | 53 ++++++++++++++++++++++ - 2 files changed, 58 insertions(+), 1 deletion(-) - -diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp -index 5cbf642802..b7048d1616 100644 ---- a/src/widgets/itemviews/qheaderview.cpp -+++ b/src/widgets/itemviews/qheaderview.cpp -@@ -2191,7 +2191,11 @@ void QHeaderViewPrivate::_q_sectionsAboutToBeChanged(const QList<QPersistentMode - if (stretchLastSection && lastSectionLogicalIdx >= 0 && lastSectionLogicalIdx < sectionItems.count()) { - const int visual = visualIndex(lastSectionLogicalIdx); - if (visual >= 0 && visual < sectionItems.size()) { -- sectionItems[visual].size = lastSectionSize; -+ auto &itemRef = sectionItems[visual]; -+ if (itemRef.size != lastSectionSize) { -+ length += lastSectionSize - itemRef.size; -+ itemRef.size = lastSectionSize; -+ } - } - } - for (int i = 0; i < sectionItems.size(); ++i) { -diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp -index 5293ba487a..347d2a81e6 100644 ---- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp -+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp -@@ -162,6 +162,7 @@ private slots: - void renderToPixmap(); - void styleOptionViewItem(); - void keyboardNavigationWithDisabled(); -+ void saveRestoreState(); - - void statusTip_data(); - void statusTip(); -@@ -4076,6 +4077,58 @@ void tst_QTreeView::keyboardNavigationWithDisabled() - QCOMPARE(view.currentIndex(), model.index(6, 0)); - } - -+class RemoveColumnOne : public QSortFilterProxyModel -+{ -+public: -+ bool filterAcceptsColumn(int source_column, const QModelIndex &) const override -+ { -+ if (m_removeColumn) -+ return source_column != 1; -+ return true; -+ } -+ void removeColumn() -+ { -+ m_removeColumn = true; -+ invalidate(); -+ } -+private: -+ bool m_removeColumn = false; -+}; -+ -+ -+void tst_QTreeView::saveRestoreState() -+{ -+ QStandardItemModel model; -+ for (int i = 0; i < 100; i++) { -+ QList<QStandardItem *> items; -+ items << new QStandardItem(QLatin1String("item ") + QString::number(i)) << new QStandardItem(QStringLiteral("hidden by proxy")) << new QStandardItem(QStringLiteral("hidden by user")); -+ model.appendRow(items); -+ } -+ QCOMPARE(model.columnCount(), 3); -+ -+ RemoveColumnOne proxy; -+ proxy.setSourceModel(&model); -+ QCOMPARE(proxy.columnCount(), 3); -+ -+ QTreeView view; -+ view.setModel(&proxy); -+ view.resize(500, 500); -+ view.show(); -+ view.header()->hideSection(2); -+ QVERIFY(view.header()->isSectionHidden(2)); -+ proxy.removeColumn(); -+ QCOMPARE(proxy.columnCount(), 2); -+ QVERIFY(view.header()->isSectionHidden(1)); -+ const QByteArray data = view.header()->saveState(); -+ -+ QTreeView view2; -+ view2.setModel(&proxy); -+ view2.resize(500, 500); -+ view2.show(); -+ view2.header()->restoreState(data); -+ QVERIFY(view2.header()->isSectionHidden(1)); -+} -+ - class Model_11466 : public QAbstractItemModel - { - Q_OBJECT --- -cgit v1.1-6-g87c4 - diff --git a/qt-private-includes.patch b/qt-private-includes.patch new file mode 100644 index 0000000..e0c3b25 --- /dev/null +++ b/qt-private-includes.patch @@ -0,0 +1,49 @@ +From 67aa365d41ebfe082b4efcfd725e4d5f08be678c Mon Sep 17 00:00:00 2001 +From: Ulf Hermann <ulf.hermann@qt.io> +Date: Wed, 25 Apr 2018 12:48:21 +0200 +Subject: Do emit CMake declarations for existing private headers + +We need to make sure we don't emit CMake declarations for private +headers if those headers are absent. However, most of the time we have +private headers and should add them. + +Task-number: QTBUG-37417 +Change-Id: I639eb93d008de27928dedac540894af70c1883b9 +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> +--- + mkspecs/features/create_cmake.prf | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf +index 66acedef55..2ed708e085 100644 +--- a/mkspecs/features/create_cmake.prf ++++ b/mkspecs/features/create_cmake.prf +@@ -28,9 +28,13 @@ CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake + + CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE}) + ++!generated_privates { ++ isEmpty(SYNCQT.INJECTED_PRIVATE_HEADER_FILES):isEmpty(SYNCQT.PRIVATE_HEADER_FILES): \ ++ CMAKE_NO_PRIVATE_INCLUDES = true ++} ++ + split_incpath { + CMAKE_ADD_SOURCE_INCLUDE_DIRS = true +- CMAKE_NO_PRIVATE_INCLUDES = true # Don't add private includes in the build dir which don't exist + CMAKE_SOURCE_INCLUDES = \ + $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}) + CMAKE_SOURCE_PRIVATE_INCLUDES = \ +@@ -53,10 +57,6 @@ contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { + CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True + } + +-isEmpty(QT.$${MODULE}_private.includes)| \ +- !exists($$first(QT.$${MODULE}_private.includes)): \ +- CMAKE_NO_PRIVATE_INCLUDES = true +- + CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) + contains(CMAKE_LIB_DIR,"^\\.\\./.*") { + CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ +-- +cgit v1.1-6-g87c4 + diff --git a/qtbug-65478.patch b/qtbug-65478.patch deleted file mode 100644 index c52bda1..0000000 --- a/qtbug-65478.patch +++ /dev/null @@ -1,30 +0,0 @@ -From e8425f9e52c9df0ce0fbf122adff3ef6930f9961 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= <tmartsum@gmail.com> -Date: Wed, 28 Feb 2018 09:23:54 +0100 -Subject: QHeaderView: Fix crash in layout about to change - -Before there was a risk looking up e.g index -1 if there -were no visible sections in layoutAboutToChange. - -Change-Id: Ic911e4292e8e8c4892fef1c0f34cf7dccaad2bac -Task-number: QTBUG-65478 -Reviewed-by: David Faure <david.faure@kdab.com> ---- -diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp -index 26d7c5472a..708b9b44ca 100644 ---- a/src/widgets/itemviews/qheaderview.cpp -+++ b/src/widgets/itemviews/qheaderview.cpp -@@ -2163,9 +2163,11 @@ void QHeaderViewPrivate::_q_sectionsAboutToBeChanged() - layoutChangePersistentSections.clear(); - layoutChangePersistentSections.reserve(std::min(10, sectionItems.count())); - // after layoutChanged another section can be last stretched section -- if (stretchLastSection) { -+ if (stretchLastSection && lastSectionLogicalIdx >= 0 && lastSectionLogicalIdx < sectionItems.count()) { - const int visual = visualIndex(lastSectionLogicalIdx); -- sectionItems[visual].size = lastSectionSize; -+ if (visual >= 0 && visual < sectionItems.size()) { -+ sectionItems[visual].size = lastSectionSize; -+ } - } - for (int i = 0; i < sectionItems.size(); ++i) { - auto s = sectionItems.at(i); diff --git a/qtbug-66444.patch b/qtbug-66444.patch deleted file mode 100644 index cd57f13..0000000 --- a/qtbug-66444.patch +++ /dev/null @@ -1,165 +0,0 @@ -From 9395f35cb18725995910531ca8b09f1d84efa96c Mon Sep 17 00:00:00 2001 -From: Christian Ehrlicher <ch.ehrlicher@gmx.de> -Date: Sat, 17 Feb 2018 10:02:19 +0100 -Subject: QHeaderView: Preserve settings on layoutChange with empty model -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Do not clear the settings of QHeaderView during layoutChange when the -model is empty and the section count did not change. This will not work -when a section is moved or a section is replaced with a new one during -layoutChange. But since layoutChanged is also called on sorting, this -patch ensures that the settings are not cleared in this case. -This restores the behavior to the same as before 5.9.4. - -Task-number: QTBUG-66444 -Task-number: QTBUG-65478 -Change-Id: I39989cfd45b42e58f49d18ec014d3a941cadb6c9 -Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> ---- - src/widgets/itemviews/qheaderview.cpp | 24 ++++++++ - .../itemviews/qheaderview/tst_qheaderview.cpp | 71 ++++++++++++++++++++++ - 2 files changed, 95 insertions(+) - -diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp -index edef2e9bf8..b0359de3ea 100644 ---- a/src/widgets/itemviews/qheaderview.cpp -+++ b/src/widgets/itemviews/qheaderview.cpp -@@ -2205,6 +2205,30 @@ void QHeaderViewPrivate::_q_sectionsChanged() - return; - } - -+ bool hasPersistantIndexes = false; -+ for (const auto &item : oldPersistentSections) { -+ if (item.index.isValid()) { -+ hasPersistantIndexes = true; -+ break; -+ } -+ } -+ -+ // Though far from perfect we here try to retain earlier/existing behavior -+ // ### See QHeaderViewPrivate::_q_layoutAboutToBeChanged() -+ // When we don't have valid hasPersistantIndexes it can be due to -+ // - all sections are default sections -+ // - the row/column 0 which is used for persistent indexes is gone -+ // - all non-default sections were removed -+ // case one is trivial, in case two we assume nothing else changed (it's the best -+ // guess we can do - everything else can not be handled correctly for now) -+ // case three can not be handled correctly with layoutChanged - removeSections -+ // should be used instead for this -+ if (!hasPersistantIndexes) { -+ if (oldCount != newCount) -+ q->initializeSections(); -+ return; -+ } -+ - // adjust section size - if (newCount != oldCount) { - const int min = qBound(0, oldCount, newCount - 1); -diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -index c69c0de949..97aa8a0299 100644 ---- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -@@ -206,6 +206,7 @@ private slots: - void task248050_hideRow(); - void QTBUG6058_reset(); - void QTBUG7833_sectionClicked(); -+ void checkLayoutChangeEmptyModel(); - void QTBUG8650_crashOnInsertSections(); - void QTBUG12268_hiddenMovedSectionSorting(); - void QTBUG14242_hideSectionAutoSize(); -@@ -286,6 +287,13 @@ public: - endInsertColumns(); - } - -+ void removeFirstRow() -+ { -+ beginRemoveRows(QModelIndex(), 0, 0); -+ --rows; -+ endRemoveRows(); -+ } -+ - void removeLastRow() - { - beginRemoveRows(QModelIndex(), rows - 1, rows - 1); -@@ -328,6 +336,24 @@ public: - emit layoutChanged(); - } - -+ void emitLayoutChanged() -+ { -+ emit layoutAboutToBeChanged(); -+ emit layoutChanged(); -+ } -+ -+ void emitLayoutChangedWithRemoveFirstRow() -+ { -+ emit layoutAboutToBeChanged(); -+ QModelIndexList milNew; -+ const auto milOld = persistentIndexList(); -+ milNew.reserve(milOld.size()); -+ for (int i = 0; i < milOld.size(); ++i) -+ milNew += QModelIndex(); -+ changePersistentIndexList(milOld, milNew); -+ emit layoutChanged(); -+ } -+ - int cols, rows; - mutable bool wrongIndex; - }; -@@ -2332,6 +2358,51 @@ void tst_QHeaderView::QTBUG7833_sectionClicked() - QCOMPARE(pressedSpy.at(2).at(0).toInt(), 0); - } - -+void tst_QHeaderView::checkLayoutChangeEmptyModel() -+{ -+ QtTestModel tm; -+ tm.cols = 11; -+ QTableView tv; -+ tv.setModel(&tm); -+ -+ const int section4Size = tv.horizontalHeader()->sectionSize(4) + 1; -+ const int section5Size = section4Size + 1; -+ tv.horizontalHeader()->resizeSection(4, section4Size); -+ tv.horizontalHeader()->resizeSection(5, section5Size); -+ tv.setColumnHidden(5, true); -+ tv.setColumnHidden(6, true); -+ tv.horizontalHeader()->swapSections(8, 10); -+ -+ tv.sortByColumn(1, Qt::AscendingOrder); -+ tm.emitLayoutChanged(); -+ -+ QCOMPARE(tv.isColumnHidden(5), true); -+ QCOMPARE(tv.isColumnHidden(6), true); -+ QCOMPARE(tv.horizontalHeader()->sectionsMoved(), true); -+ QCOMPARE(tv.horizontalHeader()->logicalIndex(8), 10); -+ QCOMPARE(tv.horizontalHeader()->logicalIndex(10), 8); -+ QCOMPARE(tv.horizontalHeader()->sectionSize(4), section4Size); -+ tv.setColumnHidden(5, false); // unhide, section size must be properly restored -+ QCOMPARE(tv.horizontalHeader()->sectionSize(5), section5Size); -+ tv.setColumnHidden(5, true); -+ -+ // adjust -+ tm.rows = 3; -+ tm.emitLayoutChanged(); -+ -+ // remove the row used for QPersistenModelIndexes -+ tm.emitLayoutChangedWithRemoveFirstRow(); -+ QCOMPARE(tv.isColumnHidden(5), true); -+ QCOMPARE(tv.isColumnHidden(6), true); -+ QCOMPARE(tv.horizontalHeader()->sectionsMoved(), true); -+ QCOMPARE(tv.horizontalHeader()->logicalIndex(8), 10); -+ QCOMPARE(tv.horizontalHeader()->logicalIndex(10), 8); -+ QCOMPARE(tv.horizontalHeader()->sectionSize(4), section4Size); -+ tv.setColumnHidden(5, false); // unhide, section size must be properly restored -+ QCOMPARE(tv.horizontalHeader()->sectionSize(5), section5Size); -+ tv.setColumnHidden(5, true); -+} -+ - void tst_QHeaderView::QTBUG8650_crashOnInsertSections() - { - QStringList headerLabels; --- -cgit v1.1-6-g87c4 - diff --git a/rebuild.list b/rebuild.list deleted file mode 100644 index fdb9fec..0000000 --- a/rebuild.list +++ /dev/null @@ -1,25 +0,0 @@ -### Rebuild only for minor version updates -calibre -gcin -kwin -lxqt-qtplugin -plasma-framework -plasma-integration -qqc2-desktop-style -qt5ct -### Rebuild for minor and patch version updates -akonadi -deepin-dock -deepin-file-manager -deepin-qt-dbus-factory -deepin-qt5integration -deepin-qt5dxcb-plugin -dtkwidget -dtkwm -fcitx-qt5 -googlemaps -libqtxdg -pyqt5-common -qt5-styleplugins -qt5-webkit -skrooge diff --git a/revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch b/revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch deleted file mode 100644 index 196b27a..0000000 --- a/revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch +++ /dev/null @@ -1,70 +0,0 @@ -From f4bc1f620727366b6a977b106cc68fade95ef426 Mon Sep 17 00:00:00 2001 -From: Evangelos Foutras <evangelos@foutrelis.com> -Date: Wed, 21 Feb 2018 04:20:20 +0200 -Subject: [PATCH] Revert "Set sharedPainter correctly for QGraphicsEffect" - -This reverts commit 7257862fb2edfab0219d6cd45c83677049404f7d. ---- - src/widgets/kernel/qwidget.cpp | 4 ++-- - .../effects/qgraphicseffect/tst_qgraphicseffect.cpp | 21 --------------------- - 2 files changed, 2 insertions(+), 23 deletions(-) - -diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp -index a973bee2cd..256c77e5a0 100644 ---- a/src/widgets/kernel/qwidget.cpp -+++ b/src/widgets/kernel/qwidget.cpp -@@ -5482,11 +5482,11 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP - setSystemClip(pdev->paintEngine(), pdev->devicePixelRatioF(), rgn.translated(offset)); - QPainter p(pdev); - p.translate(offset); -- context.painter = context.sharedPainter = &p; -+ context.painter = &p; - graphicsEffect->draw(&p); - setSystemClip(pdev->paintEngine(), 1, QRegion()); - } else { -- context.painter = context.sharedPainter = sharedPainter; -+ context.painter = sharedPainter; - if (sharedPainter->worldTransform() != sourced->lastEffectTransform) { - sourced->invalidateCache(); - sourced->lastEffectTransform = sharedPainter->worldTransform(); -diff --git a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp -index dfe5baba71..a1cb729849 100644 ---- a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp -+++ b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp -@@ -52,7 +52,6 @@ private slots: - void boundingRect2(); - void draw(); - void opacity(); -- void nestedOpaqueOpacity(); - void grayscale(); - void colorize(); - void drawPixmapItem(); -@@ -408,26 +407,6 @@ void tst_QGraphicsEffect::opacity() - QCOMPARE(effect->m_opacity, qreal(0.5)); - } - --void tst_QGraphicsEffect::nestedOpaqueOpacity() --{ -- // QTBUG-60231: Nesting widgets with a QGraphicsEffect on a toplevel with -- // QGraphicsOpacityEffect caused crashes due to constructing several -- // QPainter instances on a device in the fast path for -- // QGraphicsOpacityEffect::opacity=1 -- QWidget topLevel; -- topLevel.setWindowTitle(QTest::currentTestFunction()); -- topLevel.resize(320, 200); -- QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect; -- opacityEffect->setOpacity(1); -- topLevel.setGraphicsEffect(opacityEffect); -- QWidget *child = new QWidget(&topLevel); -- child->resize(topLevel.size() / 2); -- QGraphicsDropShadowEffect *childEffect = new QGraphicsDropShadowEffect; -- child->setGraphicsEffect(childEffect); -- topLevel.show(); -- QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); --} -- - void tst_QGraphicsEffect::grayscale() - { - if (qApp->desktop()->depth() < 24) --- -2.16.2 -- GitLab