Revert "Reset QWidget's winId when backing window surface is destroyed"

This commit is contained in:
Jan Grulich 2019-07-15 10:47:08 +02:00
parent 72b5ae0fbb
commit abb914b769
2 changed files with 42 additions and 1 deletions

View File

@ -53,7 +53,7 @@ BuildRequires: pkgconfig(libsystemd)
Name: qt5-qtbase
Summary: Qt5 - QtBase components
Version: 5.12.4
Release: 3%{?dist}
Release: 4%{?dist}
# See LGPL_EXCEPTIONS.txt, for exception details
License: LGPLv2 with exceptions or GPLv3 with exceptions
@ -138,6 +138,7 @@ Patch156: 0056-QHighDpi-Replace-fromNative-toNative-with-scale.patch
Patch166: 0066-High-DPI-Fix-crash-in-QWindow-mapFromGlobal.patch
## omit for now, appears to introduce symbol incompatibilities
#Patch200: 0100-QHighDpi-fromNativePixels-use-correct-screen.patch
Patch250: qtbase-revert-reset-qwidget-winid-when-backing-window-surface-destroyed.patch
# Do not check any files in %%{_qt5_plugindir}/platformthemes/ for requires.
# Those themes are there for platform integration. If the required libraries are
@ -412,6 +413,7 @@ Qt5 libraries used for drawing widgets and OpenGL items.
%patch156 -p1
%patch166 -p1
#patch200 -p1
%patch250 -p1
# move some bundled libs to ensure they're not accidentally used
pushd src/3rdparty
@ -1031,6 +1033,9 @@ fi
%changelog
* Mon Jul 15 2019 Jan Grulich <jgrulich@redhat.com> - 5.12.4-4
- Revert "Reset QWidget's winId when backing window surface is destroyed"
* Fri Jun 28 2019 Rex Dieter <rdieter@fedoraproject.org> - 5.12.4-3
- omit QTBUG-73231 patch fix, appears to introduce incompatible symbols

View File

@ -0,0 +1,36 @@
From deac052a40c93633041da058d5c73c9e91aa76c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io>
Date: Fri, 12 Jul 2019 12:28:29 +0200
Subject: Revert "Reset QWidget's winId when backing window surface is
destroyed"
This reverts commit a9246c7132a2c8864d3ae6cebd260bb9ee711fcb.
The QWidget machinery is way to fragile to reset the winId under the
feet of QWidget like that. We would potentially need to include all
the logic in QWidget::destroy. This also ties into the flow between
QtGui and QtWidgets during window closing, which is still unresolved.
Change-Id: I168048a63c89796398eb5331a80ce3e5c8d9a208
Fixes: QTBUG-76588
Task-number: QTBUG-69289
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index fdb3872903..6f0f39a344 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -9382,12 +9382,6 @@ bool QWidget::event(QEvent *event)
d->renderToTextureReallyDirty = 1;
#endif
break;
- case QEvent::PlatformSurface: {
- auto surfaceEvent = static_cast<QPlatformSurfaceEvent*>(event);
- if (surfaceEvent->surfaceEventType() == QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed)
- d->setWinId(0);
- break;
- }
#ifndef QT_NO_PROPERTIES
case QEvent::DynamicPropertyChange: {
const QByteArray &propName = static_cast<QDynamicPropertyChangeEvent *>(event)->propertyName();