summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSérgio Martins <sergio.martins@kdab.com>2017-06-13 12:09:59 +0100
committerSérgio Martins <sergio.martins@kdab.com>2017-07-02 09:31:01 +0000
commitfd897629bf698c9efb4628188db79f2937ef3d89 (patch)
tree6a02b46f7c25d18aa8b1a82d01b579a85a91564c /src
parent628f3becf929efa284628884716bc2ea772c4cc6 (diff)
Fix moving a hidden QOpenGLWidget to another window
A visibile QOpenGLWidget receives a QEvent::WindowChangeInternal which triggers a QOpenGLWidget::reset(). A hidden QOpenGLWidget never received this event so it was never reset, resulting in a black rendering. Includes unit-test that fails without this patch. Change-Id: I9d2c57d66fa629f631a9829a5ebf4de09998ad75 Task-Id: QTBUG-60896 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/widgets/kernel/qopenglwidget.cpp2
-rw-r--r--src/widgets/kernel/qwidget.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/widgets/kernel/qopenglwidget.cpp b/src/widgets/kernel/qopenglwidget.cpp
index 9aab0bd76a..218d3c4a46 100644
--- a/src/widgets/kernel/qopenglwidget.cpp
+++ b/src/widgets/kernel/qopenglwidget.cpp
@@ -1342,6 +1342,8 @@ bool QOpenGLWidget::event(QEvent *e)
break;
if (d->initialized)
d->reset();
+ if (isHidden())
+ break;
// FALLTHROUGH
case QEvent::Show: // reparenting may not lead to a resize so reinitalize on Show too
if (!d->initialized && !size().isEmpty() && window() && window()->windowHandle()) {
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 1265052281..d4cbe81c2d 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -10511,7 +10511,7 @@ static void sendWindowChangeToTextureChildrenRecursively(QWidget *widget)
for (int i = 0; i < d->children.size(); ++i) {
QWidget *w = qobject_cast<QWidget *>(d->children.at(i));
- if (w && !w->isWindow() && !w->isHidden() && QWidgetPrivate::get(w)->textureChildSeen)
+ if (w && !w->isWindow() && QWidgetPrivate::get(w)->textureChildSeen)
sendWindowChangeToTextureChildrenRecursively(w);
}
}