1*4882a593SmuzhiyunFrom e0051310e404734bb1fcd8e1f6bc8a4c03d536ef Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Wed, 4 Nov 2020 11:42:23 +0800 4*4882a593SmuzhiyunSubject: [PATCH 13/17] qwaylandwindow: Fix losing parent relationship after 5*4882a593Smuzhiyun reset 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunReset all children to reflush the parent relationship. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun src/client/qwaylandwindow.cpp | 20 ++++++++++++++++++++ 12*4882a593Smuzhiyun 1 file changed, 20 insertions(+) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyundiff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp 15*4882a593Smuzhiyunindex 9cba945..d1b113c 100644 16*4882a593Smuzhiyun--- a/src/client/qwaylandwindow.cpp 17*4882a593Smuzhiyun+++ b/src/client/qwaylandwindow.cpp 18*4882a593Smuzhiyun@@ -242,6 +242,26 @@ void QWaylandWindow::initializeWlSurface() 19*4882a593Smuzhiyun mSurface->m_window = this; 20*4882a593Smuzhiyun } 21*4882a593Smuzhiyun emit wlSurfaceCreated(); 22*4882a593Smuzhiyun+ 23*4882a593Smuzhiyun+ // Reset all children to reflush parent relationship 24*4882a593Smuzhiyun+ QObjectList childObjects = window()->children(); 25*4882a593Smuzhiyun+ for (int i = 0; i < childObjects.size(); i ++) { 26*4882a593Smuzhiyun+ QObject *object = childObjects.at(i); 27*4882a593Smuzhiyun+ 28*4882a593Smuzhiyun+ if (!object->isWindowType()) 29*4882a593Smuzhiyun+ continue; 30*4882a593Smuzhiyun+ 31*4882a593Smuzhiyun+ QWindow *childWindow = static_cast<QWindow *>(object); 32*4882a593Smuzhiyun+ if (!childWindow->isVisible()) 33*4882a593Smuzhiyun+ return; 34*4882a593Smuzhiyun+ 35*4882a593Smuzhiyun+ QWaylandWindow *childWaylandWindow = 36*4882a593Smuzhiyun+ const_cast<QWaylandWindow *>(static_cast<const QWaylandWindow *>(childWindow->handle())); 37*4882a593Smuzhiyun+ 38*4882a593Smuzhiyun+ childWaylandWindow->reset(); 39*4882a593Smuzhiyun+ childWaylandWindow->setParent(this); 40*4882a593Smuzhiyun+ childWindow->setVisible(true); 41*4882a593Smuzhiyun+ } 42*4882a593Smuzhiyun } 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun bool QWaylandWindow::shouldCreateShellSurface() const 45*4882a593Smuzhiyun-- 46*4882a593Smuzhiyun2.20.1 47*4882a593Smuzhiyun 48