diff --git a/portprotonqt/game_card.py b/portprotonqt/game_card.py index 10a794e8..eae3d050 100644 --- a/portprotonqt/game_card.py +++ b/portprotonqt/game_card.py @@ -102,7 +102,7 @@ class GameCard(QFrame): self.favoriteLabel = ClickableLabel(self.coverWidget) self.favoriteLabel.clicked.connect(self.toggle_favorite) - self.is_favorite = self.name in read_favorites() + self.is_favorite = self.name in set(read_favorites()) self.update_favorite_icon() self.favoriteLabel.raise_() @@ -413,12 +413,13 @@ class GameCard(QFrame): def toggle_favorite(self): favorites = read_favorites() + favorites_set = set(favorites) if self.is_favorite: - if self.name in favorites: + if self.name in favorites_set: favorites.remove(self.name) self.is_favorite = False else: - if self.name not in favorites: + if self.name not in favorites_set: favorites.append(self.name) self.is_favorite = True save_favorites(favorites) diff --git a/portprotonqt/game_library_manager.py b/portprotonqt/game_library_manager.py index 858e045e..4ad8c97f 100644 --- a/portprotonqt/game_library_manager.py +++ b/portprotonqt/game_library_manager.py @@ -267,8 +267,9 @@ class GameLibraryManager: return (fav_order, -game[10] if game[10] else 0, -game[11] if game[11] else 0) # Quick partition: Sort favorites and non-favorites separately, then merge - fav_games = [g for g in games_list if g[0] in favorites] - non_fav_games = [g for g in games_list if g[0] not in favorites] + favorites_set = set(favorites) # Convert to set for O(1) lookup + fav_games = [g for g in games_list if g[0] in favorites_set] + non_fav_games = [g for g in games_list if g[0] not in favorites_set] sorted_fav = sorted(fav_games, key=partition_sort_key) sorted_non_fav = sorted(non_fav_games, key=partition_sort_key) sorted_games = sorted_fav + sorted_non_fav