From d73bdb264d5e566ab4ee8051446372e0e9609a28 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Fri, 15 Dec 2023 18:46:03 +0000 Subject: [PATCH] Don't prompt user when editing if no changes made --- app/playlists.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/playlists.py b/app/playlists.py index 290e188..1f456e2 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -77,7 +77,8 @@ class EscapeDelegate(QStyledItemDelegate): row = index.row() row_height = p.rowHeight(row) p.setRowHeight(row, row_height + Config.MINIMUM_ROW_HEIGHT) - return QPlainTextEdit(parent) + self.editor = QPlainTextEdit(parent) + return self.editor return super().createEditor(parent, option, index) def destroyEditor(self, editor: Optional[QWidget], index: QModelIndex) -> None: @@ -102,6 +103,10 @@ class EscapeDelegate(QStyledItemDelegate): self.closeEditor.emit(editor) return True elif key_event.key() == Qt.Key.Key_Escape: + if self.original_text == self.editor.toPlainText(): + # No changes made + self.closeEditor.emit(editor) + return True discard_edits = QMessageBox.question( cast(QWidget, self.parent()), "Abandon edit", "Discard changes?" ) @@ -117,8 +122,8 @@ class EscapeDelegate(QStyledItemDelegate): else: edit_index = index - value = self.data_model.data(edit_index, Qt.ItemDataRole.EditRole) - editor.setPlainText(value.value()) + self.original_text = self.data_model.data(edit_index, Qt.ItemDataRole.EditRole) + editor.setPlainText(self.original_text.value()) def setModelData(self, editor, model, index): model = index.model()