Skip to content

Commit 040c551

Browse files
committed
Fix some symbol properties reseting when symbol dialog opens, make dialog safer by always blocking signals before updating initial state of controls
1 parent 205e812 commit 040c551

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

src/gui/symbology-ng/qgssymbollayerv2widget.cpp

+72
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,16 @@ void QgsSimpleLineSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
109109
mDashPatternUnitComboBox->blockSignals( false );
110110

111111
// set values
112+
spinWidth->blockSignals( true );
112113
spinWidth->setValue( mLayer->width() );
114+
spinWidth->blockSignals( false );
115+
btnChangeColor->blockSignals( true );
113116
btnChangeColor->setColor( mLayer->color() );
114117
btnChangeColor->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
118+
btnChangeColor->blockSignals( false );
119+
spinOffset->blockSignals( true );
115120
spinOffset->setValue( mLayer->offset() );
121+
spinOffset->blockSignals( false );
116122
cboPenStyle->blockSignals( true );
117123
cboJoinStyle->blockSignals( true );
118124
cboCapStyle->blockSignals( true );
@@ -336,14 +342,26 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer
336342
break;
337343
}
338344
}
345+
btnChangeColorBorder->blockSignals( true );
339346
btnChangeColorBorder->setColor( mLayer->borderColor() );
340347
btnChangeColorBorder->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
348+
btnChangeColorBorder->blockSignals( false );
349+
btnChangeColorFill->blockSignals( true );
341350
btnChangeColorFill->setColor( mLayer->color() );
342351
btnChangeColorFill->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
352+
btnChangeColorFill->blockSignals( false );
353+
spinSize->blockSignals( true );
343354
spinSize->setValue( mLayer->size() );
355+
spinSize->blockSignals( false );
356+
spinAngle->blockSignals( true );
344357
spinAngle->setValue( mLayer->angle() );
358+
spinAngle->blockSignals( false );
359+
mOutlineStyleComboBox->blockSignals( true );
345360
mOutlineStyleComboBox->setPenStyle( mLayer->outlineStyle() );
361+
mOutlineStyleComboBox->blockSignals( false );
362+
mOutlineWidthSpinBox->blockSignals( true );
346363
mOutlineWidthSpinBox->setValue( mLayer->outlineWidth() );
364+
mOutlineWidthSpinBox->blockSignals( false );
347365

348366
// without blocking signals the value gets changed because of slot setOffset()
349367
spinOffsetX->blockSignals( true );
@@ -552,13 +570,23 @@ void QgsSimpleFillSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
552570
mLayer = static_cast<QgsSimpleFillSymbolLayerV2*>( layer );
553571

554572
// set values
573+
btnChangeColor->blockSignals( true );
555574
btnChangeColor->setColor( mLayer->color() );
556575
btnChangeColor->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
576+
btnChangeColor->blockSignals( false );
577+
cboFillStyle->blockSignals( true );
557578
cboFillStyle->setBrushStyle( mLayer->brushStyle() );
579+
cboFillStyle->blockSignals( false );
580+
btnChangeBorderColor->blockSignals( true );
558581
btnChangeBorderColor->setColor( mLayer->borderColor() );
559582
btnChangeBorderColor->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
583+
btnChangeBorderColor->blockSignals( false );
584+
cboBorderStyle->blockSignals( true );
560585
cboBorderStyle->setPenStyle( mLayer->borderStyle() );
586+
cboBorderStyle->blockSignals( false );
587+
spinBorderWidth->blockSignals( true );
561588
spinBorderWidth->setValue( mLayer->borderWidth() );
589+
spinBorderWidth->blockSignals( false );
562590
cboJoinStyle->blockSignals( true );
563591
cboJoinStyle->setPenJoinStyle( mLayer->penJoinStyle() );
564592
cboJoinStyle->blockSignals( false );
@@ -707,10 +735,14 @@ void QgsGradientFillSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer
707735
mLayer = static_cast<QgsGradientFillSymbolLayerV2*>( layer );
708736

709737
// set values
738+
btnChangeColor->blockSignals( true );
710739
btnChangeColor->setColor( mLayer->color() );
711740
btnChangeColor->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
741+
btnChangeColor->blockSignals( false );
742+
btnChangeColor2->blockSignals( true );
712743
btnChangeColor2->setColor( mLayer->color2() );
713744
btnChangeColor2->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
745+
btnChangeColor2->blockSignals( false );
714746

715747
if ( mLayer->gradientColorType() == QgsGradientFillSymbolLayerV2::SimpleTwoColor )
716748
{
@@ -1046,10 +1078,14 @@ void QgsShapeburstFillSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* lay
10461078
mLayer = static_cast<QgsShapeburstFillSymbolLayerV2*>( layer );
10471079

10481080
// set values
1081+
btnChangeColor->blockSignals( true );
10491082
btnChangeColor->setColor( mLayer->color() );
10501083
btnChangeColor->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
1084+
btnChangeColor->blockSignals( false );
1085+
btnChangeColor2->blockSignals( true );
10511086
btnChangeColor2->setColor( mLayer->color2() );
10521087
btnChangeColor2->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
1088+
btnChangeColor2->blockSignals( false );
10531089

10541090
if ( mLayer->colorType() == QgsShapeburstFillSymbolLayerV2::SimpleTwoColor )
10551091
{
@@ -1293,9 +1329,15 @@ void QgsMarkerLineSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
12931329
mLayer = static_cast<QgsMarkerLineSymbolLayerV2*>( layer );
12941330

12951331
// set values
1332+
spinInterval->blockSignals( true );
12961333
spinInterval->setValue( mLayer->interval() );
1334+
spinInterval->blockSignals( false );
1335+
chkRotateMarker->blockSignals( true );
12971336
chkRotateMarker->setChecked( mLayer->rotateMarker() );
1337+
chkRotateMarker->blockSignals( false );
1338+
spinOffset->blockSignals( true );
12981339
spinOffset->setValue( mLayer->offset() );
1340+
spinOffset->blockSignals( false );
12991341
if ( mLayer->placement() == QgsMarkerLineSymbolLayerV2::Interval )
13001342
radInterval->setChecked( true );
13011343
else if ( mLayer->placement() == QgsMarkerLineSymbolLayerV2::Vertex )
@@ -1650,8 +1692,12 @@ void QgsSvgMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
16501692
}
16511693
}
16521694

