]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Do not delete sub menus of the control menu explicitly
authorFrank Reininghaus <frank78ac@googlemail.com>
Sun, 10 Jan 2016 10:18:30 +0000 (11:18 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Thu, 14 Jan 2016 19:36:28 +0000 (20:36 +0100)
This is not necessary because the sub menus are children of the main
menu, such that they are deleted together with the other actions by
QMenu::clear().

This prevents a crash that can happen if a sub menu is open while
another menu action is clicked.

Thanks to Fabian Vogt and Wolfgang Bauer for investigating this issue!

BUG: 354558
FIXED-IN: 15.12.2
REVIEW: 126693

src/dolphinmainwindow.cpp

index 9b05168fd57c522af1210526123d980d35b34b4d..81c55e814c26085adfd2a9bc69fee401dc3505ed 100644 (file)
@@ -789,8 +789,8 @@ void DolphinMainWindow::updateControlMenu()
     QMenu* menu = qobject_cast<QMenu*>(sender());
     Q_ASSERT(menu);
 
-    // All actions get cleared by QMenu::clear(). The sub-menus are deleted
-    // by connecting to the aboutToHide() signal from the parent-menu.
+    // All actions get cleared by QMenu::clear(). This includes the sub-menus
+    // because 'menu' is their parent.
     menu->clear();
 
     KActionCollection* ac = actionCollection();
@@ -840,7 +840,6 @@ void DolphinMainWindow::updateControlMenu()
 
     // Add "Go" menu
     QMenu* goMenu = new QMenu(i18nc("@action:inmenu", "Go"), menu);
-    connect(menu, &QMenu::aboutToHide, goMenu, &QMenu::deleteLater);
     goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Back)));
     goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward)));
     goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up)));
@@ -850,7 +849,6 @@ void DolphinMainWindow::updateControlMenu()
 
     // Add "Tool" menu
     QMenu* toolsMenu = new QMenu(i18nc("@action:inmenu", "Tools"), menu);
-    connect(menu, &QMenu::aboutToHide, toolsMenu, &QMenu::deleteLater);
     toolsMenu->addAction(ac->action("show_filter_bar"));
     toolsMenu->addAction(ac->action("compare_files"));
     toolsMenu->addAction(ac->action("open_terminal"));
@@ -864,7 +862,6 @@ void DolphinMainWindow::updateControlMenu()
 
     // Add "Help" menu
     QMenu* helpMenu = new QMenu(i18nc("@action:inmenu", "Help"), menu);
-    connect(menu, &QMenu::aboutToHide, helpMenu, &QMenu::deleteLater);
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::HelpContents)));
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
     helpMenu->addSeparator();