From 1ee1ccbe8d20c0a46051b45a7c8f2944492b60d9 Mon Sep 17 00:00:00 2001 From: Jann Stute <46534683+Computerdores@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:39:17 +0200 Subject: [PATCH] fix: preview thumbnails don't scale as large as they could (#1005) * fix: preview thumbnails don't scale as large as they could * fix: only scale as large as necessary * fix: explicitly declare vars --- .../widgets/preview/preview_thumb_view.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/tagstudio/qt/view/widgets/preview/preview_thumb_view.py b/src/tagstudio/qt/view/widgets/preview/preview_thumb_view.py index ea2739f0..e3d73313 100644 --- a/src/tagstudio/qt/view/widgets/preview/preview_thumb_view.py +++ b/src/tagstudio/qt/view/widgets/preview/preview_thumb_view.py @@ -1,6 +1,7 @@ # Licensed under the GPL-3.0 License. # Created for TagStudio: https://github.com/CyanVoxel/TagStudio +import math import time from pathlib import Path from typing import TYPE_CHECKING, override @@ -25,12 +26,18 @@ if TYPE_CHECKING: logger = structlog.get_logger(__name__) +THUMB_SIZE_FACTOR = 2 + + class PreviewThumbView(QWidget): """The Preview Panel Widget.""" __img_button_size: tuple[int, int] __image_ratio: float + __filepath: Path | None + __rendered_res: tuple[int, int] + def __init__(self, library: Library, driver: "QtDriver") -> None: super().__init__() @@ -220,10 +227,16 @@ class PreviewThumbView(QWidget): self.__preview_gif.hide() def __render_thumb(self, filepath: Path) -> None: + self.__filepath = filepath + self.__rendered_res = ( + math.ceil(self.__img_button_size[0] * THUMB_SIZE_FACTOR), + math.ceil(self.__img_button_size[1] * THUMB_SIZE_FACTOR), + ) + self.__thumb_renderer.render( time.time(), filepath, - (512, 512), + self.__rendered_res, self.devicePixelRatio(), update_on_ratio_change=True, ) @@ -303,10 +316,15 @@ class PreviewThumbView(QWidget): def hide_preview(self) -> None: """Completely hide the file preview.""" self.__switch_preview(None) + self.__filepath = None @override def resizeEvent(self, event: QResizeEvent) -> None: self.__update_image_size((self.size().width(), self.size().height())) + + if self.__filepath is not None and self.__rendered_res < self.__img_button_size: + self.__render_thumb(self.__filepath) + return super().resizeEvent(event) @property