diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index e034bd2b88..ad8493a966 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -188,6 +188,7 @@ class TagListEditor(QDialog, Ui_TagListEditor): self.string_contains = contains self.delete_button.clicked.connect(self.delete_tags) + self.table.delete_pressed.connect(self.delete_pressed) self.rename_button.clicked.connect(self.rename_tag) self.undo_button.clicked.connect(self.undo_edit) self.table.itemDoubleClicked.connect(self._rename_tag) @@ -452,6 +453,10 @@ class TagListEditor(QDialog, Ui_TagListEditor): else: self.table.editItem(item) + def delete_pressed(self): + if self.table.currentColumn() == 0: + self.delete_tags() + def delete_tags(self): deletes = self.table.selectedItems() if not deletes: @@ -460,41 +465,26 @@ class TagListEditor(QDialog, Ui_TagListEditor): return to_del = [] - to_undel = [] for item in deletes: - if item.is_deleted: - to_undel.append(item) - else: + if not item.is_deleted: to_del.append(item) + if to_del: ct = ', '.join([unicode_type(item.text()) for item in to_del]) if not confirm( '
'+_('Are you sure you want to delete the following items?')+'
'+ct,
'tag_list_editor_delete'):
return
- if to_undel:
- ct = ', '.join([unicode_type(item.text()) for item in to_undel])
- if not confirm(
- '
'+_('Are you sure you want to undelete the following items?')+'
'+ct,
- 'tag_list_editor_undelete'):
- return
+
row = self.table.row(deletes[0])
+ self.table.blockSignals(True)
for item in deletes:
- if item.is_deleted:
- item.set_is_deleted(False)
- self.to_delete.discard(int(item.data(Qt.UserRole)))
- orig = self.table.item(item.row(), 2)
- self.table.blockSignals(True)
- orig.setData(Qt.DisplayRole, '')
- self.table.blockSignals(False)
- else:
- id = int(item.data(Qt.UserRole))
- self.to_delete.add(id)
- item.set_is_deleted(True)
- orig = self.table.item(item.row(), 2)
- self.table.blockSignals(True)
- orig.setData(Qt.DisplayRole, item.initial_text())
- self.table.blockSignals(False)
+ id_ = int(item.data(Qt.UserRole))
+ self.to_delete.add(id_)
+ item.set_is_deleted(True)
+ orig = self.table.item(item.row(), 2)
+ orig.setData(Qt.DisplayRole, item.initial_text())
+ self.table.blockSignals(False)
if row >= self.table.rowCount():
row = self.table.rowCount() - 1
if row >= 0:
diff --git a/src/calibre/gui2/dialogs/tag_list_editor.ui b/src/calibre/gui2/dialogs/tag_list_editor.ui
index 031e0e2d39..a0373d32c6 100644
--- a/src/calibre/gui2/dialogs/tag_list_editor.ui
+++ b/src/calibre/gui2/dialogs/tag_list_editor.ui
@@ -197,7 +197,7 @@