From 24b323ad745e737d8dedc8903924ee0cf635c430 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 26 May 2024 00:41:11 +0200 Subject: [PATCH] [GUI] Only enable 'Editable' field checkbox if field is not read only from the provider or its origin --- src/core/editform/qgseditformconfig.cpp | 2 ++ src/gui/attributeformconfig/qgsattributetypedialog.cpp | 3 ++- src/gui/vector/qgsattributesformproperties.cpp | 2 -- src/gui/vector/qgsattributesformproperties.h | 1 - 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/editform/qgseditformconfig.cpp b/src/core/editform/qgseditformconfig.cpp index bbdc3e4a6768..4619b3b7d227 100644 --- a/src/core/editform/qgseditformconfig.cpp +++ b/src/core/editform/qgseditformconfig.cpp @@ -238,6 +238,8 @@ bool QgsEditFormConfig::readOnly( int idx ) const if ( d->mFields.fieldOrigin( idx ) == Qgis::FieldOrigin::Join || d->mFields.fieldOrigin( idx ) == Qgis::FieldOrigin::Expression ) return true; + if ( d->mFields.at( idx ).isReadOnly() ) + return true; return !d->mFieldEditables.value( d->mFields.at( idx ).name(), true ); } else diff --git a/src/gui/attributeformconfig/qgsattributetypedialog.cpp b/src/gui/attributeformconfig/qgsattributetypedialog.cpp index 71a4c12ba44a..8a50245089af 100644 --- a/src/gui/attributeformconfig/qgsattributetypedialog.cpp +++ b/src/gui/attributeformconfig/qgsattributetypedialog.cpp @@ -62,7 +62,8 @@ QgsAttributeTypeDialog::QgsAttributeTypeDialog( QgsVectorLayer *vl, int fieldIdx connect( mWidgetTypeComboBox, static_cast< void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsAttributeTypeDialog::onCurrentWidgetChanged ); if ( vl->fields().fieldOrigin( fieldIdx ) == Qgis::FieldOrigin::Join || - vl->fields().fieldOrigin( fieldIdx ) == Qgis::FieldOrigin::Expression ) + vl->fields().fieldOrigin( fieldIdx ) == Qgis::FieldOrigin::Expression || + vl->fields().field( fieldIdx ).isReadOnly() ) { isFieldEditableCheckBox->setEnabled( false ); } diff --git a/src/gui/vector/qgsattributesformproperties.cpp b/src/gui/vector/qgsattributesformproperties.cpp index 4b31cf5ceb1e..e07b0ede9825 100644 --- a/src/gui/vector/qgsattributesformproperties.cpp +++ b/src/gui/vector/qgsattributesformproperties.cpp @@ -1080,8 +1080,6 @@ QgsAttributesFormProperties::FieldConfig::FieldConfig( QgsVectorLayer *layer, in mDataDefinedProperties = layer->editFormConfig().dataDefinedFieldProperties( layer->fields().at( idx ).name() ); mComment = layer->fields().at( idx ).comment(); mEditable = !layer->editFormConfig().readOnly( idx ); - mEditableEnabled = layer->fields().fieldOrigin( idx ) != Qgis::FieldOrigin::Join - && layer->fields().fieldOrigin( idx ) != Qgis::FieldOrigin::Expression; mLabelOnTop = layer->editFormConfig().labelOnTop( idx ); mReuseLastValues = layer->editFormConfig().reuseLastValue( idx ); mFieldConstraints = layer->fields().at( idx ).constraints(); diff --git a/src/gui/vector/qgsattributesformproperties.h b/src/gui/vector/qgsattributesformproperties.h index 4eef017a9905..67298de66b19 100644 --- a/src/gui/vector/qgsattributesformproperties.h +++ b/src/gui/vector/qgsattributesformproperties.h @@ -327,7 +327,6 @@ class GUI_EXPORT QgsAttributesFormProperties : public QWidget, public QgsExpress FieldConfig( QgsVectorLayer *layer, int idx ); bool mEditable = true; - bool mEditableEnabled = true; bool mLabelOnTop = false; bool mReuseLastValues = false; QgsFieldConstraints mFieldConstraints;