mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Do not delete sub menus of the control menu explicitly
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
This commit is contained in:
parent
508ad6cbd0
commit
ddc050f235
|
@ -789,8 +789,8 @@ void DolphinMainWindow::updateControlMenu()
|
||||||
QMenu* menu = qobject_cast<QMenu*>(sender());
|
QMenu* menu = qobject_cast<QMenu*>(sender());
|
||||||
Q_ASSERT(menu);
|
Q_ASSERT(menu);
|
||||||
|
|
||||||
// All actions get cleared by QMenu::clear(). The sub-menus are deleted
|
// All actions get cleared by QMenu::clear(). This includes the sub-menus
|
||||||
// by connecting to the aboutToHide() signal from the parent-menu.
|
// because 'menu' is their parent.
|
||||||
menu->clear();
|
menu->clear();
|
||||||
|
|
||||||
KActionCollection* ac = actionCollection();
|
KActionCollection* ac = actionCollection();
|
||||||
|
@ -840,7 +840,6 @@ void DolphinMainWindow::updateControlMenu()
|
||||||
|
|
||||||
// Add "Go" menu
|
// Add "Go" menu
|
||||||
QMenu* goMenu = new QMenu(i18nc("@action:inmenu", "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::Back)));
|
||||||
goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward)));
|
goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward)));
|
||||||
goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up)));
|
goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up)));
|
||||||
|
@ -850,7 +849,6 @@ void DolphinMainWindow::updateControlMenu()
|
||||||
|
|
||||||
// Add "Tool" menu
|
// Add "Tool" menu
|
||||||
QMenu* toolsMenu = new QMenu(i18nc("@action:inmenu", "Tools"), 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("show_filter_bar"));
|
||||||
toolsMenu->addAction(ac->action("compare_files"));
|
toolsMenu->addAction(ac->action("compare_files"));
|
||||||
toolsMenu->addAction(ac->action("open_terminal"));
|
toolsMenu->addAction(ac->action("open_terminal"));
|
||||||
|
@ -864,7 +862,6 @@ void DolphinMainWindow::updateControlMenu()
|
||||||
|
|
||||||
// Add "Help" menu
|
// Add "Help" menu
|
||||||
QMenu* helpMenu = new QMenu(i18nc("@action:inmenu", "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::HelpContents)));
|
||||||
helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
|
helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
|
||||||
helpMenu->addSeparator();
|
helpMenu->addSeparator();
|
||||||
|
|
Loading…
Reference in a new issue