File Revert-Set-sharedPainter-correctly-for-QGraphicsEffect.patch of Package libqt5-qtbase.16540

From 3ec397ff2efec43f7315d2025b827f3a249fd2f0 Mon Sep 17 00:00:00 2001
From: Laszlo Agocs <laszlo.agocs@qt.io>
Date: Wed, 14 Mar 2018 12:52:10 +0100
Subject: [PATCH] Revert "Set sharedPainter correctly for QGraphicsEffect"

This reverts commit 7257862fb2edfab0219d6cd45c83677049404f7d.

It has been reported that this patch causes widgets with certain effects
become invisible.

Task-number: QTBUG-60231
Task-number: QTBUG-66803
Task-number: QTBUG-66387
Change-Id: I9c3c4cf2f17ac639d1aee5489b665aa1e165af16
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit 00304eac7b1ddd22b971da78aa84c86fe2919359)
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
---
 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 1fea3836ec5..02983593898 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -5520,11 +5520,11 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
                 setSystemClip(pdev, rgn.translated(offset));
                 QPainter p(pdev);
                 p.translate(offset);
-                context.painter = context.sharedPainter = &p;
+                context.painter = &p;
                 graphicsEffect->draw(&p);
                 setSystemClip(pdev, 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 dfe5baba719..a1cb7298496 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.3
openSUSE Build Service is sponsored by