forked from qt-creator/qt-creator
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 <christian.kandeler@qt.io>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user