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) {