Fix crash in Manage Profile Dialog

In KDE5, KMenu* KActionMenu::menu() no longer creates a KMenu if it
doesn't exist.

Thanks to Arjun Ak arjunak234 gmail com

REVIEW: 119004
wilder-portage
Kurt Hindenburg 12 years ago
parent dd1b2b4df0
commit 86ee13f583
  1. 23
      src/MainWindow.cpp

@ -394,32 +394,37 @@ void MainWindow::profileListChanged(const QList<QAction*>& sessionActions)
// it if it is the non-default profile.
if (sessionActions.size() > 2) {
// Update the 'New Tab' KActionMenu
QMenu* newTabMenu = _newTabMenuAction->menu();
newTabMenu->clear();
if (_newTabMenuAction->menu()) {
_newTabMenuAction->menu()->clear();
} else {
_newTabMenuAction->setMenu(new QMenu());
}
foreach(QAction* sessionAction, sessionActions) {
newTabMenu->addAction(sessionAction);
_newTabMenuAction->menu()->addAction(sessionAction);
// NOTE: defaultProfile seems to not work here, sigh.
Profile::Ptr profile = ProfileManager::instance()->defaultProfile();
if (profile && profile->name() == sessionAction->text().remove('&')) {
sessionAction->setIcon(KIcon(profile->icon(), 0, QStringList("emblem-favorite")));
newTabMenu->setDefaultAction(sessionAction);
_newTabMenuAction->menu()->setDefaultAction(sessionAction);
QFont actionFont = sessionAction->font();
actionFont.setBold(true);
sessionAction->setFont(actionFont);
}
}
} else {
QMenu* newTabMenu = _newTabMenuAction->menu();
newTabMenu->clear();
if (_newTabMenuAction->menu()) {
_newTabMenuAction->menu()->clear();
} else {
_newTabMenuAction->setMenu(new QMenu());
}
Profile::Ptr profile = ProfileManager::instance()->defaultProfile();
// NOTE: Compare names w/o any '&'
if (sessionActions.size() == 2 && sessionActions[1]->text().remove('&') != profile->name()) {
newTabMenu->addAction(sessionActions[1]);
_newTabMenuAction->menu()->addAction(sessionActions[1]);
} else {
delete newTabMenu;
_newTabMenuAction->menu()->deleteLater();
}
}
}

Loading…
Cancel
Save