Don't prompt user when editing if no changes made

This commit is contained in:
Keith Edmunds 2023-12-15 18:46:03 +00:00
parent 90f8e20843
commit d73bdb264d

View File

@ -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()