diff --git a/src/plugins/coreplugin/variablechooser.cpp b/src/plugins/coreplugin/variablechooser.cpp index 8553b9e0ceb..9dc79a15294 100644 --- a/src/plugins/coreplugin/variablechooser.cpp +++ b/src/plugins/coreplugin/variablechooser.cpp @@ -161,12 +161,19 @@ public: MacroExpanderProvider m_provider; }; -class VariableItem : public TreeItem +class VariableItem : public TypedTreeItem { public: VariableItem() {} - QVariant data(int column, int role) const + Qt::ItemFlags flags(int) const override + { + if (m_variable == parent()->m_chooser->m_currentVariableName) + return Qt::ItemIsSelectable; + return Qt::ItemIsSelectable|Qt::ItemIsEnabled; + } + + QVariant data(int column, int role) const override { if (role == Qt::DisplayRole || role == Qt::EditRole) { if (column == 0) @@ -174,28 +181,27 @@ public: } if (role == Qt::ToolTipRole) { - const QByteArray var = m_variable.toUtf8(); - QString description = m_expander->variableDescription(var); + QString description = m_expander->variableDescription(m_variable); QString value; - if (!m_expander->isPrefixVariable(var)) - value = m_expander->value(var).toHtmlEscaped(); + if (!m_expander->isPrefixVariable(m_variable)) + value = m_expander->value(m_variable).toHtmlEscaped(); if (!value.isEmpty()) description += QLatin1String("

") + VariableChooser::tr("Current Value: %1").arg(value); return description; } if (role == UnexpandedTextRole) - return QString(QLatin1String("%{") + m_variable + QLatin1Char('}')); + return QString::fromUtf8("%{" + m_variable + '}'); if (role == ExpandedTextRole) - return m_expander->expand(QLatin1String("%{") + m_variable + QLatin1Char('}')); + return m_expander->expand(QString::fromUtf8("%{" + m_variable + '}')); return QVariant(); } public: MacroExpander *m_expander; - QString m_variable; + QByteArray m_variable; }; void VariableTreeView::contextMenuEvent(QContextMenuEvent *ev) @@ -279,10 +285,8 @@ void VariableGroupItem::populateGroup(MacroExpander *expander) foreach (const QByteArray &variable, expander->visibleVariables()) { auto item = new VariableItem; - item->m_variable = QString::fromUtf8(variable); + item->m_variable = variable; item->m_expander = expander; - if (variable == m_chooser->m_currentVariableName) - item->setFlags(Qt::ItemIsSelectable); // not ItemIsEnabled appendChild(item); }