diff --git a/src/platformtheme/qdbusmenubar.cpp b/src/platformtheme/qdbusmenubar.cpp --- a/src/platformtheme/qdbusmenubar.cpp +++ b/src/platformtheme/qdbusmenubar.cpp @@ -122,15 +122,20 @@ void QDBusMenuBar::handleReparent(QWindow *newParentWindow) { - if (newParentWindow && newParentWindow != m_window) { - QWindow *oldWindow = m_window; + if (newParentWindow == m_window) { + return; + } - unregisterMenuBar(); - m_window = newParentWindow; - registerMenuBar(); + QWindow *oldWindow = m_window; - emit windowChanged(newParentWindow, oldWindow); + unregisterMenuBar(); + m_window = newParentWindow; + + if (newParentWindow) { + registerMenuBar(); } + + emit windowChanged(newParentWindow, oldWindow); } QPlatformMenu *QDBusMenuBar::menuForTag(quintptr tag) const diff --git a/src/platformtheme/qdbusmenubar_p.h b/src/platformtheme/qdbusmenubar_p.h --- a/src/platformtheme/qdbusmenubar_p.h +++ b/src/platformtheme/qdbusmenubar_p.h @@ -87,7 +87,7 @@ QDBusPlatformMenu *m_menu; QDBusMenuAdaptor *m_menuAdaptor; QHash m_menuItems; - QWindow *m_window = nullptr; + QPointer m_window; QString m_objectPath; QDBusPlatformMenuItem *menuItemForMenu(QPlatformMenu *menu);