@@ -3865,7 +3865,7 @@ void QgisApp::toggleEditing( QgsMapLayer *layer )
38653865 if ( !vlayer->isEditable () )
38663866 {
38673867 vlayer->startEditing ();
3868- if ( !( vlayer->dataProvider ()->capabilities () & QgsVectorDataProvider::AddFeatures ) )
3868+ if ( !( vlayer->dataProvider ()->capabilities () & QgsVectorDataProvider::EditingCapabilities ) )
38693869 {
38703870 QMessageBox::information ( 0 , tr ( " Start editing failed" ), tr ( " Provider cannot be opened for editing" ) );
38713871 }
@@ -4840,15 +4840,22 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
48404840 if ( dprovider )
48414841 {
48424842 // start editing/stop editing
4843- if ( dprovider->capabilities () & QgsVectorDataProvider::AddFeatures )
4843+ if ( dprovider->capabilities () & QgsVectorDataProvider::EditingCapabilities )
48444844 {
48454845 mActionToggleEditing ->setEnabled ( true );
48464846 mActionToggleEditing ->setChecked ( vlayer->isEditable () );
4847- mActionPasteFeatures ->setEnabled ( vlayer->isEditable () && !clipboard ()->empty () );
48484847 }
48494848 else
48504849 {
48514850 mActionToggleEditing ->setEnabled ( false );
4851+ }
4852+
4853+ if ( dprovider->capabilities () & QgsVectorDataProvider::AddFeatures )
4854+ {
4855+ mActionPasteFeatures ->setEnabled ( vlayer->isEditable () && !clipboard ()->empty () );
4856+ }
4857+ else
4858+ {
48524859 mActionPasteFeatures ->setEnabled ( false );
48534860 }
48544861
@@ -4863,19 +4870,26 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
48634870 mActionDeleteSelected ->setEnabled ( false );
48644871 mActionCutFeatures ->setEnabled ( false );
48654872 }
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+ }
48674883
48684884 if ( vlayer->geometryType () == QGis::Point )
48694885 {
48704886 if ( vlayer->isEditable () && dprovider->capabilities () & QgsVectorDataProvider::AddFeatures )
48714887 {
48724888 mActionCapturePoint ->setEnabled ( true );
4873- mActionMoveFeature ->setEnabled ( true );
48744889 }
48754890 else
48764891 {
48774892 mActionCapturePoint ->setEnabled ( false );
4878- mActionMoveFeature ->setEnabled ( false );
48794893 }
48804894 mActionCaptureLine ->setEnabled ( false );
48814895 mActionCapturePolygon ->setEnabled ( false );
@@ -4892,7 +4906,6 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
48924906 {
48934907 mActionMoveVertex ->setEnabled ( true );
48944908 }
4895- mActionMoveFeature ->setEnabled ( true );
48964909 }
48974910 return ;
48984911 }
@@ -4902,13 +4915,11 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
49024915 {
49034916 mActionCaptureLine ->setEnabled ( true );
49044917 mActionSplitFeatures ->setEnabled ( true );
4905- mActionMoveFeature ->setEnabled ( true );
49064918 }
49074919 else
49084920 {
49094921 mActionCaptureLine ->setEnabled ( false );
49104922 mActionSplitFeatures ->setEnabled ( false );
4911- mActionMoveFeature ->setEnabled ( false );
49124923 }
49134924 mActionCapturePoint ->setEnabled ( false );
49144925 mActionCapturePolygon ->setEnabled ( false );
@@ -4923,15 +4934,13 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
49234934 mActionAddRing ->setEnabled ( true );
49244935 mActionAddIsland ->setEnabled ( true );
49254936 mActionSplitFeatures ->setEnabled ( true );
4926- mActionMoveFeature ->setEnabled ( true );
49274937 }
49284938 else
49294939 {
49304940 mActionCapturePolygon ->setEnabled ( false );
49314941 mActionAddRing ->setEnabled ( false );
49324942 mActionAddIsland ->setEnabled ( false );
49334943 mActionSplitFeatures ->setEnabled ( false );
4934- mActionMoveFeature ->setEnabled ( false );
49354944 }
49364945 mActionCapturePoint ->setEnabled ( false );
49374946 mActionCaptureLine ->setEnabled ( false );
@@ -4943,7 +4952,6 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
49434952 mActionAddVertex ->setEnabled ( true );
49444953 mActionMoveVertex ->setEnabled ( true );
49454954 mActionDeleteVertex ->setEnabled ( true );
4946- mActionMoveFeature ->setEnabled ( true );
49474955 if ( vlayer->geometryType () == QGis::Polygon )
49484956 {
49494957 mActionAddRing ->setEnabled ( true );
@@ -4957,7 +4965,6 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
49574965 mActionAddVertex ->setEnabled ( false );
49584966 mActionMoveVertex ->setEnabled ( false );
49594967 mActionDeleteVertex ->setEnabled ( false );
4960- mActionMoveFeature ->setEnabled ( false );
49614968 }
49624969 return ;
49634970 }
0 commit comments