Fix crash on exit when multiple windows are open

Controllers would delete their Views even if they failed to pop them from the window stack.

Have I mentioned that I really hate our MVC?
This commit is contained in:
Tamás Bálint Misius 2023-06-10 18:50:02 +02:00
parent eea0c54a36
commit c2f8a7df25
No known key found for this signature in database
GPG Key ID: 5B472A12F6ECA9F2
8 changed files with 32 additions and 16 deletions

View File

@ -71,8 +71,10 @@ ConsoleView * ConsoleController::GetView()
ConsoleController::~ConsoleController()
{
consoleView->CloseActiveWindow();
delete consoleModel;
delete consoleView;
if (consoleView->CloseActiveWindow())
{
delete consoleView;
}
}

View File

@ -141,8 +141,10 @@ void LocalBrowserController::Exit()
LocalBrowserController::~LocalBrowserController()
{
browserView->CloseActiveWindow();
delete browserModel;
delete browserView;
if (browserView->CloseActiveWindow())
{
delete browserView;
}
}

View File

@ -39,8 +39,10 @@ void LoginController::Exit()
LoginController::~LoginController()
{
loginView->CloseActiveWindow();
delete loginModel;
delete loginView;
if (loginView->CloseActiveWindow())
{
delete loginView;
}
}

View File

@ -149,8 +149,10 @@ void OptionsController::Exit()
OptionsController::~OptionsController()
{
view->CloseActiveWindow();
delete model;
delete view;
if (view->CloseActiveWindow())
{
delete view;
}
}

View File

@ -171,8 +171,10 @@ void PreviewController::Exit()
PreviewController::~PreviewController()
{
previewView->CloseActiveWindow();
Client::Ref().RemoveListener(this);
delete previewModel;
delete previewView;
if (previewView->CloseActiveWindow())
{
delete previewView;
}
}

View File

@ -58,8 +58,10 @@ void RenderController::Exit()
RenderController::~RenderController()
{
renderView->CloseActiveWindow();
delete renderModel;
delete renderView;
if (renderView->CloseActiveWindow())
{
delete renderView;
}
}

View File

@ -85,9 +85,11 @@ void SearchController::Exit()
SearchController::~SearchController()
{
delete activePreview;
searchView->CloseActiveWindow();
delete searchModel;
delete searchView;
if (searchView->CloseActiveWindow())
{
delete searchView;
}
}
void SearchController::DoSearch(String query, bool now)

View File

@ -46,8 +46,10 @@ void TagsController::Exit()
TagsController::~TagsController()
{
tagsView->CloseActiveWindow();
delete tagsModel;
delete tagsView;
if (tagsView->CloseActiveWindow())
{
delete tagsView;
}
}