From cc7ab7dc72ef6d22d2f0c50d97790c3ae0266c96 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 20 May 2025 11:05:34 +0200 Subject: [PATCH] Avoid session names that differ only in case Having such sessions is confusing in general, and on case-insensitive file systems leads to even more issues. Fixes: QTCREATORBUG-32523 Change-Id: Ie3e748d80d4711e831f53087f95b695ef697db7e Reviewed-by: Christian Kandeler --- src/plugins/coreplugin/sessiondialog.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/sessiondialog.cpp b/src/plugins/coreplugin/sessiondialog.cpp index 3fc53738506..a02988a4262 100644 --- a/src/plugins/coreplugin/sessiondialog.cpp +++ b/src/plugins/coreplugin/sessiondialog.cpp @@ -34,6 +34,8 @@ public: void fixup(QString & input) const override; QValidator::State validate(QString & input, int & pos) const override; private: + bool hasSession(const QString &input) const; + QStringList m_sessions; }; @@ -53,12 +55,17 @@ QValidator::State SessionValidator::validate(QString &input, int &pos) const || input.contains(QLatin1Char('*'))) return QValidator::Invalid; - if (m_sessions.contains(input)) + if (hasSession(input)) return QValidator::Intermediate; else return QValidator::Acceptable; } +bool SessionValidator::hasSession(const QString &input) const +{ + return m_sessions.contains(input, Qt::CaseInsensitive); +} + void SessionValidator::fixup(QString &input) const { int i = 2; @@ -66,7 +73,7 @@ void SessionValidator::fixup(QString &input) const do { copy = input + QLatin1String(" (") + QString::number(i) + QLatin1Char(')'); ++i; - } while (m_sessions.contains(copy)); + } while (hasSession(copy)); input = copy; }