From 57d5bb0f672979fee80a85a058d96365e1b3605d Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 12 Feb 2025 11:09:37 +1000 Subject: [PATCH] Fix checkbox search widget wrapper for boolean field types Fixes #60152 --- .../qgscheckboxsearchwidgetwrapper.cpp | 13 ++++++++++++- tests/src/python/test_qgssearchwidgetwrapper.py | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/editorwidgets/qgscheckboxsearchwidgetwrapper.cpp b/src/gui/editorwidgets/qgscheckboxsearchwidgetwrapper.cpp index c2d33988f84..cdfc2c84025 100644 --- a/src/gui/editorwidgets/qgscheckboxsearchwidgetwrapper.cpp +++ b/src/gui/editorwidgets/qgscheckboxsearchwidgetwrapper.cpp @@ -43,8 +43,19 @@ QVariant QgsCheckboxSearchWidgetWrapper::value() const { QVariant v; + const QMetaType::Type fieldType = layer()->fields().at( mFieldIdx ).type(); + if ( mCheckBox ) - v = mCheckBox->isChecked() ? config( QStringLiteral( "CheckedState" ), true ) : config( QStringLiteral( "UncheckedState" ), false ); + { + if ( fieldType == QMetaType::Type::Bool ) + { + v = mCheckBox->isChecked(); + } + else + { + v = mCheckBox->isChecked() ? config( QStringLiteral( "CheckedState" ), true ) : config( QStringLiteral( "UncheckedState" ), false ); + } + } return v; } diff --git a/tests/src/python/test_qgssearchwidgetwrapper.py b/tests/src/python/test_qgssearchwidgetwrapper.py index 4cc9f00bcb7..a509dc04c27 100644 --- a/tests/src/python/test_qgssearchwidgetwrapper.py +++ b/tests/src/python/test_qgssearchwidgetwrapper.py @@ -518,6 +518,9 @@ class PyQgsCheckboxSearchWidgetWrapper(QgisTestCase): parent = QWidget() w = QgsCheckboxSearchWidgetWrapper(layer, 2) w.initWidget(parent) + # boolean fields should ignore CheckedState/UncheckedState config + config = {"CheckedState": 5, "UncheckedState": 9} + w.setConfig(config) c = w.widget() c.setChecked(True) self.assertEqual(