Skip to content

Commit 314c399

Browse files
committedDec 28, 2018
Fix missing color cell in color ramp shader widget for non-default theme
(fixes #15913)
1 parent 4ea6c9c commit 314c399

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed
 

‎src/gui/raster/qgscolorrampshaderwidget.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ QgsColorRampShaderWidget::QgsColorRampShaderWidget( QWidget *parent )
6161
contextMenu->addAction( tr( "Change Color…" ), this, SLOT( changeColor() ) );
6262
contextMenu->addAction( tr( "Change Opacity…" ), this, SLOT( changeOpacity() ) );
6363

64+
mSwatchDelegate = new QgsColorSwatchDelegate( this );
65+
mColormapTreeWidget->setItemDelegateForColumn( ColorColumn, mSwatchDelegate );
6466
mColormapTreeWidget->setColumnWidth( ColorColumn, 50 );
6567
mColormapTreeWidget->setContextMenuPolicy( Qt::CustomContextMenu );
6668
mColormapTreeWidget->setSelectionMode( QAbstractItemView::ExtendedSelection );
@@ -135,7 +137,7 @@ QgsColorRampShader QgsColorRampShaderWidget::shader() const
135137
}
136138
QgsColorRampShader::ColorRampItem newColorRampItem;
137139
newColorRampItem.value = currentItem->text( ValueColumn ).toDouble();
138-
newColorRampItem.color = currentItem->background( ColorColumn ).color();
140+
newColorRampItem.color = currentItem->data( ColorColumn, Qt::EditRole ).value<QColor>();
139141
newColorRampItem.label = currentItem->text( LabelColumn );
140142
colorRampItems.append( newColorRampItem );
141143
}
@@ -264,7 +266,7 @@ void QgsColorRampShaderWidget::mAddEntryButton_clicked()
264266
{
265267
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject( mColormapTreeWidget );
266268
newItem->setText( ValueColumn, QStringLiteral( "0" ) );
267-
newItem->setBackground( ColorColumn, QBrush( QColor( Qt::magenta ) ) );
269+
newItem->setData( ColorColumn, Qt::EditRole, QColor( Qt::magenta ) );
268270
newItem->setText( LabelColumn, QString() );
269271
newItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
270272
connect( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -325,7 +327,7 @@ void QgsColorRampShaderWidget::classify()
325327
{
326328
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject( mColormapTreeWidget );
327329
newItem->setText( ValueColumn, QString::number( it->value, 'g', 15 ) );
328-
newItem->setBackground( ColorColumn, QBrush( it->color ) );
330+
newItem->setData( ColorColumn, Qt::EditRole, it->color );
329331
newItem->setText( LabelColumn, it->label );
330332
newItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
331333
connect( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -379,7 +381,7 @@ void QgsColorRampShaderWidget::populateColormapTreeWidget( const QList<QgsColorR
379381
{
380382
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject( mColormapTreeWidget );
381383
newItem->setText( ValueColumn, QString::number( it->value, 'g', 15 ) );
382-
newItem->setBackground( ColorColumn, QBrush( it->color ) );
384+
newItem->setData( ColorColumn, Qt::EditRole, it->color );
383385
newItem->setText( LabelColumn, it->label );
384386
newItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
385387
connect( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -545,7 +547,7 @@ void QgsColorRampShaderWidget::mExportToFileButton_clicked()
545547
{
546548
continue;
547549
}
548-
color = currentItem->background( ColorColumn ).color();
550+
color = currentItem->data( ColorColumn, Qt::EditRole ).value<QColor>();
549551
outputStream << currentItem->text( ValueColumn ).toDouble() << ',';
550552
outputStream << color.red() << ',' << color.green() << ',' << color.blue() << ',' << color.alpha() << ',';
551553
if ( currentItem->text( LabelColumn ).isEmpty() )
@@ -580,10 +582,10 @@ void QgsColorRampShaderWidget::mColormapTreeWidget_itemDoubleClicked( QTreeWidge
580582
if ( column == ColorColumn )
581583
{
582584
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
583-
QColor newColor = QgsColorDialog::getColor( item->background( column ).color(), this, QStringLiteral( "Change Color" ), true );
585+
QColor newColor = QgsColorDialog::getColor( item->data( column, Qt::EditRole ).value<QColor>(), this, QStringLiteral( "Change Color" ), true );
584586
if ( newColor.isValid() )
585587
{
586-
item->setBackground( ColorColumn, QBrush( newColor ) );
588+
item->setData( ColorColumn, Qt::EditRole, newColor );
587589
loadMinimumMaximumFromTree();
588590
emit widgetChanged();
589591
}
@@ -642,7 +644,7 @@ void QgsColorRampShaderWidget::setFromShader( const QgsColorRampShader &colorRam
642644
{
643645
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject( mColormapTreeWidget );
644646
newItem->setText( ValueColumn, QString::number( it->value, 'g', 15 ) );
645-
newItem->setBackground( ColorColumn, QBrush( it->color ) );
647+
newItem->setData( ColorColumn, Qt::EditRole, it->color );
646648
newItem->setText( LabelColumn, it->label );
647649
newItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
648650
connect( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -753,13 +755,13 @@ void QgsColorRampShaderWidget::changeColor()
753755
}
754756
QTreeWidgetItem *firstItem = itemList.first();
755757

756-
QColor newColor = QgsColorDialog::getColor( firstItem->background( ColorColumn ).color(), this, QStringLiteral( "Change Color" ), true );
758+
QColor newColor = QgsColorDialog::getColor( firstItem->data( ColorColumn, Qt::EditRole ).value<QColor>(), this, QStringLiteral( "Change Color" ), true );
757759
if ( newColor.isValid() )
758760
{
759761
Q_FOREACH ( QTreeWidgetItem *item, itemList )
760762
{
761763
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
762-
item->setBackground( ColorColumn, QBrush( newColor ) );
764+
item->setData( ColorColumn, Qt::EditRole, newColor );
763765
}
764766

765767
loadMinimumMaximumFromTree();
@@ -778,16 +780,16 @@ void QgsColorRampShaderWidget::changeOpacity()
778780
QTreeWidgetItem *firstItem = itemList.first();
779781

780782
bool ok;
781-
double oldOpacity = firstItem->background( ColorColumn ).color().alpha() / 255 * 100;
783+
double oldOpacity = firstItem->data( ColorColumn, Qt::EditRole ).value<QColor>().alpha() / 255 * 100;
782784
double opacity = QInputDialog::getDouble( this, tr( "Opacity" ), tr( "Change color opacity [%]" ), oldOpacity, 0.0, 100.0, 0, &ok );
783785
if ( ok )
784786
{
785787
int newOpacity = static_cast<int>( opacity / 100 * 255 );
786788
Q_FOREACH ( QTreeWidgetItem *item, itemList )
787789
{
788-
QColor newColor = item->background( ColorColumn ).color();
790+
QColor newColor = item->data( ColorColumn, Qt::EditRole ).value<QColor>();
789791
newColor.setAlpha( newOpacity );
790-
item->setBackground( ColorColumn, QBrush( newColor ) );
792+
item->setData( ColorColumn, Qt::EditRole, newColor );
791793
}
792794

793795
loadMinimumMaximumFromTree();

‎src/gui/raster/qgscolorrampshaderwidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "qgis_sip.h"
2222
#include "qgscolorrampshader.h"
2323
#include "qgsrasterrenderer.h"
24+
#include "qgscolorschemelist.h"
2425
#include "ui_qgscolorrampshaderwidgetbase.h"
2526
#include "qgis_gui.h"
2627
#include "qgsrasterrendererwidget.h"
@@ -144,6 +145,8 @@ class GUI_EXPORT QgsColorRampShaderWidget: public QWidget, protected Ui::QgsColo
144145
double lineEditValue( const QLineEdit *lineEdit ) const;
145146
void resetClassifyButton();
146147

148+
QgsColorSwatchDelegate *mSwatchDelegate = nullptr;
149+
147150
double mMin = std::numeric_limits<double>::quiet_NaN();
148151
double mMax = std::numeric_limits<double>::quiet_NaN();
149152

0 commit comments

Comments
 (0)
Please sign in to comment.