From 3f1b622fb7203392de0fa9a8a058b807ee9d4006 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 17 Sep 2015 13:48:02 +0200 Subject: [PATCH] VariableManager: Do not try to expand Prefixes Resolving "Prefix:" does not make any sense, so let's not do that. Task-number: QTCREATORBUG-15072 Change-Id: Ia9741f9b48d269a7be31163ad73c3bc232856419 Reviewed-by: hjk --- src/libs/utils/macroexpander.cpp | 17 ++++++++++++++--- src/libs/utils/macroexpander.h | 1 + src/plugins/coreplugin/variablechooser.cpp | 7 +++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/macroexpander.cpp b/src/libs/utils/macroexpander.cpp index 159974d0d23..c4edccbdd60 100644 --- a/src/libs/utils/macroexpander.cpp +++ b/src/libs/utils/macroexpander.cpp @@ -302,6 +302,14 @@ QString MacroExpander::expandProcessArgs(const QString &argsWithVariables) const return QtcProcess::expandMacros(argsWithVariables, d); } +static QByteArray fullPrefix(const QByteArray &prefix) +{ + QByteArray result = prefix; + if (!result.endsWith(':')) + result.append(':'); + return result; +} + /*! * Makes the given string-valued \a prefix known to the variable manager, * together with a localized \a description. @@ -314,9 +322,7 @@ QString MacroExpander::expandProcessArgs(const QString &argsWithVariables) const void MacroExpander::registerPrefix(const QByteArray &prefix, const QString &description, const MacroExpander::PrefixFunction &value) { - QByteArray tmp = prefix; - if (!tmp.endsWith(':')) - tmp.append(':'); + QByteArray tmp = fullPrefix(prefix); d->m_descriptions.insert(tmp + "", description); d->m_prefixMap.insert(tmp, value); } @@ -430,6 +436,11 @@ QString MacroExpander::variableDescription(const QByteArray &variable) const return d->m_descriptions.value(variable); } +bool MacroExpander::isPrefixVariable(const QByteArray &variable) const +{ + return d->m_prefixMap.contains(fullPrefix(variable)); +} + MacroExpanderProviders MacroExpander::subProviders() const { return d->m_subProviders; diff --git a/src/libs/utils/macroexpander.h b/src/libs/utils/macroexpander.h index 30343735efd..7bbd9a347a7 100644 --- a/src/libs/utils/macroexpander.h +++ b/src/libs/utils/macroexpander.h @@ -89,6 +89,7 @@ public: QList visibleVariables() const; QString variableDescription(const QByteArray &variable) const; + bool isPrefixVariable(const QByteArray &variable) const; MacroExpanderProviders subProviders() const; diff --git a/src/plugins/coreplugin/variablechooser.cpp b/src/plugins/coreplugin/variablechooser.cpp index 731cd0c2dbf..09aa1c8c4a4 100644 --- a/src/plugins/coreplugin/variablechooser.cpp +++ b/src/plugins/coreplugin/variablechooser.cpp @@ -177,8 +177,11 @@ public: } if (role == Qt::ToolTipRole) { - QString description = m_expander->variableDescription(m_variable.toUtf8()); - const QString value = m_expander->value(m_variable.toUtf8()).toHtmlEscaped(); + const QByteArray var = m_variable.toUtf8(); + QString description = m_expander->variableDescription(var); + QString value; + if (!m_expander->isPrefixVariable(var)) + value = m_expander->value(var).toHtmlEscaped(); if (!value.isEmpty()) description += QLatin1String("

") + VariableChooser::tr("Current Value: %1").arg(value); return description;