From 82a7d4b20e1c21f9a6c70d5b800f108d415f3c28 Mon Sep 17 00:00:00 2001 From: kramo Date: Sat, 26 Aug 2023 15:14:57 +0200 Subject: [PATCH] Make manually added animated covers work --- src/details_window.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/details_window.py b/src/details_window.py index c290537..a178d4e 100644 --- a/src/details_window.py +++ b/src/details_window.py @@ -24,7 +24,7 @@ from time import time from typing import Any, Optional from gi.repository import Adw, Gio, GLib, Gtk -from PIL import Image +from PIL import Image, UnidentifiedImageError from src import shared from src.errors.friendly_error import FriendlyError @@ -284,12 +284,27 @@ class DetailsWindow(Adw.Window): return def thread_func() -> None: - if new_path := convert_cover( - pixbuf=shared.store.managers[CoverManager].composite_cover(Path(path)) - ): + new_path = None + + try: + with Image.open(path) as image: + if getattr(image, "is_animated", False): + new_path = convert_cover(path) + except UnidentifiedImageError: + pass + + if not new_path: + new_path = convert_cover( + pixbuf=shared.store.managers[CoverManager].composite_cover( + Path(path) + ) + ) + + if new_path: self.game_cover.new_cover(new_path) - self.cover_button_delete_revealer.set_reveal_child(True) - self.cover_changed = True + self.cover_button_delete_revealer.set_reveal_child(True) + self.cover_changed = True + self.toggle_loading() self.toggle_loading()