From 7121a08c4b862fc38ef9188028c7870dad16a956 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Thu, 28 May 2026 23:33:52 +0300 Subject: [PATCH] LibraryWidget: do not try to draw progress when pixmap is None --- rare/components/tabs/library/widgets/game_widget.py | 9 ++++++--- rare/components/tabs/library/widgets/library_widget.py | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/rare/components/tabs/library/widgets/game_widget.py b/rare/components/tabs/library/widgets/game_widget.py index 96adc957c..002221fe3 100644 --- a/rare/components/tabs/library/widgets/game_widget.py +++ b/rare/components/tabs/library/widgets/game_widget.py @@ -100,6 +100,7 @@ def __init__(self, rgame: RareGame, parent=None): 'not_can_launch': self.tr("Can't launch"), } + self._pixmap_timer: bool = False self._ui = None # lk: abstract class for typing, the `self.ui` attribute should be used @@ -123,14 +124,16 @@ def start_progress(self): pass def paintEvent(self, a0: QPaintEvent) -> None: + if self._pixmap_timer: + return super().paintEvent(a0) if not self.visibleRegion().isNull() and not self.rgame.has_pixmap: + self._pixmap_timer = True self.startTimer(random.randrange(42, 2361, 129), Qt.TimerType.CoarseTimer) - # self.startTimer(random.randrange(42, 2361, 363), Qt.VeryCoarseTimer) - # self.rgame.load_pixmap() - super().paintEvent(a0) + return super().paintEvent(a0) def timerEvent(self, a0): self.killTimer(a0.timerId()) + self._pixmap_timer = False self.rgame.load_pixmaps() def showEvent(self, a0: QShowEvent) -> None: diff --git a/rare/components/tabs/library/widgets/library_widget.py b/rare/components/tabs/library/widgets/library_widget.py index 2229ba801..815b97af6 100644 --- a/rare/components/tabs/library/widgets/library_widget.py +++ b/rare/components/tabs/library/widgets/library_widget.py @@ -148,14 +148,16 @@ def showProgress(self, color_pm: QPixmap, gray_pm: QPixmap) -> None: self.updateProgress(0) @Slot(int) - def updateProgress(self, progress: int): + def updateProgress(self, progress: int) -> None: self.progress_label.setText(f'{progress:02}%') + if self._color_pixmap is None or self._gray_pixmap is None: + return if progress > self._progress: self._progress = progress self.setPixmap(self.progressPixmap(self._color_pixmap, self._gray_pixmap, progress)) @Slot(bool) - def hideProgress(self, stopped: bool): + def hideProgress(self, stopped: bool) -> None: self._color_pixmap = None self._gray_pixmap = None self.progress_label.setVisible(stopped)