1695+
spinSize->blockSignals( true );
16531696
spinSize->setValue( mLayer->size() );
1697+
spinSize->blockSignals( false );
1698+
spinAngle->blockSignals( true );
16541699
spinAngle->setValue( mLayer->angle() );
1700+
spinAngle->blockSignals( false );
16551701

16561702
// without blocking signals the value gets changed because of slot setOffset()
16571703
spinOffsetX->blockSignals( true );
@@ -1915,9 +1961,13 @@ void QgsSVGFillSymbolLayerWidget::setSymbolLayer( QgsSymbolLayerV2* layer )
19151961
if ( mLayer )
19161962
{
19171963
double width = mLayer->patternWidth();
1964+
mTextureWidthSpinBox->blockSignals( true );
19181965
mTextureWidthSpinBox->setValue( width );
1966+
mTextureWidthSpinBox->blockSignals( false );
19191967
mSVGLineEdit->setText( mLayer->svgFilePath() );
1968+
mRotationSpinBox->blockSignals( true );
19201969
mRotationSpinBox->setValue( mLayer->angle() );
1970+
mRotationSpinBox->blockSignals( false );
19211971
mTextureWidthUnitComboBox->blockSignals( true );
19221972
mTextureWidthUnitComboBox->setCurrentIndex( mLayer->patternWidthUnit() );
19231973
mTextureWidthUnitComboBox->blockSignals( false );
@@ -2163,9 +2213,15 @@ void QgsLinePatternFillSymbolLayerWidget::setSymbolLayer( QgsSymbolLayerV2* laye
21632213
if ( patternLayer )
21642214
{
21652215
mLayer = patternLayer;
2216+
mAngleSpinBox->blockSignals( true );
21662217
mAngleSpinBox->setValue( mLayer->lineAngle() );
2218+
mAngleSpinBox->blockSignals( false );
2219+
mDistanceSpinBox->blockSignals( true );
21672220
mDistanceSpinBox->setValue( mLayer->distance() );
2221+
mDistanceSpinBox->blockSignals( false );
2222+
mOffsetSpinBox->blockSignals( true );
21682223
mOffsetSpinBox->setValue( mLayer->offset() );
2224+
mOffsetSpinBox->blockSignals( false );
21692225

21702226
//units
21712227
mDistanceUnitComboBox->blockSignals( true );
@@ -2280,10 +2336,18 @@ void QgsPointPatternFillSymbolLayerWidget::setSymbolLayer( QgsSymbolLayerV2* lay
22802336
}
22812337

22822338
mLayer = static_cast<QgsPointPatternFillSymbolLayer*>( layer );
2339+
mHorizontalDistanceSpinBox->blockSignals( true );
22832340
mHorizontalDistanceSpinBox->setValue( mLayer->distanceX() );
2341+
mHorizontalDistanceSpinBox->blockSignals( false );
2342+
mVerticalDistanceSpinBox->blockSignals( true );
22842343
mVerticalDistanceSpinBox->setValue( mLayer->distanceY() );
2344+
mVerticalDistanceSpinBox->blockSignals( false );
2345+
mHorizontalDisplacementSpinBox->blockSignals( true );
22852346
mHorizontalDisplacementSpinBox->setValue( mLayer->displacementX() );
2347+
mHorizontalDisplacementSpinBox->blockSignals( false );
2348+
mVerticalDisplacementSpinBox->blockSignals( true );
22862349
mVerticalDisplacementSpinBox->setValue( mLayer->displacementY() );
2350+
mVerticalDisplacementSpinBox->blockSignals( false );
22872351

22882352
mHorizontalDistanceUnitComboBox->blockSignals( true );
22892353
mHorizontalDistanceUnitComboBox->setCurrentIndex( mLayer->distanceXUnit() );
@@ -2441,11 +2505,19 @@ void QgsFontMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
24412505
mLayer = static_cast<QgsFontMarkerSymbolLayerV2*>( layer );
24422506

24432507
// set values
2508+
cboFont->blockSignals( true );
24442509
cboFont->setCurrentFont( QFont( mLayer->fontFamily() ) );
2510+
cboFont->blockSignals( false );
2511+
spinSize->blockSignals( true );
24452512
spinSize->setValue( mLayer->size() );
2513+
spinSize->blockSignals( false );
2514+
btnColor->blockSignals( true );
24462515
btnColor->setColor( mLayer->color() );
24472516
btnColor->setColorDialogOptions( QColorDialog::ShowAlphaChannel );
2517+
btnColor->blockSignals( false );
2518+
spinAngle->blockSignals( true );
24482519
spinAngle->setValue( mLayer->angle() );
2520+
spinAngle->blockSignals( false );
24492521

24502522
//block
24512523
spinOffsetX->blockSignals( true );

0 commit comments

Comments
 (0)