Skip to content

Commit a2a2d7a

Browse files
committed
[gui] Fix crash when loading a vector layer style, due to lack of checks for removed deprecated labels tab
1 parent 2d63dcf commit a2a2d7a

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

src/app/qgsvectorlayerproperties.cpp

+23-10
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
267267

268268
QgsVectorLayerProperties::~QgsVectorLayerProperties()
269269
{
270-
if ( mOptsPage_LabelsOld && layer->hasGeometryType() )
270+
if ( mOptsPage_LabelsOld && labelDialog && layer->hasGeometryType() )
271271
{
272272
disconnect( labelDialog, SIGNAL( labelSourceSet() ), this, SLOT( setLabelCheckBox() ) );
273273
}
@@ -395,24 +395,29 @@ void QgsVectorLayerProperties::syncToLayer( void )
395395
// load appropriate symbology page (V1 or V2)
396396
updateSymbologyPage();
397397

398+
actionDialog->init();
399+
398400
// reset fields in label dialog
399401
layer->label()->setFields( layer->pendingFields() );
400402

401-
actionDialog->init();
402-
403403
if ( layer->hasGeometryType() )
404404
{
405405
labelingDialog->init();
406-
labelDialog->init();
407406
}
408407

409-
labelCheckBox->setChecked( layer->hasLabelsEnabled() );
410-
labelOptionsFrame->setEnabled( layer->hasLabelsEnabled() );
408+
if ( mOptsPage_LabelsOld )
409+
{
410+
if ( labelDialog && layer->hasGeometryType() )
411+
{
412+
labelDialog->init();
413+
}
414+
labelCheckBox->setChecked( layer->hasLabelsEnabled() );
415+
labelOptionsFrame->setEnabled( layer->hasLabelsEnabled() );
416+
QObject::connect( labelCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( enableLabelOptions( bool ) ) );
417+
}
411418

412419
mFieldsPropertiesDialog->init();
413420

414-
QObject::connect( labelCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( enableLabelOptions( bool ) ) );
415-
416421
// delete deprecated labels tab if not already used by project
417422
// NOTE: this is not ideal, but a quick fix for QGIS 2.0 release
418423
bool ok;
@@ -421,7 +426,10 @@ void QgsVectorLayerProperties::syncToLayer( void )
421426
{
422427
if ( mOptsPage_LabelsOld )
423428
{
424-
disconnect( labelDialog, SIGNAL( labelSourceSet() ), this, SLOT( setLabelCheckBox() ) );
429+
if ( labelDialog )
430+
{
431+
disconnect( labelDialog, SIGNAL( labelSourceSet() ), this, SLOT( setLabelCheckBox() ) );
432+
}
425433
delete mOptsPage_LabelsOld;
426434
mOptsPage_LabelsOld = 0;
427435
}
@@ -479,11 +487,14 @@ void QgsVectorLayerProperties::apply()
479487
if ( mOptsPage_LabelsOld )
480488
{
481489
if ( labelDialog )
490+
{
482491
labelDialog->apply();
492+
}
483493
layer->enableLabels( labelCheckBox->isChecked() );
484-
layer->setLayerName( mLayerOrigNameLineEdit->text() );
485494
}
486495

496+
layer->setLayerName( mLayerOrigNameLineEdit->text() );
497+
487498
// Apply fields settings
488499
mFieldsPropertiesDialog->apply();
489500

@@ -728,6 +739,8 @@ void QgsVectorLayerProperties::on_pbnLoadStyle_clicked()
728739
QFileInfo myFI( myFileName );
729740
QString myPath = myFI.path();
730741
myQSettings.setValue( "style/lastStyleDir", myPath );
742+
743+
activateWindow(); // set focus back to properties dialog
731744
}
732745

733746

0 commit comments

Comments
 (0)