@@ -3865,7 +3865,7 @@ void QgisApp::toggleEditing( QgsMapLayer *layer )
3865
3865
if ( !vlayer->isEditable () )
3866
3866
{
3867
3867
vlayer->startEditing ();
3868
- if ( !( vlayer->dataProvider ()->capabilities () & QgsVectorDataProvider::AddFeatures ) )
3868
+ if ( !( vlayer->dataProvider ()->capabilities () & QgsVectorDataProvider::EditingCapabilities ) )
3869
3869
{
3870
3870
QMessageBox::information ( 0 , tr ( " Start editing failed" ), tr ( " Provider cannot be opened for editing" ) );
3871
3871
}
@@ -4840,15 +4840,22 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4840
4840
if ( dprovider )
4841
4841
{
4842
4842
// start editing/stop editing
4843
- if ( dprovider->capabilities () & QgsVectorDataProvider::AddFeatures )
4843
+ if ( dprovider->capabilities () & QgsVectorDataProvider::EditingCapabilities )
4844
4844
{
4845
4845
mActionToggleEditing ->setEnabled ( true );
4846
4846
mActionToggleEditing ->setChecked ( vlayer->isEditable () );
4847
- mActionPasteFeatures ->setEnabled ( vlayer->isEditable () && !clipboard ()->empty () );
4848
4847
}
4849
4848
else
4850
4849
{
4851
4850
mActionToggleEditing ->setEnabled ( false );
4851
+ }
4852
+
4853
+ if ( dprovider->capabilities () & QgsVectorDataProvider::AddFeatures )
4854
+ {
4855
+ mActionPasteFeatures ->setEnabled ( vlayer->isEditable () && !clipboard ()->empty () );
4856
+ }
4857
+ else
4858
+ {
4852
4859
mActionPasteFeatures ->setEnabled ( false );
4853
4860
}
4854
4861
@@ -4863,19 +4870,26 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4863
4870
mActionDeleteSelected ->setEnabled ( false );
4864
4871
mActionCutFeatures ->setEnabled ( false );
4865
4872
}
4866
-
4873
+
4874
+ // moving enabled if geometry changes are supported
4875
+ if ( vlayer->isEditable () && dprovider->capabilities () & QgsVectorDataProvider::ChangeGeometries )
4876
+ {
4877
+ mActionMoveFeature ->setEnabled ( true );
4878
+ }
4879
+ else
4880
+ {
4881
+ mActionMoveFeature ->setEnabled ( false );
4882
+ }
4867
4883
4868
4884
if ( vlayer->geometryType () == QGis::Point )
4869
4885
{
4870
4886
if ( vlayer->isEditable () && dprovider->capabilities () & QgsVectorDataProvider::AddFeatures )
4871
4887
{
4872
4888
mActionCapturePoint ->setEnabled ( true );
4873
- mActionMoveFeature ->setEnabled ( true );
4874
4889
}
4875
4890
else
4876
4891
{
4877
4892
mActionCapturePoint ->setEnabled ( false );
4878
- mActionMoveFeature ->setEnabled ( false );
4879
4893
}
4880
4894
mActionCaptureLine ->setEnabled ( false );
4881
4895
mActionCapturePolygon ->setEnabled ( false );
@@ -4892,7 +4906,6 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4892
4906
{
4893
4907
mActionMoveVertex ->setEnabled ( true );
4894
4908
}
4895
- mActionMoveFeature ->setEnabled ( true );
4896
4909
}
4897
4910
return ;
4898
4911
}
@@ -4902,13 +4915,11 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4902
4915
{
4903
4916
mActionCaptureLine ->setEnabled ( true );
4904
4917
mActionSplitFeatures ->setEnabled ( true );
4905
- mActionMoveFeature ->setEnabled ( true );
4906
4918
}
4907
4919
else
4908
4920
{
4909
4921
mActionCaptureLine ->setEnabled ( false );
4910
4922
mActionSplitFeatures ->setEnabled ( false );
4911
- mActionMoveFeature ->setEnabled ( false );
4912
4923
}
4913
4924
mActionCapturePoint ->setEnabled ( false );
4914
4925
mActionCapturePolygon ->setEnabled ( false );
@@ -4923,15 +4934,13 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4923
4934
mActionAddRing ->setEnabled ( true );
4924
4935
mActionAddIsland ->setEnabled ( true );
4925
4936
mActionSplitFeatures ->setEnabled ( true );
4926
- mActionMoveFeature ->setEnabled ( true );
4927
4937
}
4928
4938
else
4929
4939
{
4930
4940
mActionCapturePolygon ->setEnabled ( false );
4931
4941
mActionAddRing ->setEnabled ( false );
4932
4942
mActionAddIsland ->setEnabled ( false );
4933
4943
mActionSplitFeatures ->setEnabled ( false );
4934
- mActionMoveFeature ->setEnabled ( false );
4935
4944
}
4936
4945
mActionCapturePoint ->setEnabled ( false );
4937
4946
mActionCaptureLine ->setEnabled ( false );
@@ -4943,7 +4952,6 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4943
4952
mActionAddVertex ->setEnabled ( true );
4944
4953
mActionMoveVertex ->setEnabled ( true );
4945
4954
mActionDeleteVertex ->setEnabled ( true );
4946
- mActionMoveFeature ->setEnabled ( true );
4947
4955
if ( vlayer->geometryType () == QGis::Polygon )
4948
4956
{
4949
4957
mActionAddRing ->setEnabled ( true );
@@ -4957,7 +4965,6 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
4957
4965
mActionAddVertex ->setEnabled ( false );
4958
4966
mActionMoveVertex ->setEnabled ( false );
4959
4967
mActionDeleteVertex ->setEnabled ( false );
4960
- mActionMoveFeature ->setEnabled ( false );
4961
4968
}
4962
4969
return ;
4963
4970
}
0 commit comments