From 8605f44097a986e10c2ddaf4b4eae0b2331d98d1 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 30 Apr 2014 16:46:22 +0200 Subject: [PATCH] Cocoa QPA Menu: Clear menu items' Cocoa ancestor on destruction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Valid for both the item and the menu destructions. Task-number: QTBUG-38685 Change-Id: I024b93c8bb8facefeaad5e8b6c7be6bf049898ea Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoamenu.mm | 4 ++++ src/plugins/platforms/cocoa/qcocoamenuitem.mm | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index 6acc062eb9c..9b5753035a0 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -234,6 +234,10 @@ QCocoaMenu::QCocoaMenu() : QCocoaMenu::~QCocoaMenu() { + foreach (QCocoaMenuItem *item, m_menuItems) { + if (COCOA_MENU_ANCESTOR(item) == this) + SET_COCOA_MENU_ANCESTOR(item, 0); + } QCocoaAutoReleasePool pool; [m_nativeItem setSubmenu:nil]; [m_nativeMenu release]; diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.mm b/src/plugins/platforms/cocoa/qcocoamenuitem.mm index 58fe07bc628..da5475496aa 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.mm +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.mm @@ -105,6 +105,8 @@ QCocoaMenuItem::QCocoaMenuItem() : QCocoaMenuItem::~QCocoaMenuItem() { + if (m_menu && COCOA_MENU_ANCESTOR(m_menu) == this) + SET_COCOA_MENU_ANCESTOR(m_menu, 0); if (m_merged) { [m_native setHidden:YES]; } else {