Skip to content

Commit a773be2

Browse files
committed
[dbmanager] Fix non-clickable checkbox in Null column when creating table (on Mac)
- Switch from checkbox delegate to Qt::CheckStateRole for column - Enable all triggers for table view
1 parent fe6dcf1 commit a773be2

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

python/plugins/db_manager/db_plugins/data_model.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,13 @@ def headerData(self, section, orientation, role):
204204
return section+1
205205
return SimpleTableModel.headerData(self, section, orientation, role)
206206

207+
def flags(self, index):
208+
flags = SimpleTableModel.flags(self, index)
209+
if index.column() == 2: # set Null column as checkable
210+
flags &= ~Qt.ItemIsEditable
211+
flags |= Qt.ItemIsUserCheckable
212+
return flags
213+
207214
def append(self, fld):
208215
data = [fld.name, fld.type2String(), not fld.notNull, fld.default2String()]
209216
self.appendRow( self.rowFromData(data) )
@@ -230,7 +237,7 @@ def getObject(self, row):
230237
fld.modifier = None
231238
fld.dataType = typestr
232239

233-
fld.notNull = self.data(self.index(row, 2)) != "true"
240+
fld.notNull = self.data(self.index(row, 2), Qt.CheckStateRole) == Qt.Unchecked
234241
fld.primaryKey = self.data(self.index(row, 1), Qt.UserRole)
235242
return fld
236243

python/plugins/db_manager/dlg_create_table.py

+2-8
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ def createEditor(self, parent, option, index):
4949
for item in self.fieldTypes:
5050
cbo.addItem(item)
5151
return cbo
52-
elif index.column() == 2:
53-
return QCheckBox(parent)
5452
return QItemDelegate.createEditor(self, parent, option, index)
5553

5654
def setEditorData(self, editor, index):
@@ -59,9 +57,6 @@ def setEditorData(self, editor, index):
5957
if index.column() == 1:
6058
txt = m.data(index, Qt.DisplayRole)
6159
editor.setEditText(txt)
62-
elif index.column() == 2:
63-
checked = m.data(index, Qt.DisplayRole) == "true"
64-
editor.setChecked( checked )
6560
else:
6661
# use default
6762
QItemDelegate.setEditorData(self, editor, index)
@@ -70,8 +65,6 @@ def setModelData(self, editor, model, index):
7065
""" save data from editor back to model """
7166
if index.column() == 1:
7267
model.setData(index, editor.currentText())
73-
elif index.column() == 1:
74-
model.setData(index, editor.isChecked())
7568
else:
7669
# use default
7770
QItemDelegate.setModelData(self, editor, model, index)
@@ -191,7 +184,8 @@ def addField(self):
191184
if "serial" in self.fieldTypes: # PostgreSQL
192185
colType = "serial"
193186
m.setData(indexType, colType)
194-
m.setData(indexNull, False)
187+
m.setData(indexNull, None, Qt.DisplayRole)
188+
m.setData(indexNull, Qt.Unchecked, Qt.CheckStateRole)
195189

196190
# selects the new row
197191
sel = self.fields.selectionModel()

python/plugins/db_manager/ui/DlgCreateTable.ui

+3
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,9 @@
253253
</item>
254254
<item row="1" column="0">
255255
<widget class="QTableView" name="fields">
256+
<property name="editTriggers">
257+
<set>QAbstractItemView::AllEditTriggers</set>
258+
</property>
256259
<attribute name="horizontalHeaderStretchLastSection">
257260
<bool>true</bool>
258261
</attribute>

0 commit comments

Comments
 (0)