Gallery View: Added logic to remove unfavorited subitems of grouped tiles in favorites-view
In gallery view, when a game version of a grouped tile is unfavorited in favorites-view, it is now automatically removed from the display. Added RemoveVersionFromDisplay method to handle item removal, tile updates and layout recalculation. The grouped-view is automatically closed when only one version remains after unfavoriting
This commit is contained in:
@@ -1661,15 +1661,55 @@ public class FastGalleryPanel : Control
|
||||
{
|
||||
settings.RemoveFavoriteGame(packageName);
|
||||
_favoritesCache.Remove(packageName);
|
||||
|
||||
// Check if in favorites-only view (= this item is now the only non-favorite)
|
||||
bool isFavoritesView = _items.All(item =>
|
||||
item == targetItem || _favoritesCache.Contains(item.SubItems.Count > 1 ? item.SubItems[1].Text : ""));
|
||||
|
||||
if (isFavoritesView)
|
||||
RemoveVersionFromDisplay(tile, targetItem, _rightClickedIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
settings.AddFavoriteGame(packageName);
|
||||
_favoritesCache.Add(packageName);
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
private void RemoveVersionFromDisplay(GroupedTile tile, ListViewItem item, int tileIndex)
|
||||
{
|
||||
_items.Remove(item);
|
||||
_originalItems.Remove(item);
|
||||
tile.Versions.Remove(item);
|
||||
|
||||
if (tile.Versions.Count == 0)
|
||||
{
|
||||
_displayTiles.RemoveAt(tileIndex);
|
||||
CloseOverlay();
|
||||
if (_selectedIndex == tileIndex) { _selectedIndex = -1; _selectedItem = null; }
|
||||
else if (_selectedIndex > tileIndex) _selectedIndex--;
|
||||
}
|
||||
else
|
||||
{
|
||||
tile.BaseGameName = GetBaseGameName(tile.Versions);
|
||||
tile.GameName = tile.Versions[0].Text;
|
||||
|
||||
if (tile.Versions.Count == 1)
|
||||
CloseOverlay();
|
||||
else if (_overlayHoveredVersion >= tile.Versions.Count)
|
||||
_overlayHoveredVersion = tile.Versions.Count - 1;
|
||||
}
|
||||
|
||||
// Rebuild tile states
|
||||
_tileStates.Clear();
|
||||
for (int i = 0; i < _displayTiles.Count; i++)
|
||||
_tileStates[i] = new TileAnimationState();
|
||||
|
||||
RecalculateLayout();
|
||||
}
|
||||
|
||||
public void RefreshFavoritesCache()
|
||||
{
|
||||
_favoritesCache = new HashSet<string>(SettingsManager.Instance.FavoritedGames, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
Reference in New Issue
Block a user