summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h
index 479d4b53c2..c523b27076 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.h
+++ b/src/plugins/platforms/cocoa/qcocoamenu.h
@@ -59,6 +59,7 @@ class QCocoaMenu : public QPlatformMenu
{
public:
QCocoaMenu();
+ ~QCocoaMenu();
inline virtual void setTag(quintptr tag)
{ m_tag = tag; }
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index 951bbb90c3..a39263ecab 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -107,6 +107,14 @@ QCocoaMenu::QCocoaMenu() :
[m_nativeItem setSubmenu:m_nativeMenu];
}
+QCocoaMenu::~QCocoaMenu()
+{
+ [m_nativeItem setSubmenu:nil];
+ [m_nativeMenu release];
+ [m_delegate release];
+ [m_nativeItem release];
+}
+
void QCocoaMenu::setText(const QString &text)
{
QCocoaAutoReleasePool pool;
@@ -142,6 +150,7 @@ void QCocoaMenu::insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem)
if (item->isMerged())
return;
+ Q_ASSERT([item->nsItem() menu] == NULL);
// if the item we're inserting before is merged, skip along until
// we find a non-merged real item to insert ahead of.
while (beforeItem && beforeItem->isMerged()) {
@@ -163,6 +172,7 @@ void QCocoaMenu::removeMenuItem(QPlatformMenuItem *menuItem)
Q_ASSERT(m_menuItems.contains(cocoaItem));
m_menuItems.removeOne(cocoaItem);
if (!cocoaItem->isMerged()) {
+ Q_ASSERT(m_nativeMenu == [cocoaItem->nsItem() menu]);
[m_nativeMenu removeItem: cocoaItem->nsItem()];
}
}