diff --git a/gramps/gui/editors/editeventref.py b/gramps/gui/editors/editeventref.py index 45e026839..871cc4b3e 100644 --- a/gramps/gui/editors/editeventref.py +++ b/gramps/gui/editors/editeventref.py @@ -66,6 +66,7 @@ class EditEventRef(EditReference): def __init__(self, state, uistate, track, event, event_ref, update): EditReference.__init__(self, state, uistate, track, event, event_ref, update) + self.original = event.serialize() self._init_event() def _local_init(self): @@ -268,8 +269,10 @@ class EditEventRef(EditReference): def ok_clicked(self, obj): if self.source.handle: - with DbTxn(_("Modify Event"), self.db) as trans: - self.commit_event(self.source,trans) + # only commit if it has changed + if self.source.serialize() != self.original: + with DbTxn(_("Modify Event"), self.db) as trans: + self.commit_event(self.source, trans) else: if self.check_for_duplicate_id('Event'): return diff --git a/gramps/gui/editors/editmediaref.py b/gramps/gui/editors/editmediaref.py index 86d668298..70cb55f98 100644 --- a/gramps/gui/editors/editmediaref.py +++ b/gramps/gui/editors/editmediaref.py @@ -83,7 +83,9 @@ class EditMediaRef(EditReference): if not self.source.get_handle(): #show the addmedia dialog immediately, with track of parent. AddMedia(state, self.uistate, self.track, self.source, - self._update_addmedia) + self._update_addmedia) + else: + self.original = self.source.serialize() def _local_init(self): @@ -518,9 +520,11 @@ class EditMediaRef(EditReference): #first save primary object if self.source.handle: - with DbTxn(_("Edit Media Object (%s)") % - self.source.get_description(), self.db) as trans: - self.db.commit_media(self.source, trans) + # only commit if it has changed + if self.source.serialize() != self.original: + with DbTxn(_("Edit Media Object (%s)") % + self.source.get_description(), self.db) as trans: + self.db.commit_media(self.source, trans) else: if self.check_for_duplicate_id('Media'): return diff --git a/gramps/gui/editors/editreporef.py b/gramps/gui/editors/editreporef.py index 84efaf7ce..52ab10ccf 100644 --- a/gramps/gui/editors/editreporef.py +++ b/gramps/gui/editors/editreporef.py @@ -51,6 +51,7 @@ class EditRepoRef(EditReference): EditReference.__init__(self, state, uistate, track, source, source_ref, update) + self.original = source.serialize() def _local_init(self): @@ -189,8 +190,10 @@ class EditRepoRef(EditReference): def ok_clicked(self, obj): if self.source.handle: - with DbTxn(_("Modify Repository"), self.db) as trans: - self.db.commit_repository(self.source,trans) + # only commit if it has changed + if self.source.serialize() != self.original: + with DbTxn(_("Modify Repository"), self.db) as trans: + self.db.commit_repository(self.source, trans) else: if self.check_for_duplicate_id('Repository'): return