diff --git a/app/gui.py b/app/gui.py index e6da7c2..d0ea5fe 100644 --- a/app/gui.py +++ b/app/gui.py @@ -2019,9 +2019,27 @@ class StorePage(QWidget): if self._items: self._apply_filter() + def _begin_scan(self): + """Clear the stale view and invalidate in-flight cover/date batches.""" + self._generation += 1 + self._cover_busy = False + self._date_busy = False + self._cover_queue = [] + self._cover_next = 0 + self._date_queue = [] + self._date_next = 0 + self._cover_attempted.clear() + for loader in self._loaders: + loader.cancel() + self._loaders = [] + self.grid.clear() + self.table.setRowCount(0) + self.status.setText("Loading…") + def refresh(self, force=False): if self._closing: return + self._begin_scan() self._scan_gen += 1 gen = self._scan_gen if self.source_combo.currentIndex() == 0: # Server @@ -2082,6 +2100,8 @@ class StorePage(QWidget): self._items = [] self._filtered = [] self._dirty = False + self.grid.clear() + self.table.setRowCount(0) log.warning("store unavailable: %s", message) self.status.setText(f"Store unavailable: {message}") @@ -2193,6 +2213,7 @@ class StorePage(QWidget): self._loaders = [] self.grid.clear() + self.grid.setUpdatesEnabled(False) self.table.setUpdatesEnabled(False) self.table.setSortingEnabled(False) self.table.setRowCount(show_count) @@ -2297,6 +2318,7 @@ class StorePage(QWidget): def _finish_fill(self): if self._fill_timer is not None: self._fill_timer.stop() + self.grid.setUpdatesEnabled(True) self.table.setUpdatesEnabled(True) self.table.setSortingEnabled(True) total = len(self._filtered)