diff options
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/utils/environment.cpp | 7 | ||||
-rw-r--r-- | src/libs/utils/environment.h | 1 | ||||
-rw-r--r-- | src/libs/utils/environmentmodel.cpp | 7 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 0705c300818..74534eeaf4b 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -500,7 +500,7 @@ Environment::const_iterator Environment::constEnd() const Environment::const_iterator Environment::constFind(const QString &name) const { - return m_values.constFind(name); + return findKey(m_values, m_osType, name); } int Environment::size() const @@ -567,6 +567,11 @@ bool Environment::hasKey(const QString &key) const return m_values.contains(key); } +OsType Environment::osType() const +{ + return m_osType; +} + QString Environment::userName() const { return value(QString::fromLatin1(m_osType == OsTypeWindows ? "USERNAME" : "USER")); diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h index e3a382daf04..4fed80a8bb3 100644 --- a/src/libs/utils/environment.h +++ b/src/libs/utils/environment.h @@ -91,6 +91,7 @@ public: /// Return the Environment changes necessary to modify this into the other environment. QList<EnvironmentItem> diff(const Environment &other, bool checkAppendPrepend = false) const; bool hasKey(const QString &key) const; + OsType osType() const; QString userName() const; diff --git a/src/libs/utils/environmentmodel.cpp b/src/libs/utils/environmentmodel.cpp index 4191d3abeee..fde8e7ad550 100644 --- a/src/libs/utils/environmentmodel.cpp +++ b/src/libs/utils/environmentmodel.cpp @@ -364,6 +364,13 @@ void EnvironmentModel::setUserChanges(QList<EnvironmentItem> list) name = name.trimmed(); if (name.startsWith(QLatin1String("export "))) name = name.mid(7).trimmed(); + if (d->m_baseEnvironment.osType() == OsTypeWindows) { + // Environment variable names are case-insensitive under windows, but we still + // want to preserve the case of pre-existing variables. + auto it = d->m_baseEnvironment.constFind(name); + if (it != d->m_baseEnvironment.constEnd()) + name = d->m_baseEnvironment.key(it); + } } d->updateResultEnvironment(); |