diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 3f1c22357f5bcf29961ed46da53dad9da817e909..90c66491c5b9c91e29c9bc4ee874028a25a06cf8 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -989,6 +989,11 @@ QString SessionManager::activeSession() const return m_sessionName; } + bool caseInsensitiveLessThan(const QString &s1, const QString &s2) + { + return s1.toLower() < s2.toLower(); + } + QStringList SessionManager::sessions() const { if (m_sessions.isEmpty()) { @@ -1001,6 +1006,7 @@ QStringList SessionManager::sessions() const m_sessions << fileInfo.completeBaseName(); } m_sessions.prepend("default"); + qSort(m_sessions.begin(), m_sessions.end(), caseInsensitiveLessThan); } return m_sessions; } @@ -1021,6 +1027,7 @@ bool SessionManager::createSession(const QString &session) if (sessions().contains(session)) return false; m_sessions.append(session); + qSort(m_sessions.begin(), m_sessions.end(), caseInsensitiveLessThan); return true; } @@ -1044,6 +1051,7 @@ bool SessionManager::cloneSession(const QString &original, const QString &clone) // If the file does not exist, we can still clone if (!fi.exists() || fi.copy(sessionNameToFileName(clone))) { m_sessions.append(clone); + qSort(m_sessions.begin(), m_sessions.end(), caseInsensitiveLessThan); return true; } return false; diff --git a/src/plugins/projectexplorer/sessiondialog.cpp b/src/plugins/projectexplorer/sessiondialog.cpp index 7ef8d63fd4e01c36c54a2afe25fa17660045ad43..89b0a489bb3e7bb635f904f7a43c0f8b55cde98d 100644 --- a/src/plugins/projectexplorer/sessiondialog.cpp +++ b/src/plugins/projectexplorer/sessiondialog.cpp @@ -164,8 +164,10 @@ void SessionDialog::createNew() return; m_sessionManager->createSession(newSession); - m_ui.sessionList->addItem(newSession); - m_ui.sessionList->setCurrentRow(m_ui.sessionList->count() - 1); + m_ui.sessionList->clear(); + QStringList sessions = m_sessionManager->sessions(); + m_ui.sessionList->addItems(sessions); + m_ui.sessionList->setCurrentRow(sessions.indexOf(newSession)); } } @@ -174,8 +176,12 @@ void SessionDialog::clone() NewSessionInputDialog newSessionInputDialog(m_sessionManager->sessions()); if (newSessionInputDialog.exec() == QDialog::Accepted) { QString newSession = newSessionInputDialog.value(); - if (m_sessionManager->cloneSession(m_ui.sessionList->currentItem()->text(), newSession)) - m_ui.sessionList->addItem(newSession); + if (m_sessionManager->cloneSession(m_ui.sessionList->currentItem()->text(), newSession)) { + m_ui.sessionList->clear(); + QStringList sessions = m_sessionManager->sessions(); + m_ui.sessionList->addItems(sessions); + m_ui.sessionList->setCurrentRow(sessions.indexOf(newSession)); + } } }