mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
Fixed an issue where hiding a folder would not correctly hide the games inside the folder.
This commit is contained in:
parent
393e6f17ce
commit
e192141018
|
@ -435,21 +435,42 @@ void GuiMetaDataEd::save()
|
||||||
if (mSavedCallback)
|
if (mSavedCallback)
|
||||||
mSavedCallback();
|
mSavedCallback();
|
||||||
|
|
||||||
// Update all collections where the game is present.
|
|
||||||
if (mScraperParams.game->getType() == GAME) {
|
|
||||||
// Update disabled auto collections as well when hiding a game, as otherwise these
|
|
||||||
// collections could get invalid gamelist cursor positions. A cursor pointing to a
|
|
||||||
// removed game would crash the application upon enabling the collections.
|
|
||||||
if (hideGameWhileHidden)
|
|
||||||
CollectionSystemsManager::get()->refreshCollectionSystems(mScraperParams.game, true);
|
|
||||||
else
|
|
||||||
CollectionSystemsManager::get()->refreshCollectionSystems(mScraperParams.game);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If hiding a game, remove it from the indices of all systems.
|
|
||||||
if (hideGameWhileHidden) {
|
if (hideGameWhileHidden) {
|
||||||
for (SystemData* sys : SystemData::sSystemVector)
|
std::vector<FileData*> hideGames;
|
||||||
sys->getIndex()->removeFromIndex(mScraperParams.game);
|
// If a folder was hidden there may be children inside that we also need to hide.
|
||||||
|
if (mScraperParams.game->getType() == FOLDER) {
|
||||||
|
for (FileData* child : mScraperParams.game->getChildrenRecursive()) {
|
||||||
|
if (!child->getHidden())
|
||||||
|
child->metadata.set("hidden", "true");
|
||||||
|
hideGames.push_back(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
hideGames.push_back(mScraperParams.game);
|
||||||
|
}
|
||||||
|
for (FileData* hideGame : hideGames) {
|
||||||
|
if (hideGame->getType() == GAME) {
|
||||||
|
// Update disabled auto collections when hiding a game, as otherwise these could
|
||||||
|
// get invalid gamelist cursor positions. A cursor pointing to a removed game
|
||||||
|
// would crash the application upon enabling the collections.
|
||||||
|
CollectionSystemsManager::get()->refreshCollectionSystems(hideGame, true);
|
||||||
|
// Remove the game from the index of all systems.
|
||||||
|
for (SystemData* sys : SystemData::sSystemVector) {
|
||||||
|
std::vector<FileData*> children;
|
||||||
|
for (FileData* child : sys->getRootFolder()->getChildrenRecursive())
|
||||||
|
children.push_back(child->getSourceFileData());
|
||||||
|
if (std::find(children.begin(), children.end(), hideGame) != children.end()) {
|
||||||
|
sys->getIndex()->removeFromIndex(hideGame);
|
||||||
|
// Reload the gamelist as well as the view style may need to change.
|
||||||
|
ViewController::get()->reloadGameListView(sys);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Update all collections where the game is present.
|
||||||
|
CollectionSystemsManager::get()->refreshCollectionSystems(mScraperParams.game);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If game counting was re-enabled for the game, then reactivate it in any custom collections
|
// If game counting was re-enabled for the game, then reactivate it in any custom collections
|
||||||
|
|
Loading…
Reference in a new issue