forked from Boria138/PortProtonQt
fix: fix gamecard refrefresh regression after 0889aa8
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@@ -505,17 +505,25 @@ class GameLibraryManager:
|
|||||||
"""Clears all widgets from the layout."""
|
"""Clears all widgets from the layout."""
|
||||||
if layout is None:
|
if layout is None:
|
||||||
return
|
return
|
||||||
|
# Remove all widgets from the layout and clean up caches
|
||||||
while layout.count():
|
while layout.count():
|
||||||
child = layout.takeAt(0)
|
child = layout.takeAt(0)
|
||||||
if child.widget():
|
if child.widget():
|
||||||
widget = child.widget()
|
widget = child.widget()
|
||||||
|
# Clean up cache if widget exists in it
|
||||||
for key, card in list(self.game_card_cache.items()):
|
for key, card in list(self.game_card_cache.items()):
|
||||||
if card == widget:
|
if card == widget:
|
||||||
del self.game_card_cache[key]
|
del self.game_card_cache[key]
|
||||||
if key in self.pending_images:
|
if key in self.pending_images:
|
||||||
del self.pending_images[key]
|
del self.pending_images[key]
|
||||||
|
break
|
||||||
|
# Always schedule widget for deletion regardless of cache state
|
||||||
widget.deleteLater()
|
widget.deleteLater()
|
||||||
|
|
||||||
|
# Also clear the cache completely if needed (in case layout wasn't in sync)
|
||||||
|
self.game_card_cache.clear()
|
||||||
|
self.pending_images.clear()
|
||||||
|
|
||||||
def set_games(self, games: list[tuple]):
|
def set_games(self, games: list[tuple]):
|
||||||
"""Sets the games list and updates the filtered games."""
|
"""Sets the games list and updates the filtered games."""
|
||||||
self.games = games
|
self.games = games
|
||||||
|
|||||||
@@ -1199,7 +1199,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.progress_bar.setRange(0, 0) # Indeterminate
|
self.progress_bar.setRange(0, 0) # Indeterminate
|
||||||
self.update_status_message.emit(_("Refreshing game library..."), 0)
|
self.update_status_message.emit(_("Refreshing game library..."), 0)
|
||||||
|
|
||||||
# Clear the game card cache to force reload of custom data
|
# Clear the game card cache and layout to force reload of custom data
|
||||||
if hasattr(self, 'game_library_manager') and self.game_library_manager:
|
if hasattr(self, 'game_library_manager') and self.game_library_manager:
|
||||||
# Clear the cache to ensure custom data is reloaded
|
# Clear the cache to ensure custom data is reloaded
|
||||||
self.game_library_manager.game_card_cache.clear()
|
self.game_library_manager.game_card_cache.clear()
|
||||||
@@ -1209,6 +1209,19 @@ class MainWindow(QMainWindow):
|
|||||||
# Mark for full rebuild of search indices
|
# Mark for full rebuild of search indices
|
||||||
self.game_library_manager.dirty = True # Force full update
|
self.game_library_manager.dirty = True # Force full update
|
||||||
|
|
||||||
|
# Also clear the layout to ensure old widgets are removed
|
||||||
|
if (hasattr(self.game_library_manager, 'gamesListLayout') and
|
||||||
|
self.game_library_manager.gamesListLayout and
|
||||||
|
hasattr(self.game_library_manager, 'gamesListWidget') and
|
||||||
|
self.game_library_manager.gamesListWidget):
|
||||||
|
# Remove all widgets from the layout
|
||||||
|
self.game_library_manager.clear_layout(self.game_library_manager.gamesListLayout)
|
||||||
|
|
||||||
|
# Force layout update to ensure UI changes are visible
|
||||||
|
self.game_library_manager.gamesListWidget.updateGeometry()
|
||||||
|
if hasattr(self.game_library_manager, 'gamesListLayout'):
|
||||||
|
self.game_library_manager.gamesListLayout.update()
|
||||||
|
|
||||||
# Reload games using the existing loadGames functionality
|
# Reload games using the existing loadGames functionality
|
||||||
# Use a small delay to allow UI to update before starting the refresh
|
# Use a small delay to allow UI to update before starting the refresh
|
||||||
QTimer.singleShot(50, lambda: self.loadGames())
|
QTimer.singleShot(50, lambda: self.loadGames())
|
||||||
|
|||||||
Reference in New Issue
Block a user