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
This commit is contained in:
Jann Stute
2025-08-04 23:39:17 +02:00
committed by GitHub
parent 4653eb2a04
commit 1ee1ccbe8d

View File

@@ -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