void ViewController::reloadGameListView(IGameListView* view, bool reloadTheme) { for(auto it = mGameListViews.begin(); it != mGameListViews.end(); it++) { if(it->second.get() == view) { bool isCurrent = (mCurrentView == it->second); SystemData* system = it->first; FileData* cursor = view->getCursor(); mGameListViews.erase(it); if(reloadTheme) system->loadTheme(); std::shared_ptr<IGameListView> newView = getGameListView(system); // to counter having come from a placeholder if (!cursor->isPlaceHolder()) { newView->setCursor(cursor); } if(isCurrent) mCurrentView = newView; break; } } // Redisplay the current view if (mCurrentView) mCurrentView->onShow(); }