From 290547cbba70a31146575f0964e9e81570bc1d0e Mon Sep 17 00:00:00 2001 From: Ben Wallis Date: Thu, 6 Dec 2018 21:20:42 +0000 Subject: [PATCH] Fixed cancel on exit not working --- Filtration.Interface/IDocument.cs | 2 +- .../ViewModels/ThemeEditorViewModel.cs | 3 +- .../DesignTime/DesignTimeUpdateViewModel.cs | 2 +- .../ViewModels/ItemFilterScriptViewModel.cs | 45 ++++++++++--------- Filtration/ViewModels/MainWindowViewModel.cs | 5 ++- Filtration/ViewModels/StartPageViewModel.cs | 2 +- Filtration/ViewModels/UpdateViewModel.cs | 3 +- Filtration/Views/MainWindow.xaml.cs | 1 - 8 files changed, 35 insertions(+), 28 deletions(-) diff --git a/Filtration.Interface/IDocument.cs b/Filtration.Interface/IDocument.cs index c32a38b..f621ae6 100644 --- a/Filtration.Interface/IDocument.cs +++ b/Filtration.Interface/IDocument.cs @@ -8,7 +8,7 @@ namespace Filtration.Interface { bool IsScript { get; } bool IsTheme { get; } - Task Close(); + Task Close(); RelayCommand CloseCommand { get; } } } diff --git a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs index ca3db7b..7e984ad 100644 --- a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs +++ b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs @@ -186,10 +186,11 @@ namespace Filtration.ThemeEditor.ViewModels } #pragma warning disable 1998 - public async Task Close() + public async Task Close() #pragma warning restore 1998 { Messenger.Default.Send(new ThemeClosedMessage {ClosedViewModel = this}); + return true; } private void OnAddThemeComponentCommand(ThemeComponentType themeComponentType) diff --git a/Filtration/ViewModels/DesignTime/DesignTimeUpdateViewModel.cs b/Filtration/ViewModels/DesignTime/DesignTimeUpdateViewModel.cs index fff23b1..d5a1d93 100644 --- a/Filtration/ViewModels/DesignTime/DesignTimeUpdateViewModel.cs +++ b/Filtration/ViewModels/DesignTime/DesignTimeUpdateViewModel.cs @@ -39,7 +39,7 @@ namespace Filtration.ViewModels.DesignTime public bool IsScript { get; } public bool IsTheme { get; } - public Task Close() + public Task Close() { throw new System.NotImplementedException(); } diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs index 60d7d5c..e7e68e7 100644 --- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs +++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs @@ -799,34 +799,37 @@ namespace Filtration.ViewModels await Close(); } - public async Task Close() + public async Task Close() { if (!IsDirty) { CloseScript(); + return true; } - else - { - var result = _messageBoxService.Show("Filtration", - "Save script \"" + Filename + "\"?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); - switch (result) + var result = _messageBoxService.Show("Filtration", + "Save script \"" + Filename + "\"?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); + + switch (result) + { + case MessageBoxResult.Yes: { - case MessageBoxResult.Yes: - { - await SaveAsync(); - CloseScript(); - break; - } - case MessageBoxResult.No: - { - CloseScript(); - break; - } - case MessageBoxResult.Cancel: - { - return; - } + await SaveAsync(); + CloseScript(); + return true; + } + case MessageBoxResult.No: + { + CloseScript(); + return true; + } + case MessageBoxResult.Cancel: + { + return false; + } + default: + { + return false; } } } diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 2e44f5e..50f31c3 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -768,7 +768,10 @@ namespace Filtration.ViewModels continue; } - await document.Close(); + if (!await document.Close()) + { + return false; + } } return true; diff --git a/Filtration/ViewModels/StartPageViewModel.cs b/Filtration/ViewModels/StartPageViewModel.cs index 6a896a3..5a2c98b 100644 --- a/Filtration/ViewModels/StartPageViewModel.cs +++ b/Filtration/ViewModels/StartPageViewModel.cs @@ -25,7 +25,7 @@ namespace Filtration.ViewModels public bool IsScript => false; public bool IsTheme => false; - public Task Close() + public Task Close() { throw new System.NotImplementedException(); } diff --git a/Filtration/ViewModels/UpdateViewModel.cs b/Filtration/ViewModels/UpdateViewModel.cs index 713908c..77615f5 100644 --- a/Filtration/ViewModels/UpdateViewModel.cs +++ b/Filtration/ViewModels/UpdateViewModel.cs @@ -65,9 +65,10 @@ namespace Filtration.ViewModels public bool IsInErrorState => UpdateStatus == UpdateStatus.Error; - public async Task Close() + public async Task Close() { await Task.FromResult(true); + return true; } public RelayCommand CloseCommand { get; } diff --git a/Filtration/Views/MainWindow.xaml.cs b/Filtration/Views/MainWindow.xaml.cs index 26aecc5..e956b0f 100644 --- a/Filtration/Views/MainWindow.xaml.cs +++ b/Filtration/Views/MainWindow.xaml.cs @@ -44,7 +44,6 @@ namespace Filtration.Views if (!allDocumentsClosed) { e.Cancel = true; - } }