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 @@ -103,7 +103,7 @@ class GUI_EXPORT QgsEditorWidgetWrapper : public QgsWidgetWrapper
103
103
*
104
104
* @param enabled Enable or Disable?
105
105
*/
106
- void setEnabled ( bool enabled ) override ;
106
+ virtual void setEnabled ( bool enabled ) override ;
107
107
108
108
/* * Sets the widget to display in an indeterminate "mixed value" state.
109
109
* @note added in QGIS 2.16
Original file line number Diff line number Diff line change @@ -43,6 +43,7 @@ QgsValueRelationWidgetWrapper::QgsValueRelationWidgetWrapper( QgsVectorLayer* vl
43
43
, mListWidget( nullptr )
44
44
, mLineEdit( nullptr )
45
45
, mLayer( nullptr )
46
+ , mUpdating( false )
46
47
{
47
48
}
48
49
@@ -248,3 +249,26 @@ void QgsValueRelationWidgetWrapper::showIndeterminateState()
248
249
whileBlocking ( mLineEdit )->clear ();
249
250
}
250
251
}
252
+
253
+ void QgsValueRelationWidgetWrapper::setEnabled ( bool enabled )
254
+ {
255
+ if ( mUpdating )
256
+ return ;
257
+
258
+ if ( mListWidget )
259
+ {
260
+ mUpdating = true ;
261
+ for ( int i = 0 ; i < mListWidget ->count (); ++i )
262
+ {
263
+ QListWidgetItem *item = mListWidget ->item ( i );
264
+
265
+ if ( enabled )
266
+ item->setFlags ( item->flags () | Qt::ItemIsEnabled );
267
+ else
268
+ item->setFlags ( item->flags () & ~Qt::ItemIsEnabled );
269
+ }
270
+ mUpdating = false ;
271
+ }
272
+ else
273
+ QgsEditorWidgetWrapper::setEnabled ( enabled );
274
+ }
Original file line number Diff line number Diff line change @@ -68,6 +68,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
68
68
static ValueRelationCache createCache ( const QgsEditorWidgetConfig& config );
69
69
void showIndeterminateState () override ;
70
70
71
+ void setEnabled ( bool enabled ) override ;
72
+
71
73
protected:
72
74
QWidget* createWidget ( QWidget* parent ) override ;
73
75
void initWidget ( QWidget* editor ) override ;
@@ -84,6 +86,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
84
86
ValueRelationCache mCache ;
85
87
QgsVectorLayer* mLayer ;
86
88
89
+ bool mUpdating ;
90
+
87
91
friend class QgsValueRelationWidgetFactory ;
88
92
};
89
93
You can’t perform that action at this time.
0 commit comments