diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 0565835e38b..53bf13a5735 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -506,6 +506,11 @@ void QWidgetWindow::handleNonClientAreaMouseEvent(QMouseEvent *e) void QWidgetWindow::handleMouseEvent(QMouseEvent *event) { Q_D(QWidgetWindow); + + // Event delivery can potentially result in window re-creation (QTBUG-132912) + // so we need QPointer to avoid a dangling d below + QPointer self = this; + if (auto *activePopupWidget = QApplication::activePopupWidget()) { QPointF mapped = event->position(); if (activePopupWidget != m_widget) @@ -666,6 +671,9 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) event->setAccepted(translated.isAccepted()); } + if (self.isNull()) + return; + #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) if ( #else