diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-07-09 16:24:12 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-07-10 13:38:26 +0000 |
commit | 14aa0122e69243cdaa0ee22e8bcafdacb81bf490 (patch) | |
tree | 4d632535b65ae3f253d1a2a0fde4292742bd9a76 /src/libs | |
parent | 61b4ef6bfaf1d67862fa8e05ef4db1874aa4ad16 (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.cpp | 8 |
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; |