aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-07-09 16:24:12 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-07-10 13:38:26 +0000
commit14aa0122e69243cdaa0ee22e8bcafdacb81bf490 (patch)
tree4d632535b65ae3f253d1a2a0fde4292742bd9a76 /src/libs
parent61b4ef6bfaf1d67862fa8e05ef4db1874aa4ad16 (diff)
Macro expander: Allow alternative substitution character
The forward slash is a poor choice on Windows for fields containing file paths, as it gets auto-converted to a backslash when used in a path chooser. Fixes: QTCREATORBUG-22276 Change-Id: I1d22d2031909b24c72aad4781995418efd394039 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/utils/stringutils.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/libs/utils/stringutils.cpp b/src/libs/utils/stringutils.cpp
index 161cf44e74..f73e9d8144 100644
--- a/src/libs/utils/stringutils.cpp
+++ b/src/libs/utils/stringutils.cpp
@@ -136,6 +136,7 @@ bool AbstractMacroExpander::expandNestedMacros(const QString &str, int *pos, QSt
QString *currArg = &varName;
QChar prev;
QChar c;
+ QChar replacementChar;
bool replaceAll = false;
int i = *pos;
@@ -192,13 +193,14 @@ bool AbstractMacroExpander::expandNestedMacros(const QString &str, int *pos, QSt
} else if (currArg == &varName && c == '-' && prev == ':' && validateVarName(varName)) {
varName.chop(1);
currArg = &defaultValue;
- } else if (currArg == &varName && c == '/' && validateVarName(varName)) {
+ } else if (currArg == &varName && (c == '/' || c == '#') && validateVarName(varName)) {
+ replacementChar = c;
currArg = &pattern;
- if (i < strLen && str.at(i) == '/') {
+ if (i < strLen && str.at(i) == replacementChar) {
++i;
replaceAll = true;
}
- } else if (currArg == &pattern && c == '/') {
+ } else if (currArg == &pattern && c == replacementChar) {
currArg = &replace;
} else {
*currArg += c;