diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f9149786bea059f72c96afce478f92f3185c96f4..7a971739ce882924494a6a43df02e2c24374f29a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1783,22 +1783,25 @@ void ProjectExplorerPlugin::openWithMenuTriggered(QAction *action) void ProjectExplorerPlugin::updateSessionMenu() { m_sessionMenu->clear(); + QActionGroup *ag = new QActionGroup(m_sessionMenu); + connect(ag, SIGNAL(triggered(QAction *)), this, SLOT(setSession(QAction *))); const QString &activeSession = m_session->activeSession(); foreach (const QString &session, m_session->sessions()) { - QAction *act = m_sessionMenu->addAction(session, this, SLOT(setSession())); + QAction *act = ag->addAction(session); act->setCheckable(true); if (session == activeSession) act->setChecked(true); } + m_sessionMenu->addActions(ag->actions()); m_sessionMenu->addSeparator(); m_sessionMenu->addAction(m_sessionManagerAction); m_sessionMenu->setEnabled(true); } -void ProjectExplorerPlugin::setSession() +void ProjectExplorerPlugin::setSession(QAction *action) { - QString session = static_cast<QAction *>(sender())->text(); + QString session = action->text(); if (session != m_session->activeSession()) m_session->loadSession(session); } diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 97eb684bb4993faed9c2edf54a894b074778cd08..9cce2c87f54d794a952fd971b153baa0acb28a70 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -151,7 +151,7 @@ private slots: void populateOpenWithMenu(); void openWithMenuTriggered(QAction *action); void updateSessionMenu(); - void setSession(); + void setSession(QAction *action); void restoreSession(); void loadSession(const QString &session);