diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 33f71fad58f..f9e8d73adbf 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -430,7 +431,7 @@ public: // SelectorTree // -class SelectorTree : public NavigationTreeView +class SelectorTree : public BaseTreeView { public: SelectorTree() diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 320127cfff0..64e03b9d77c 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -52,6 +52,7 @@ #include #include +#include #include #include #include @@ -333,9 +334,7 @@ public: Qt::ItemFlags flags(int column) const override { Q_UNUSED(column) - if (isEnabled()) - return Qt::ItemFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - return Qt::ItemIsSelectable; + return Qt::ItemFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); } QVariant data(int column, int role) const override @@ -348,6 +347,8 @@ public: } case Qt::DecorationRole: { + if (!isEnabled()) + return Utils::Icons::PLUS.icon(); Kit *k = KitManager::find(m_kitId); QTC_ASSERT(k, return QVariant()); if (!k->isValid()) @@ -357,6 +358,11 @@ public: break; } + case Qt::TextColorRole: { + if (!isEnabled()) + return Utils::creatorTheme()->color(Theme::TextColorDisabled); + } + case Qt::FontRole: { QFont font = parent()->data(column, role).value(); if (TargetItem *targetItem = parent()->currentTargetItem()) @@ -369,7 +375,11 @@ public: case Qt::ToolTipRole: { Kit *k = KitManager::find(m_kitId); QTC_ASSERT(k, return QVariant()); - return k->toHtml(); + QString toolTip; + if (!isEnabled()) + toolTip = "

" + tr("Click to activate:") + "

"; + toolTip += k->toHtml(); + return toolTip; } case PanelWidgetRole: @@ -396,6 +406,17 @@ public: return true; } + if (role == BaseTreeView::ItemClickedRole) { + if (!isEnabled()) { + Kit *k = KitManager::find(m_kitId); + Target *t = m_project->createTarget(k); + m_project->addTarget(t); + QTC_ASSERT(!data.isValid(), return false); + SessionManager::setActiveTarget(m_project, target(), SetActive::Cascade); + return true; + } + } + if (role == ItemActivatedFromBelowRole) { // I.e. 'Build' and 'Run' items were present and user clicked on them. int child = children().indexOf(data.value());