From d5dbb3c63a1fe05f85a31cf1e4cd021ec76e750a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 22 Apr 2023 07:29:21 +0530 Subject: [PATCH] Fix #2017316 [Error when renaming tag in Tags Manager](https://bugs.launchpad.net/calibre/+bug/2017316) --- src/calibre/gui2/dialogs/tag_list_editor.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index 0a6e5cc494..aaff6a7cff 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -107,6 +107,12 @@ class CountTableWidgetItem(QTableWidgetItem): return self._count < other._count +def was_item(tag=''): + item = QTableWidgetItem() + item.setFlags(item.flags() & ~(Qt.ItemFlag.ItemIsSelectable|Qt.ItemFlag.ItemIsEditable)) + item.setData(Qt.ItemDataRole.DisplayRole, tag) + return item + class EditColumnDelegate(QItemDelegate): editing_finished = pyqtSignal(int) editing_started = pyqtSignal(int) @@ -466,11 +472,8 @@ class TagListEditor(QDialog, Ui_TagListEditor): item.setFlags(item.flags() & ~(Qt.ItemFlag.ItemIsSelectable|Qt.ItemFlag.ItemIsEditable)) self.table.setItem(row, 1, item) - item = QTableWidgetItem() - item.setFlags(item.flags() & ~(Qt.ItemFlag.ItemIsSelectable|Qt.ItemFlag.ItemIsEditable)) - if _id in self.to_rename or _id in self.to_delete: - item.setData(Qt.ItemDataRole.DisplayRole, tag) - self.table.setItem(row, 2, item) + was = tag if _id in self.to_rename or _id in self.to_delete else '' + self.table.setItem(row, 2, was_item(was)) item = QTableWidgetItem() if self.link_map is None: @@ -591,6 +594,9 @@ class TagListEditor(QDialog, Ui_TagListEditor): id_ = int(item.data(Qt.ItemDataRole.UserRole)) self.to_rename[id_] = new_text orig = self.table.item(item.row(), 2) + if orig is None: + orig = was_item() + self.table.setItem(item.row(), 2, orig) item.setText(new_text) orig.setData(Qt.ItemDataRole.DisplayRole, item.initial_text()) self.table.blockSignals(False)