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
122122 *
123123 * \param enabled Enable or Disable?
124124 */
125- void setEnabled ( bool enabled ) override ;
125+ virtual void setEnabled ( bool enabled ) override ;
126126
127127 /* * Sets the widget to display in an indeterminate "mixed value" state.
128128 * \since QGIS 2.16
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ QgsValueRelationWidgetWrapper::QgsValueRelationWidgetWrapper( QgsVectorLayer *vl
3333 , mListWidget( nullptr )
3434 , mLineEdit( nullptr )
3535 , mLayer( nullptr )
36+ , mUpdating( false )
3637{
3738}
3839
@@ -198,3 +199,26 @@ void QgsValueRelationWidgetWrapper::showIndeterminateState()
198199 whileBlocking ( mLineEdit )->clear ();
199200 }
200201}
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
5959
6060 void showIndeterminateState () override ;
6161
62+ void setEnabled ( bool enabled ) override ;
63+
6264 protected:
6365 QWidget *createWidget ( QWidget *parent ) override ;
6466 void initWidget ( QWidget *editor ) override ;
@@ -75,6 +77,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
7577 QgsValueRelationFieldFormatter::ValueRelationCache mCache ;
7678 QgsVectorLayer *mLayer = nullptr ;
7779
80+ bool mUpdating ;
81+
7882 friend class QgsValueRelationWidgetFactory ;
7983};
8084
You can’t perform that action at this time.
0 commit comments