@@ -426,10 +426,16 @@ void QgsLayoutAttributeTableWidget::updateGuiElements()
426
426
// layer has no geometry, so uncheck & disable controls which require geometry
427
427
mShowOnlyVisibleFeaturesCheckBox ->setChecked ( false );
428
428
mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( false );
429
+ mComposerMapComboBox ->setEnabled ( false );
430
+ mComposerMapLabel ->setEnabled ( false );
431
+ mIntersectAtlasCheckBox ->setEnabled ( false );
429
432
}
430
433
else
431
434
{
432
435
mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( true );
436
+ mComposerMapComboBox ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
437
+ mComposerMapLabel ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
438
+ mIntersectAtlasCheckBox ->setEnabled ( mSourceComboBox ->findData ( QgsLayoutItemAttributeTable::AtlasFeature ) != -1 && mTable ->layout ()->reportContext ().layer () && mTable ->layout ()->reportContext ().layer ()->geometryType () != QgsWkbTypes::NullGeometry );
433
439
}
434
440
}
435
441
@@ -572,7 +578,7 @@ void QgsLayoutAttributeTableWidget::toggleAtlasSpecificControls( const bool atla
572
578
// add relations for coverage layer
573
579
updateRelationsCombo ();
574
580
mRelationsComboBox ->setEnabled ( true );
575
- mIntersectAtlasCheckBox ->setEnabled ( true );
581
+ mIntersectAtlasCheckBox ->setEnabled ( mTable -> layout ()-> reportContext (). layer () && mTable -> layout ()-> reportContext (). layer ()-> geometryType () != QgsWkbTypes::NullGeometry );
576
582
}
577
583
}
578
584
@@ -803,10 +809,16 @@ void QgsLayoutAttributeTableWidget::changeLayer( QgsMapLayer *layer )
803
809
// layer has no geometry, so uncheck & disable controls which require geometry
804
810
mShowOnlyVisibleFeaturesCheckBox ->setChecked ( false );
805
811
mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( false );
812
+ mComposerMapComboBox ->setEnabled ( false );
813
+ mComposerMapLabel ->setEnabled ( false );
814
+ mIntersectAtlasCheckBox ->setEnabled ( false );
806
815
}
807
816
else
808
817
{
809
818
mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( true );
819
+ mComposerMapComboBox ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
820
+ mComposerMapLabel ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
821
+ mIntersectAtlasCheckBox ->setEnabled ( mSourceComboBox ->findData ( QgsLayoutItemAttributeTable::AtlasFeature ) != -1 && mTable ->layout ()->reportContext ().layer () && mTable ->layout ()->reportContext ().layer ()->geometryType () != QgsWkbTypes::NullGeometry );
810
822
}
811
823
}
812
824
@@ -960,9 +972,12 @@ void QgsLayoutAttributeTableWidget::toggleSourceControls()
960
972
mRelationLabel ->setVisible ( false );
961
973
mMaximumRowsSpinBox ->setEnabled ( true );
962
974
mMaxNumFeaturesLabel ->setEnabled ( true );
963
- mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( true );
964
- mComposerMapComboBox ->setEnabled ( mTable ->displayOnlyVisibleFeatures () );
965
- mComposerMapLabel ->setEnabled ( mTable ->displayOnlyVisibleFeatures () );
975
+ mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( mTable ->vectorLayer () && mTable ->vectorLayer ()->geometryType () != QgsWkbTypes::NullGeometry );
976
+ mShowOnlyVisibleFeaturesCheckBox ->setChecked ( mTable ->vectorLayer () && mTable ->vectorLayer ()->geometryType () != QgsWkbTypes::NullGeometry && mTable ->displayOnlyVisibleFeatures () );
977
+ mComposerMapComboBox ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
978
+ mComposerMapLabel ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
979
+ mIntersectAtlasCheckBox ->setEnabled ( mTable ->vectorLayer () && mTable ->vectorLayer ()->geometryType () != QgsWkbTypes::NullGeometry
980
+ && mSourceComboBox ->findData ( QgsLayoutItemAttributeTable::AtlasFeature ) != -1 && mTable ->layout ()->reportContext ().layer () && mTable ->layout ()->reportContext ().layer ()->geometryType () != QgsWkbTypes::NullGeometry );
966
981
break ;
967
982
case QgsLayoutItemAttributeTable::AtlasFeature:
968
983
mLayerComboBox ->setEnabled ( false );
@@ -974,9 +989,11 @@ void QgsLayoutAttributeTableWidget::toggleSourceControls()
974
989
mRelationLabel ->setVisible ( false );
975
990
mMaximumRowsSpinBox ->setEnabled ( false );
976
991
mMaxNumFeaturesLabel ->setEnabled ( false );
977
- mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( false );
978
- mComposerMapComboBox ->setEnabled ( false );
979
- mComposerMapLabel ->setEnabled ( false );
992
+ mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( mTable ->sourceLayer () && mTable ->sourceLayer ()->geometryType () != QgsWkbTypes::NullGeometry );
993
+ mShowOnlyVisibleFeaturesCheckBox ->setChecked ( mTable ->sourceLayer () && mTable ->sourceLayer ()->geometryType () != QgsWkbTypes::NullGeometry && mTable ->displayOnlyVisibleFeatures () );
994
+ mComposerMapComboBox ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
995
+ mComposerMapLabel ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
996
+ mIntersectAtlasCheckBox ->setEnabled ( false );
980
997
break ;
981
998
case QgsLayoutItemAttributeTable::RelationChildren:
982
999
mLayerComboBox ->setEnabled ( false );
@@ -988,9 +1005,11 @@ void QgsLayoutAttributeTableWidget::toggleSourceControls()
988
1005
mRelationLabel ->setVisible ( true );
989
1006
mMaximumRowsSpinBox ->setEnabled ( true );
990
1007
mMaxNumFeaturesLabel ->setEnabled ( true );
1008
+ // it's missing the check for null geometry of the referencing layer
991
1009
mShowOnlyVisibleFeaturesCheckBox ->setEnabled ( true );
992
- mComposerMapComboBox ->setEnabled ( true );
993
- mComposerMapLabel ->setEnabled ( true );
1010
+ mComposerMapComboBox ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
1011
+ mComposerMapLabel ->setEnabled ( mShowOnlyVisibleFeaturesCheckBox ->isChecked () );
1012
+ mIntersectAtlasCheckBox ->setEnabled ( mSourceComboBox ->findData ( QgsLayoutItemAttributeTable::AtlasFeature ) != -1 && mTable ->layout ()->reportContext ().layer () && mTable ->layout ()->reportContext ().layer ()->geometryType () != QgsWkbTypes::NullGeometry );
994
1013
break ;
995
1014
}
996
1015
}
0 commit comments