Skip to content

Commit 38e0502

Browse files
committed
Fix invalid background/text colors showing in attribute table
1 parent eba4d03 commit 38e0502

File tree

1 file changed

+43
-33
lines changed

1 file changed

+43
-33
lines changed

src/gui/attributetable/qgsattributetablemodel.cpp

+43-33
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ QVariant QgsAttributeTableModel::data( const QModelIndex &index, int role ) cons
561561
if ( index.column() >= mFieldCount )
562562
return QVariant();
563563

564-
int fieldId = mAttributes[index.column()];
564+
int fieldId = mAttributes.at( index.column() );
565565

566566
if ( role == FieldIndexRole )
567567
return fieldId;
@@ -596,46 +596,56 @@ QVariant QgsAttributeTableModel::data( const QModelIndex &index, int role ) cons
596596

597597
QVariant val = mFeat.attribute( fieldId );
598598

599-
if ( role == Qt::DisplayRole )
599+
switch ( role )
600600
{
601-
return mWidgetFactories[index.column()]->representValue( layer(), fieldId, mWidgetConfigs[index.column()], mAttributeWidgetCaches[index.column()], val );
602-
}
601+
case Qt::DisplayRole:
602+
return mWidgetFactories.at( index.column() )->representValue( layer(), fieldId, mWidgetConfigs.at( index.column() ),
603+
mAttributeWidgetCaches.at( index.column() ), val );
603604

604-
if ( role == Qt::BackgroundColorRole || role == Qt::TextColorRole || role == Qt::DecorationRole || role == Qt::FontRole )
605-
{
606-
mExpressionContext.setFeature( mFeat );
607-
QList<QgsConditionalStyle> styles;
608-
if ( mRowStylesMap.contains( index.row() ) )
609-
{
610-
styles = mRowStylesMap[index.row()];
611-
}
612-
else
605+
case Qt::EditRole:
606+
return val;
607+
608+
case Qt::BackgroundColorRole:
609+
case Qt::TextColorRole:
610+
case Qt::DecorationRole:
611+
case Qt::FontRole:
613612
{
614-
styles = QgsConditionalStyle::matchingConditionalStyles( layer()->conditionalStyles()->rowStyles(), QVariant(), mExpressionContext );
615-
mRowStylesMap.insert( index.row(), styles );
613+
mExpressionContext.setFeature( mFeat );
614+
QList<QgsConditionalStyle> styles;
615+
if ( mRowStylesMap.contains( index.row() ) )
616+
{
617+
styles = mRowStylesMap[index.row()];
618+
}
619+
else
620+
{
621+
styles = QgsConditionalStyle::matchingConditionalStyles( layer()->conditionalStyles()->rowStyles(), QVariant(), mExpressionContext );
622+
mRowStylesMap.insert( index.row(), styles );
616623

617-
}
624+
}
618625

619-
QgsConditionalStyle rowstyle = QgsConditionalStyle::compressStyles( styles );
620-
styles = layer()->conditionalStyles()->fieldStyles( field.name() );
621-
styles = QgsConditionalStyle::matchingConditionalStyles( styles , val, mExpressionContext );
622-
styles.insert( 0, rowstyle );
623-
QgsConditionalStyle style = QgsConditionalStyle::compressStyles( styles );
626+
QgsConditionalStyle rowstyle = QgsConditionalStyle::compressStyles( styles );
627+
styles = layer()->conditionalStyles()->fieldStyles( field.name() );
628+
styles = QgsConditionalStyle::matchingConditionalStyles( styles , val, mExpressionContext );
629+
styles.insert( 0, rowstyle );
630+
QgsConditionalStyle style = QgsConditionalStyle::compressStyles( styles );
624631

625-
if ( style.isValid() )
626-
{
627-
if ( role == Qt::BackgroundColorRole && style.validBackgroundColor() )
628-
return style.backgroundColor();
629-
if ( role == Qt::TextColorRole && style.validTextColor() )
630-
return style.textColor();
631-
if ( role == Qt::DecorationRole )
632-
return style.icon();
633-
if ( role == Qt::FontRole )
634-
return style.font();
635-
}
632+
if ( style.isValid() )
633+
{
634+
if ( role == Qt::BackgroundColorRole && style.validBackgroundColor() )
635+
return style.backgroundColor();
636+
if ( role == Qt::TextColorRole && style.validTextColor() )
637+
return style.textColor();
638+
if ( role == Qt::DecorationRole )
639+
return style.icon();
640+
if ( role == Qt::FontRole )
641+
return style.font();
642+
}
636643

644+
return QVariant();
645+
}
637646
}
638-
return val;
647+
648+
return QVariant();
639649
}
640650

641651
bool QgsAttributeTableModel::setData( const QModelIndex &index, const QVariant &value, int role )

0 commit comments

Comments
 (0)