diff --git a/src/calibre/gui2/tweak_book/editor/canvas.py b/src/calibre/gui2/tweak_book/editor/canvas.py index 22747eb43b..a7e7a54061 100644 --- a/src/calibre/gui2/tweak_book/editor/canvas.py +++ b/src/calibre/gui2/tweak_book/editor/canvas.py @@ -293,7 +293,9 @@ class Canvas(QWidget): self.redo_action = a = self.undo_stack.createRedoAction(self, _('Redo') + ' ') a.setIcon(QIcon.ic('edit-redo.png')) - def load_image(self, data): + def load_image(self, data, only_if_different=False): + if only_if_different and self.original_image_data and not self.is_modified and self.original_image_data == data: + return self.is_valid = False try: fmt = identify(data)[0].encode('ascii') diff --git a/src/calibre/gui2/tweak_book/editor/image.py b/src/calibre/gui2/tweak_book/editor/image.py index 283b4adadc..277433123f 100644 --- a/src/calibre/gui2/tweak_book/editor/image.py +++ b/src/calibre/gui2/tweak_book/editor/image.py @@ -163,9 +163,7 @@ class Editor(QMainWindow): self._is_modified = False # The image_changed signal will have been triggered causing this editor to be incorrectly marked as modified def replace_data(self, raw, only_if_different=True): - # We ignore only_if_different as it is useless in our case, and - # there is no easy way to check two images for equality - self.canvas.load_image(raw) + self.canvas.load_image(raw, only_if_different=only_if_different) def apply_settings(self, prefs=None, dictionaries_changed=False): pass