From 2bd846f8da8c6e8c61539f2cc986df4602e5d80e Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 17 Apr 2013 17:39:15 +0200 Subject: [PATCH] Cocoa Menu: Remove unnecessary retain, release/retain in the right order MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also, make sure platform menu item is deleted on ActionRemoved event. Change-Id: Ic07a81cb77833bdffd1464abf1c81ebdee4d16e9 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoamenuitem.mm | 7 ++----- src/widgets/widgets/qmenu.cpp | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.mm b/src/plugins/platforms/cocoa/qcocoamenuitem.mm index dd99a6f3bce..350ef8a16a0 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.mm +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.mm @@ -218,8 +218,6 @@ NSMenuItem *QCocoaMenuItem::sync() mergeItem = [loader aboutMenuItem]; else mergeItem = [loader aboutQtMenuItem]; - - m_merged = true; } else if (m_text.startsWith(tr("Config"), Qt::CaseInsensitive) || m_text.startsWith(tr("Preference"), Qt::CaseInsensitive) || m_text.startsWith(tr("Options"), Qt::CaseInsensitive) @@ -240,9 +238,9 @@ NSMenuItem *QCocoaMenuItem::sync() if (mergeItem) { m_merged = true; + [mergeItem retain]; [m_native release]; m_native = mergeItem; - [m_native retain]; // balance out release! [m_native setTag:reinterpret_cast(this)]; } else if (m_merged) { // was previously merged, but no longer @@ -256,13 +254,12 @@ NSMenuItem *QCocoaMenuItem::sync() m_native = [[NSMenuItem alloc] initWithTitle:QCFString::toNSString(m_text) action:nil keyEquivalent:@""]; - [m_native retain]; [m_native setTag:reinterpret_cast(this)]; } // [m_native setHidden:YES]; // [m_native setHidden:NO]; - [m_native setHidden: !m_isVisible]; + [m_native setHidden: !m_isVisible]; [m_native setEnabled: m_enabled]; QString text = m_text; QKeySequence accel = m_shortcut; diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 6b02e7371f4..aaedd7ffeea 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -3004,6 +3004,7 @@ void QMenu::actionEvent(QActionEvent *e) } else if (e->type() == QEvent::ActionRemoved) { QPlatformMenuItem *menuItem = d->platformMenu->menuItemForTag(reinterpret_cast(e->action())); d->platformMenu->removeMenuItem(menuItem); + delete menuItem; } else if (e->type() == QEvent::ActionChanged) { QPlatformMenuItem *menuItem = d->platformMenu->menuItemForTag(reinterpret_cast(e->action())); copyActionToPlatformItem(e->action(), menuItem);