diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.cpp index e76c48ac9c..d9eb426441 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.cpp @@ -112,6 +112,22 @@ bool PdmUiTableViewDelegate::isEditorOpen() const return m_activeEditorCount > 0; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void PdmUiTableViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + QStyleOptionViewItemV4 viewItemOption(option); + + QVariant fgText = index.data(Qt::ForegroundRole); + + if (fgText.canConvert()){ + viewItemOption.palette.setColor(QPalette::Active, QPalette::HighlightedText, qvariant_cast(fgText)); + viewItemOption.palette.setColor(QPalette::Inactive, QPalette::HighlightedText, qvariant_cast(fgText)); + } + + this->QStyledItemDelegate::paint(painter, viewItemOption, index); +} } // end namespace caf diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.h b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.h index 82834eceaa..299b5c6ace 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.h +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewDelegate.h @@ -63,9 +63,12 @@ public: bool isEditorOpen() const; -protected slots: + protected slots: void slotEditorDestroyed(QObject* obj); +protected: + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; + private: PdmUiTableViewQModel* m_model; diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp index f83292367d..38d1185504 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp @@ -173,14 +173,27 @@ bool PdmUiTableViewQModel::setData(const QModelIndex &index, const QVariant &val //-------------------------------------------------------------------------------------------------- QVariant PdmUiTableViewQModel::data(const QModelIndex &index, int role /*= Qt::DisplayRole */) const { - if (role == Qt::TextColorRole) + if (role == Qt::ForegroundRole) { PdmFieldHandle* fieldHandle = getField(index); if (fieldHandle && fieldHandle->uiCapability()) { + QColor textColor = fieldHandle->uiCapability()->uiContentTextColor(m_currentConfigName); + if (fieldHandle->uiCapability()->isUiReadOnly(m_currentConfigName)) { - return Qt::lightGray; + if (textColor.isValid()) + { + return textColor.lighter(150); + } + else + { + return Qt::lightGray; + } + } + else if (textColor.isValid()) + { + return textColor; } } } @@ -317,7 +330,18 @@ QVariant PdmUiTableViewQModel::data(const QModelIndex &index, int role /*= Qt::D } } } - + else if ( role == Qt::ToolTipRole ) + { + PdmUiFieldHandle* uiFieldHandle = getField(index)->uiCapability(); + if ( uiFieldHandle ) + { + return uiFieldHandle->uiToolTip(); + } + else + { + return QVariant(); + } + } return QVariant(); }