diff --git a/Ink Canvas.sln.DotSettings.user b/Ink Canvas.sln.DotSettings.user index 5ef2d603..0401f804 100644 --- a/Ink Canvas.sln.DotSettings.user +++ b/Ink Canvas.sln.DotSettings.user @@ -1,2 +1,4 @@  - WARNING \ No newline at end of file + WARNING + C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe + 1114112 \ No newline at end of file diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 1d6fc062..f52d1faf 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -482,14 +482,39 @@ namespace Ink_Canvas { private void Window_Closing(object sender, CancelEventArgs e) { LogHelper.WriteLogToFile("Ink Canvas closing", LogHelper.LogType.Event); if (!CloseIsFromButton && Settings.Advanced.IsSecondConfirmWhenShutdownApp) { - e.Cancel = true; - if (MessageBox.Show("是否继续关闭 InkCanvasForClass,这将丢失当前未保存的墨迹。", "InkCanvasForClass", - MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.OK) - if (MessageBox.Show("真的狠心关闭 InkCanvasForClass吗?", "InkCanvasForClass", MessageBoxButton.OKCancel, - MessageBoxImage.Error) == MessageBoxResult.OK) - if (MessageBox.Show("是否取消关闭 InkCanvasForClass?", "InkCanvasForClass", MessageBoxButton.OKCancel, - MessageBoxImage.Error) != MessageBoxResult.OK) - e.Cancel = false; + // 第一个确认对话框 + var result1 = MessageBox.Show("是否继续关闭 InkCanvasForClass,这将丢失当前未保存的墨迹。", "InkCanvasForClass", + MessageBoxButton.OKCancel, MessageBoxImage.Warning); + + if (result1 == MessageBoxResult.Cancel) { + e.Cancel = true; + LogHelper.WriteLogToFile("Ink Canvas closing cancelled at first confirmation", LogHelper.LogType.Event); + return; + } + + // 第二个确认对话框 + var result2 = MessageBox.Show("真的狠心关闭 InkCanvasForClass吗?", "InkCanvasForClass", + MessageBoxButton.OKCancel, MessageBoxImage.Error); + + if (result2 == MessageBoxResult.Cancel) { + e.Cancel = true; + LogHelper.WriteLogToFile("Ink Canvas closing cancelled at second confirmation", LogHelper.LogType.Event); + return; + } + + // 第三个最终确认对话框 + var result3 = MessageBox.Show("最后确认:确定要关闭 InkCanvasForClass 吗?", "InkCanvasForClass", + MessageBoxButton.OKCancel, MessageBoxImage.Question); + + if (result3 == MessageBoxResult.Cancel) { + e.Cancel = true; + LogHelper.WriteLogToFile("Ink Canvas closing cancelled at final confirmation", LogHelper.LogType.Event); + return; + } + + // 所有确认都通过,允许关闭 + e.Cancel = false; + LogHelper.WriteLogToFile("Ink Canvas closing confirmed by user", LogHelper.LogType.Event); } if (e.Cancel) LogHelper.WriteLogToFile("Ink Canvas closing cancelled", LogHelper.LogType.Event); diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 9a7194bb..9bd81835 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -1701,16 +1701,15 @@ namespace Ink_Canvas { public void BtnExit_Click(object sender, RoutedEventArgs e) { App.IsAppExitByUser = true; - Application.Current.Shutdown(); - // CloseIsFromButton = true; - // Close(); + // 不设置 CloseIsFromButton = true,让它也经过确认流程 + Close(); } public void BtnRestart_Click(object sender, RoutedEventArgs e) { Process.Start(System.Windows.Forms.Application.ExecutablePath, "-m"); App.IsAppExitByUser = true; - CloseIsFromButton = true; - Application.Current.Shutdown(); + // 不设置 CloseIsFromButton = true,让它也经过确认流程 + Close(); } private void SettingsOverlayClick(object sender, MouseButtonEventArgs e) {