Fix Preferences->Add your own columns changing check state on moving columns. Fixes #2031569 [boxes that are unticked become ticked if another column is moved over it](https://bugs.launchpad.net/calibre/+bug/2031569)

This commit is contained in:
Kovid Goyal 2023-08-17 08:25:17 +05:30
parent c604802ac8
commit a69604b519
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -137,7 +137,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
return return
self.opt_columns.resizeColumnsToContents() self.opt_columns.resizeColumnsToContents()
def setup_row(self, row, key, order): def setup_row(self, row, key, order, force_checked_to=None):
flags = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable flags = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable
if self.is_custom_key(key): if self.is_custom_key(key):
@ -161,8 +161,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
item.setCheckState(Qt.CheckState.PartiallyChecked) item.setCheckState(Qt.CheckState.PartiallyChecked)
else: else:
item.setFlags(flags) item.setFlags(flags)
item.setCheckState(Qt.CheckState.Unchecked if key in self.hidden_cols else if force_checked_to is None:
Qt.CheckState.Checked) item.setCheckState(Qt.CheckState.Unchecked if key in self.hidden_cols else Qt.CheckState.Checked)
else:
item.setCheckState(force_checked_to)
item = QTableWidgetItem(cc['name']) item = QTableWidgetItem(cc['name'])
item.setToolTip(cc['name']) item.setToolTip(cc['name'])
@ -216,6 +218,11 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.opt_columns.setItem(row, 5, item) self.opt_columns.setItem(row, 5, item)
self.opt_columns.setSortingEnabled(True) self.opt_columns.setSortingEnabled(True)
def recreate_row(self, row):
checked = self.opt_columns.item(row, 0).checkState()
title = self.opt_columns.item(row, 2).text()
self.setup_row(row, title, row, force_checked_to=checked)
def up_column(self): def up_column(self):
self.opt_columns.setSortingEnabled(False) self.opt_columns.setSortingEnabled(False)
row = self.opt_columns.currentRow() row = self.opt_columns.currentRow()
@ -225,8 +232,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
upper = self.opt_columns.takeItem(row, i) upper = self.opt_columns.takeItem(row, i)
self.opt_columns.setItem(row, i, lower) self.opt_columns.setItem(row, i, lower)
self.opt_columns.setItem(row-1, i, upper) self.opt_columns.setItem(row-1, i, upper)
self.setup_row(row-1, self.opt_columns.item(row-1, 2).text(), row-1) self.recreate_row(row-1)
self.setup_row(row, self.opt_columns.item(row, 2).text(), row) self.recreate_row(row)
self.opt_columns.setCurrentCell(row-1, 1) self.opt_columns.setCurrentCell(row-1, 1)
self.changed_signal.emit() self.changed_signal.emit()
self.opt_columns.setSortingEnabled(True) self.opt_columns.setSortingEnabled(True)
@ -240,8 +247,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
upper = self.opt_columns.takeItem(row+1, i) upper = self.opt_columns.takeItem(row+1, i)
self.opt_columns.setItem(row+1, i, lower) self.opt_columns.setItem(row+1, i, lower)
self.opt_columns.setItem(row, i, upper) self.opt_columns.setItem(row, i, upper)
self.setup_row(row+1, self.opt_columns.item(row+1, 2).text(), row+1) self.recreate_row(row+1)
self.setup_row(row, self.opt_columns.item(row, 2).text(), row) self.recreate_row(row)
self.opt_columns.setCurrentCell(row+1, 1) self.opt_columns.setCurrentCell(row+1, 1)
self.changed_signal.emit() self.changed_signal.emit()
self.opt_columns.setSortingEnabled(True) self.opt_columns.setSortingEnabled(True)