File tree Expand file tree Collapse file tree 3 files changed +29
-1
lines changed Expand file tree Collapse file tree 3 files changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -122,7 +122,7 @@ class GUI_EXPORT QgsEditorWidgetWrapper : public QgsWidgetWrapper
122
122
*
123
123
* \param enabled Enable or Disable?
124
124
*/
125
- void setEnabled ( bool enabled ) override ;
125
+ virtual void setEnabled ( bool enabled ) override ;
126
126
127
127
/* * Sets the widget to display in an indeterminate "mixed value" state.
128
128
* \since QGIS 2.16
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ QgsValueRelationWidgetWrapper::QgsValueRelationWidgetWrapper( QgsVectorLayer *vl
33
33
, mListWidget( nullptr )
34
34
, mLineEdit( nullptr )
35
35
, mLayer( nullptr )
36
+ , mUpdating( false )
36
37
{
37
38
}
38
39
@@ -198,3 +199,26 @@ void QgsValueRelationWidgetWrapper::showIndeterminateState()
198
199
whileBlocking ( mLineEdit )->clear ();
199
200
}
200
201
}
202
+
203
+ void QgsValueRelationWidgetWrapper::setEnabled ( bool enabled )
204
+ {
205
+ if ( mUpdating )
206
+ return ;
207
+
208
+ if ( mListWidget )
209
+ {
210
+ mUpdating = true ;
211
+ for ( int i = 0 ; i < mListWidget ->count (); ++i )
212
+ {
213
+ QListWidgetItem *item = mListWidget ->item ( i );
214
+
215
+ if ( enabled )
216
+ item->setFlags ( item->flags () | Qt::ItemIsEnabled );
217
+ else
218
+ item->setFlags ( item->flags () & ~Qt::ItemIsEnabled );
219
+ }
220
+ mUpdating = false ;
221
+ }
222
+ else
223
+ QgsEditorWidgetWrapper::setEnabled ( enabled );
224
+ }
Original file line number Diff line number Diff line change @@ -59,6 +59,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
59
59
60
60
void showIndeterminateState () override ;
61
61
62
+ void setEnabled ( bool enabled ) override ;
63
+
62
64
protected:
63
65
QWidget *createWidget ( QWidget *parent ) override ;
64
66
void initWidget ( QWidget *editor ) override ;
@@ -75,6 +77,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
75
77
QgsValueRelationFieldFormatter::ValueRelationCache mCache ;
76
78
QgsVectorLayer *mLayer = nullptr ;
77
79
80
+ bool mUpdating ;
81
+
78
82
friend class QgsValueRelationWidgetFactory ;
79
83
};
80
84
You can’t perform that action at this time.
0 commit comments