From b75b1739b2f8d73f55b4964e3cff78ce1e1df086 Mon Sep 17 00:00:00 2001 From: Etienne Trimaille Date: Fri, 13 Sep 2019 15:45:47 +0000 Subject: [PATCH] fix combobox ID not having correct checked state when we update a SQL layer --- python/plugins/db_manager/dlg_sql_layer_window.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/python/plugins/db_manager/dlg_sql_layer_window.py b/python/plugins/db_manager/dlg_sql_layer_window.py index ca6916a3034..b700df5a68a 100644 --- a/python/plugins/db_manager/dlg_sql_layer_window.py +++ b/python/plugins/db_manager/dlg_sql_layer_window.py @@ -176,14 +176,20 @@ class DlgSqlLayerWindow(QWidget, Ui_Dialog): if uri.keyColumn() != '_uid_': self.uniqueColumnCheck.setCheckState(Qt.Checked) if self.allowMultiColumnPk: - itemsData = uri.keyColumn().split(',') + # Unchecked default values for item in self.uniqueModel.findItems("*", Qt.MatchWildcard): - if item.data() in itemsData: + if item.checkState() == Qt.Checked: + item.setCheckState(Qt.Unchecked) + # Get key columns + itemsData = uri.keyColumn().split(',') + # Checked key columns + for keyColumn in itemsData: + for item in self.uniqueModel.findItems(keyColumn): item.setCheckState(Qt.Checked) else: keyColumn = uri.keyColumn() if self.uniqueModel.findItems(keyColumn): - self.uniqueCombo.setEditText(keyColumn) + self.uniqueCombo.setCurrentIndex(self.uniqueCombo.findText(keyColumn, Qt.MatchExactly)) # Finally layer name, filter and selectAtId self.layerNameEdit.setText(layer.name())