From ee41f53286ca41fd40ee3a02913bba6edd079e05 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sat, 6 Sep 2025 19:27:17 +0800
Subject: [PATCH] add:issue #156
---
Ink Canvas/MainWindow.xaml | 10 ++++
Ink Canvas/MainWindow.xaml.cs | 50 +++++++++++++++++++
.../MainWindow_cs/MW_FloatingBarIcons.cs | 12 ++++-
Ink Canvas/MainWindow_cs/MW_PPT.cs | 18 ++++++-
Ink Canvas/Resources/Settings.cs | 2 +
5 files changed, 88 insertions(+), 4 deletions(-)
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 12d6c8ae..ee799c1e 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -1895,6 +1895,16 @@
+
+
+
+
+
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index 12ec5258..ff10f661 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -2139,6 +2139,56 @@ namespace Ink_Canvas
LogHelper.WriteLogToFile($"批注子面板中切换墨迹渐隐功能时出错: {ex.Message}", LogHelper.LogType.Error);
}
}
+
+ ///
+ /// PPT放映模式显示手势按钮开关切换事件处理
+ ///
+ private void ToggleSwitchShowGestureButtonInSlideShow_Toggled(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ if (!isLoaded) return;
+ var toggle = sender as ToggleSwitch;
+ Settings.PowerPointSettings.ShowGestureButtonInSlideShow = toggle != null && toggle.IsOn;
+ SaveSettingsToFile();
+
+ // 如果当前在PPT放映模式,需要立即更新手势按钮的显示状态
+ if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ UpdateGestureButtonVisibilityInPPTMode();
+ }
+
+ LogHelper.WriteLogToFile($"PPT放映模式显示手势按钮已{(Settings.PowerPointSettings.ShowGestureButtonInSlideShow ? "启用" : "禁用")}", LogHelper.LogType.Event);
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"切换PPT放映模式显示手势按钮时出错: {ex.Message}", LogHelper.LogType.Error);
+ }
+ }
+
+ ///
+ /// 更新PPT模式下手势按钮的显示状态
+ ///
+ private void UpdateGestureButtonVisibilityInPPTMode()
+ {
+ try
+ {
+ if (Settings.PowerPointSettings.ShowGestureButtonInSlideShow)
+ {
+ // 如果启用了PPT放映模式显示手势按钮,则显示手势按钮(在PPT模式下不依赖手势功能是否启用)
+ CheckEnableTwoFingerGestureBtnVisibility(true);
+ }
+ else
+ {
+ // 如果禁用了PPT放映模式显示手势按钮,则隐藏手势按钮
+ EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"更新PPT模式下手势按钮显示状态时出错: {ex.Message}", LogHelper.LogType.Error);
+ }
+ }
#endregion
#region PPT翻页直接传递
diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
index 39fbd1cc..de865548 100644
--- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
+++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
@@ -130,10 +130,18 @@ namespace Ink_Canvas
///
private void CheckEnableTwoFingerGestureBtnVisibility(bool isVisible)
{
- // 在PPT模式下始终隐藏手势按钮
+ // 在PPT模式下根据设置决定是否显示手势按钮
if (currentMode == 0 || BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
{
- EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed;
+ // 如果启用了PPT放映模式显示手势按钮,则显示手势按钮(在PPT模式下不依赖手势功能是否启用)
+ if (Settings.PowerPointSettings.ShowGestureButtonInSlideShow && isVisible)
+ {
+ EnableTwoFingerGestureBorder.Visibility = Visibility.Visible;
+ }
+ else
+ {
+ EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed;
+ }
return;
}
diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs
index 2f887d58..db19dd51 100644
--- a/Ink Canvas/MainWindow_cs/MW_PPT.cs
+++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs
@@ -643,10 +643,24 @@ namespace Ink_Canvas
BorderFloatingBarMainControls.Visibility = Visibility.Visible;
- // 在PPT模式下隐藏手势面板和手势按钮
+ // 在PPT模式下根据设置决定是否隐藏手势面板和手势按钮
AnimationsHelper.HideWithSlideAndFade(TwoFingerGestureBorder);
AnimationsHelper.HideWithSlideAndFade(BoardTwoFingerGestureBorder);
- EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed;
+
+ // 根据设置决定是否在PPT放映模式下显示手势按钮
+ if (Settings.PowerPointSettings.ShowGestureButtonInSlideShow)
+ {
+ // 如果启用了PPT放映模式显示手势按钮,则显示手势按钮
+ if (Settings.Gesture.IsEnableTwoFingerGesture)
+ {
+ CheckEnableTwoFingerGestureBtnVisibility(true);
+ }
+ }
+ else
+ {
+ // 如果禁用了PPT放映模式显示手势按钮,则隐藏手势按钮
+ EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed;
+ }
if (Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow &&
!Settings.Automation.IsAutoFoldInPPTSlideShow)
diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs
index 8b27b726..13dbfe64 100644
--- a/Ink Canvas/Resources/Settings.cs
+++ b/Ink Canvas/Resources/Settings.cs
@@ -309,6 +309,8 @@ namespace Ink_Canvas
public bool IsAlwaysGoToFirstPageOnReenter { get; set; }
[JsonProperty("enablePowerPointEnhancement")]
public bool EnablePowerPointEnhancement { get; set; } = false;
+ [JsonProperty("showGestureButtonInSlideShow")]
+ public bool ShowGestureButtonInSlideShow { get; set; } = false;
}
public class Automation