From e69f9b7e9f97fb48fc2787bc34ab612cf5f7be4b Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Tue, 1 Dec 2020 14:02:44 +0100 Subject: [PATCH] Optimised setting image in cover art box Avoid calls to update_metadata_images --- picard/ui/coverartbox.py | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py index b75149eb2..a947290f2 100644 --- a/picard/ui/coverartbox.py +++ b/picard/ui/coverartbox.py @@ -48,13 +48,17 @@ from picard import ( log, ) from picard.album import Album -from picard.cluster import FileList +from picard.cluster import ( + Cluster, + FileList, +) from picard.const import MAX_COVERS_TO_STACK from picard.coverart.image import ( CoverArtImage, CoverArtImageError, ) from picard.file import File +from picard.track import Track from picard.util import imageinfo from picard.util.lrucache import LRUCache @@ -277,10 +281,22 @@ class CoverArtThumbnail(ActiveLabel): def set_image_replace(obj, coverartimage): obj.metadata.images.strip_front_images() obj.metadata.images.append(coverartimage) + obj.metadata_images_changed.emit() def set_image_append(obj, coverartimage): obj.metadata.images.append(coverartimage) + obj.metadata_images_changed.emit() + + +def iter_file_parents(file): + parent = file.parent + if parent: + yield parent + if isinstance(parent, Track) and parent.album: + yield parent.album + elif isinstance(parent, Cluster) and parent.related_album: + yield parent.related_album HTML_IMG_SRC_REGEX = re.compile(r'