Fix save buttons and probably other things not being cleaned up in FileBrowserActivity (fixed #635)

This commit is contained in:
Tamás Bálint Misius 2019-03-24 21:47:31 +01:00
parent c7ae820f1c
commit 89c7d9ea02
No known key found for this signature in database
GPG Key ID: 5B472A12F6ECA9F2
2 changed files with 18 additions and 11 deletions

View File

@ -191,6 +191,21 @@ void FileBrowserActivity::RenameSave(SaveFile * file)
ErrorMessage::Blocking("Error", "No save name given"); ErrorMessage::Blocking("Error", "No save name given");
} }
void FileBrowserActivity::cleanup()
{
for (auto comp : componentsQueue)
{
delete comp;
}
componentsQueue.clear();
for (auto file : files)
{
delete file;
}
files.clear();
}
void FileBrowserActivity::loadDirectory(ByteString directory, ByteString search) void FileBrowserActivity::loadDirectory(ByteString directory, ByteString search)
{ {
for (size_t i = 0; i < components.size(); i++) for (size_t i = 0; i < components.size(); i++)
@ -199,17 +214,7 @@ void FileBrowserActivity::loadDirectory(ByteString directory, ByteString search)
itemList->RemoveChild(components[i]); itemList->RemoveChild(components[i]);
} }
for (std::vector<ui::Component*>::iterator iter = componentsQueue.begin(), end = componentsQueue.end(); iter != end; ++iter) cleanup();
{
delete *iter;
}
componentsQueue.clear();
for (std::vector<SaveFile*>::iterator iter = files.begin(), end = files.end(); iter != end; ++iter)
{
delete *iter;
}
files.clear();
infoText->Visible = false; infoText->Visible = false;
itemList->Visible = false; itemList->Visible = false;
@ -325,4 +330,5 @@ void FileBrowserActivity::OnDraw()
FileBrowserActivity::~FileBrowserActivity() FileBrowserActivity::~FileBrowserActivity()
{ {
delete callback; delete callback;
cleanup();
} }

View File

@ -45,6 +45,7 @@ class FileBrowserActivity: public TaskListener, public WindowActivity
class SearchAction; class SearchAction;
void populateList(); void populateList();
void cleanup();
public: public:
FileBrowserActivity(ByteString directory, FileSelectedCallback * callback); FileBrowserActivity(ByteString directory, FileSelectedCallback * callback);
void OnDraw() override; void OnDraw() override;