diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qmenu.cpp | 8 | ||||
-rw-r--r-- | src/widgets/widgets/qmenu_p.h | 5 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index aaedd7ffee..fde46c9729 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -154,7 +154,7 @@ void QMenuPrivate::init() } platformMenu = QGuiApplicationPrivate::platformTheme()->createPlatformMenu(); - if (platformMenu) { + if (!platformMenu.isNull()) { QObject::connect(platformMenu, SIGNAL(aboutToShow()), q, SIGNAL(aboutToShow())); QObject::connect(platformMenu, SIGNAL(aboutToHide()), q, SIGNAL(aboutToHide())); } @@ -2411,7 +2411,7 @@ void QMenu::changeEvent(QEvent *e) if (d->tornPopup) // torn-off menu d->tornPopup->setEnabled(isEnabled()); d->menuAction->setEnabled(isEnabled()); - if (d->platformMenu) + if (!d->platformMenu.isNull()) d->platformMenu->setEnabled(isEnabled()); } QWidget::changeEvent(e); @@ -2992,7 +2992,7 @@ void QMenu::actionEvent(QActionEvent *e) d->widgetItems.remove(e->action()); } - if (d->platformMenu) { + if (!d->platformMenu.isNull()) { if (e->type() == QEvent::ActionAdded) { QPlatformMenuItem *menuItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem(); @@ -3201,7 +3201,7 @@ void QMenu::setSeparatorsCollapsible(bool collapse) d->updateActionRects(); update(); } - if (d->platformMenu) + if (!d->platformMenu.isNull()) d->platformMenu->syncSeparatorsCollapsible(collapse); } diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h index 6cc88c56e2..15f3c92127 100644 --- a/src/widgets/widgets/qmenu_p.h +++ b/src/widgets/widgets/qmenu_p.h @@ -101,7 +101,8 @@ public: ~QMenuPrivate() { delete scroll; - delete platformMenu; + if (!platformMenu.isNull() && !platformMenu->parent()) + delete platformMenu.data(); #if defined(Q_OS_WINCE) && !defined(QT_NO_MENUBAR) delete wce_menu; #endif @@ -228,7 +229,7 @@ public: //menu fading/scrolling effects bool doChildEffects; - QPlatformMenu *platformMenu; + QPointer<QPlatformMenu> platformMenu; QPointer<QAction> actionAboutToTrigger; |