diff --git a/src/tagstudio/qt/ts_qt.py b/src/tagstudio/qt/ts_qt.py index afe7b6e3..e91f9c36 100644 --- a/src/tagstudio/qt/ts_qt.py +++ b/src/tagstudio/qt/ts_qt.py @@ -1418,7 +1418,6 @@ class QtDriver(DriverMixin, QObject): def update_thumbs(self): """Update search thumbnails.""" self._update_thumb_count() - # logger.info(f'Current Page: {self.cur_page_idx}, Stack Length:{len(self.nav_stack)}') with self.thumb_job_queue.mutex: # Cancels all thumb jobs waiting to be started self.thumb_job_queue.queue.clear() @@ -1444,6 +1443,8 @@ class QtDriver(DriverMixin, QObject): logger.info("[QtDriver] Done! Processing ItemThumbs...") for index, item_thumb in enumerate(self.item_thumbs, start=0): entry = None + item_thumb.set_mode(None) + try: entry = entries[index] except IndexError: diff --git a/src/tagstudio/qt/widgets/item_thumb.py b/src/tagstudio/qt/widgets/item_thumb.py index 83167188..3d6780cd 100644 --- a/src/tagstudio/qt/widgets/item_thumb.py +++ b/src/tagstudio/qt/widgets/item_thumb.py @@ -204,10 +204,10 @@ class ItemThumb(FlowWidget): self.renderer = ThumbRenderer(self.lib) self.renderer.updated.connect( lambda timestamp, image, size, filename: ( - self.update_thumb(timestamp, image=image), - self.update_size(timestamp, size=size), - self.set_filename_text(filename), - self.set_extension(filename), + self.update_thumb(image, timestamp), + self.update_size(size, timestamp), + self.set_filename_text(filename, timestamp), + self.set_extension(filename, timestamp), ) ) self.thumb_button.setFlat(True) @@ -372,8 +372,11 @@ class ItemThumb(FlowWidget): self.item_type_badge.setHidden(False) self.mode = mode - def set_extension(self, filename: Path) -> None: - ext = filename.suffix + def set_extension(self, filename: Path, timestamp: float | None = None) -> None: + if timestamp and timestamp < ItemThumb.update_cutoff: + return + + ext = filename.suffix.lower() if ext and ext.startswith(".") is False: ext = "." + ext media_types: set[MediaType] = MediaCategories.get_types(ext) @@ -392,12 +395,13 @@ class ItemThumb(FlowWidget): ".webp", ] ): - self.ext_badge.setHidden(False) self.ext_badge.setText(ext.upper()[1:] or filename.stem.upper()) + if ext or filename.stem: + self.ext_badge.setHidden(False) if MediaType.VIDEO in media_types or MediaType.AUDIO in media_types: self.count_badge.setHidden(False) else: - if self.mode == ItemType.ENTRY: + if self.mode == ItemType.ENTRY or self.mode is None: self.ext_badge.setHidden(True) self.count_badge.setHidden(True) @@ -410,7 +414,10 @@ class ItemThumb(FlowWidget): self.ext_badge.setHidden(True) self.count_badge.setHidden(True) - def set_filename_text(self, filename: Path): + def set_filename_text(self, filename: Path, timestamp: float | None = None): + if timestamp and timestamp < ItemThumb.update_cutoff: + return + self.set_item_path(filename) self.file_label.setText(str(filename.name)) @@ -429,12 +436,14 @@ class ItemThumb(FlowWidget): self.setFixedHeight(self.thumb_size[1]) self.show_filename_label = set_visible - def update_thumb(self, timestamp: float, image: QPixmap | None = None): + def update_thumb(self, image: QPixmap | None = None, timestamp: float | None = None): """Update attributes of a thumbnail element.""" - if timestamp > ItemThumb.update_cutoff: - self.thumb_button.setIcon(image if image else QPixmap()) + if timestamp and timestamp < ItemThumb.update_cutoff: + return - def update_size(self, timestamp: float, size: QSize): + self.thumb_button.setIcon(image if image else QPixmap()) + + def update_size(self, size: QSize, timestamp: float | None = None): """Updates attributes of a thumbnail element. Args: @@ -443,11 +452,13 @@ class ItemThumb(FlowWidget): size (QSize): The new thumbnail size to set. """ - if timestamp > ItemThumb.update_cutoff: - self.thumb_size = size.width(), size.height() - self.thumb_button.setIconSize(size) - self.thumb_button.setMinimumSize(size) - self.thumb_button.setMaximumSize(size) + if timestamp and timestamp < ItemThumb.update_cutoff: + return + + self.thumb_size = size.width(), size.height() + self.thumb_button.setIconSize(size) + self.thumb_button.setMinimumSize(size) + self.thumb_button.setMaximumSize(size) def set_item_id(self, item_id: int): self.item_id = item_id