Skip to content

Commit 7b5b628

Browse files
committed
Fixes value relation widget to always keep scrollbar activated. Fixes #16654
1 parent bc9f822 commit 7b5b628

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
@@ -103,7 +103,7 @@ class GUI_EXPORT QgsEditorWidgetWrapper : public QgsWidgetWrapper
103103
*
104104
* @param enabled Enable or Disable?
105105
*/
106-
void setEnabled( bool enabled ) override;
106+
virtual void setEnabled( bool enabled ) override;
107107

108108
/** Sets the widget to display in an indeterminate "mixed value" state.
109109
* @note added in QGIS 2.16

src/gui/editorwidgets/qgsvaluerelationwidgetwrapper.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ QgsValueRelationWidgetWrapper::QgsValueRelationWidgetWrapper( QgsVectorLayer* vl
4343
, mListWidget( nullptr )
4444
, mLineEdit( nullptr )
4545
, mLayer( nullptr )
46+
, mUpdating( false )
4647
{
4748
}
4849

@@ -248,3 +249,26 @@ void QgsValueRelationWidgetWrapper::showIndeterminateState()
248249
whileBlocking( mLineEdit )->clear();
249250
}
250251
}
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+
}

src/gui/editorwidgets/qgsvaluerelationwidgetwrapper.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
6868
static ValueRelationCache createCache( const QgsEditorWidgetConfig& config );
6969
void showIndeterminateState() override;
7070

71+
void setEnabled( bool enabled ) override;
72+
7173
protected:
7274
QWidget* createWidget( QWidget* parent ) override;
7375
void initWidget( QWidget* editor ) override;
@@ -84,6 +86,8 @@ class GUI_EXPORT QgsValueRelationWidgetWrapper : public QgsEditorWidgetWrapper
8486
ValueRelationCache mCache;
8587
QgsVectorLayer* mLayer;
8688

89+
bool mUpdating;
90+
8791
friend class QgsValueRelationWidgetFactory;
8892
};
8993

0 commit comments

Comments
 (0)