OSDN Git Service

delete widgets the parent of which is of Qt::Desktop type
authorIvailo Monev <xakepa10@gmail.com>
Fri, 17 Sep 2021 22:58:14 +0000 (01:58 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Fri, 17 Sep 2021 22:58:14 +0000 (01:58 +0300)
plugs memory leak in poppler demo application

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/kernel/qwidget.cpp

index f567834..f34433a 100644 (file)
@@ -912,10 +912,12 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
     if (allWidgets)
         allWidgets->insert(q);
 
-    QWidget *desktopWidget = 0;
     if (parentWidget && parentWidget->windowType() == Qt::Desktop) {
-        desktopWidget = parentWidget;
-        parentWidget = 0;
+#if defined(Q_WS_X11)
+        // make sure the widget is created on the same screen as the
+        // programmer specified desktop widget
+        xinfo = parentWidget->d_func()->xinfo;
+#endif
     }
 
     q->data = &data;
@@ -925,16 +927,6 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
                    "Widgets must be created in the GUI thread.");
     }
 
-#if defined(Q_WS_X11)
-    if (desktopWidget) {
-        // make sure the widget is created on the same screen as the
-        // programmer specified desktop widget
-        xinfo = desktopWidget->d_func()->xinfo;
-    }
-#else
-    Q_UNUSED(desktopWidget);
-#endif
-
     data.fstrut_dirty = true;
 
     data.winid = 0;