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>
This commit is contained in:
parent
39d2a11a86
commit
00304eac7b
@ -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();
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user