Skip to content

Commit 7e4f1f8

Browse files
committedJul 21, 2017
Fixes value relation widget to always keep scrollbar activated. Fixes #16654
1 parent 0cba29c commit 7e4f1f8

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed
 

‎src/gui/editorwidgets/core/qgseditorwidgetwrapper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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

‎src/gui/editorwidgets/qgsvaluerelationwidgetwrapper.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
}

‎src/gui/editorwidgets/qgsvaluerelationwidgetwrapper.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)
Please sign in to comment.