diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index cfccce7..47755cd 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -1526,7 +1526,7 @@ void QWidgetPrivate::setWinId(WId id) // set widget identifier } } -void QWidgetPrivate::createTLExtra() +void QWidgetPrivate::createTLExtra(bool forceSysCreation) { if (!extra) createExtra(); @@ -1546,10 +1546,12 @@ void QWidgetPrivate::createTLExtra() x->inTopLevelResize = false; x->inRepaint = false; x->embedded = 0; + x->window = 0; #ifdef Q_WS_MAC x->wasMaximized = false; #endif // Q_WS_MAC - createTLSysExtra(); + if (forceSysCreation) + createTLSysExtra(); #ifdef QWIDGET_EXTRA_DEBUG static int count = 0; qDebug() << "tlextra" << ++count; diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index 50f32af..2a31274 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -334,7 +334,7 @@ public: void createRecursively(); void createWinId(WId id = 0); - void createTLExtra(); + void createTLExtra(bool forceSysCreation = false); void createExtra(); void deleteExtra(); void createSysExtra(); diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index 3b6c9ca..894d1b3 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -614,7 +614,7 @@ void QWidget::setWindowState(Qt::WindowStates newstate) if (!testAttribute(Qt::WA_Resized) && !isVisible()) adjustSize(); - d->createTLExtra(); + d->createTLExtra(true); if (oldEffectiveState == Qt::WindowNoState) d->topData()->normalGeometry = geometry();