From f7a0a3cd26a0b9e967bc6ccdbbb51b60be673fee Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 22 Mar 2018 10:13:19 +0100 Subject: [PATCH] ProjectTree: Do not use disabled state for disabled nodes Rendering disabled nodes using the disabled state in the painter breaks themes as it introduces a discrepancy between the actual state of the node and its graphical representation. IIRC this was introduced since there was no easy way to find what color was supposed to be used for disabled items. That is no longer the case, so let's clean this up. Change-Id: Ic5653cd970e07eb680cb1d28d1feefd70aded540 Reviewed-by: Alessandro Portale --- src/plugins/projectexplorer/project.h | 1 - src/plugins/projectexplorer/projectmodels.cpp | 11 +++++++---- src/plugins/projectexplorer/projectmodels.h | 2 ++ src/plugins/projectexplorer/projecttreewidget.cpp | 6 ++---- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 8451103cc33..02bd31f7e33 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -88,7 +88,6 @@ public: enum ModelRoles { // Absolute file path FilePathRole = QFileSystemModel::FilePathRole, - EnabledRole, isParsingRole }; diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 558ae45a6a0..05accb7e530 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -89,6 +89,9 @@ FlatModel::FlatModel(QObject *parent) for (Project *project : SessionManager::projects()) handleProjectAdded(project); + + m_disabledTextColor = Utils::creatorTheme()->color(Utils::Theme::TextColorDisabled); + m_enabledTextColor = Utils::creatorTheme()->color(Utils::Theme::TextColorNormal); } QVariant FlatModel::data(const QModelIndex &index, int role) const @@ -137,12 +140,12 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const result = font; break; } - case Project::FilePathRole: { - result = node->filePath().toString(); + case Qt::TextColorRole: { + result = node->isEnabled() ? m_enabledTextColor : m_disabledTextColor; break; } - case Project::EnabledRole: { - result = node->isEnabled(); + case Project::FilePathRole: { + result = node->filePath().toString(); break; } case Project::isParsingRole: { diff --git a/src/plugins/projectexplorer/projectmodels.h b/src/plugins/projectexplorer/projectmodels.h index b842f3d5ec4..952fc096518 100644 --- a/src/plugins/projectexplorer/projectmodels.h +++ b/src/plugins/projectexplorer/projectmodels.h @@ -109,6 +109,8 @@ private: QTimer m_timer; QSet m_toExpand; + QColor m_enabledTextColor; + QColor m_disabledTextColor; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 01288a22e0e..ea4081698a6 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -93,12 +93,10 @@ public: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override { - QStyleOptionViewItem opt = option; - if (!index.data(Project::EnabledRole).toBool()) - opt.state &= ~QStyle::State_Enabled; - QStyledItemDelegate::paint(painter, opt, index); + QStyledItemDelegate::paint(painter, option, index); if (index.data(Project::isParsingRole).toBool()) { + QStyleOptionViewItem opt = option; initStyleOption(&opt, index); ProgressIndicatorPainter *indicator = findOrCreateIndicatorPainter(index);