fix:进入PPT自动收纳

This commit is contained in:
2025-09-22 11:36:55 +08:00
parent 2c8c4351dd
commit fcfba7a978
4 changed files with 71 additions and 12 deletions
+3 -4
View File
@@ -260,12 +260,11 @@ namespace Ink_Canvas
}
// 只有在PPT放映模式下且页数有效时才显示翻页按钮
// 但是,如果启用了PPT自动收纳功能,则不显示翻页按钮
// 翻页按钮的显示应该基于PPT放映状态,而不是自动收纳设置
if (StackPanelPPTControls.Visibility == Visibility.Visible &&
BtnPPTSlideShowEnd.Visibility == Visibility.Visible &&
PPTManager?.IsInSlideShow == true &&
PPTManager?.SlidesCount > 0 &&
!Settings.Automation.IsAutoFoldInPPTSlideShow)
PPTManager?.SlidesCount > 0)
{
var dops = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
var dopsc = dops.ToCharArray();
@@ -273,7 +272,7 @@ namespace Ink_Canvas
if (dopsc[1] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightBottomPanelForPPTNavigation);
if (dopsc[2] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(LeftSidePanelForPPTNavigation);
if (dopsc[3] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightSidePanelForPPTNavigation);
LogHelper.WriteLogToFile($"从收纳模式恢复时显示PPT翻页按钮 - 放映状态: {PPTManager?.IsInSlideShow}, 页数: {PPTManager?.SlidesCount}", LogHelper.LogType.Trace);
LogHelper.WriteLogToFile($"从收纳模式恢复时显示PPT翻页按钮 - 放映状态: {PPTManager?.IsInSlideShow}, 页数: {PPTManager?.SlidesCount}, 自动收纳: {Settings.Automation.IsAutoFoldInPPTSlideShow}", LogHelper.LogType.Trace);
}
else
{
@@ -741,12 +741,11 @@ namespace Ink_Canvas
HideSubPanelsImmediately();
// 只有在PPT放映模式下且页数有效时才显示翻页按钮
// 但是,如果启用了PPT自动收纳功能,则不显示翻页按钮
// 翻页按钮的显示应该基于PPT放映状态,而不是自动收纳设置
if (StackPanelPPTControls.Visibility == Visibility.Visible &&
BtnPPTSlideShowEnd.Visibility == Visibility.Visible &&
PPTManager?.IsInSlideShow == true &&
PPTManager?.SlidesCount > 0 &&
!Settings.Automation.IsAutoFoldInPPTSlideShow)
PPTManager?.SlidesCount > 0)
{
var dops = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
var dopsc = dops.ToCharArray();
@@ -754,7 +753,7 @@ namespace Ink_Canvas
if (dopsc[1] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightBottomPanelForPPTNavigation);
if (dopsc[2] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(LeftSidePanelForPPTNavigation);
if (dopsc[3] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightSidePanelForPPTNavigation);
LogHelper.WriteLogToFile($"显示PPT翻页按钮 - 放映状态: {PPTManager?.IsInSlideShow}, 页数: {PPTManager?.SlidesCount}", LogHelper.LogType.Trace);
LogHelper.WriteLogToFile($"显示PPT翻页按钮 - 放映状态: {PPTManager?.IsInSlideShow}, 页数: {PPTManager?.SlidesCount}, 自动收纳: {Settings.Automation.IsAutoFoldInPPTSlideShow}", LogHelper.LogType.Trace);
}
else
{
+54 -4
View File
@@ -627,6 +627,11 @@ namespace Ink_Canvas
if (!isFloatingBarFolded)
FoldFloatingBar_MouseUp(new object(), null);
}
else
{
// 如果关闭了自动收纳功能,重置状态记录,确保退出时不会错误收纳
wasFloatingBarFoldedWhenEnterSlideShow = false;
}
isStopInkReplay = true;
@@ -776,14 +781,27 @@ namespace Ink_Canvas
{
try
{
// 处理浮动栏状态:严格按进入前的状态恢复
if (wasFloatingBarFoldedWhenEnterSlideShow)
// 处理浮动栏状态:根据自动收纳功能状态和进入前的状态恢复
if (Settings.Automation.IsAutoFoldInPPTSlideShow)
{
if (!isFloatingBarFolded) FoldFloatingBar_MouseUp(new object(), null);
// 只有在启用自动收纳功能时才根据记录的状态恢复
if (wasFloatingBarFoldedWhenEnterSlideShow)
{
if (!isFloatingBarFolded) FoldFloatingBar_MouseUp(new object(), null);
}
else
{
if (isFloatingBarFolded) await UnFoldFloatingBar(new object());
}
}
else
{
if (isFloatingBarFolded) await UnFoldFloatingBar(new object());
// 如果关闭了自动收纳功能,确保浮动栏展开
if (isFloatingBarFolded)
{
await UnFoldFloatingBar(new object());
LogHelper.WriteLogToFile("PPT自动收纳功能已关闭,强制展开浮动栏", LogHelper.LogType.Trace);
}
}
if (isEnteredSlideShowEndEvent) return;
@@ -1068,6 +1086,38 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 重置PPT相关的状态变量,当PPT自动收纳设置变更时调用
/// </summary>
public void ResetPPTStateVariables()
{
try
{
// 重置进入PPT时的浮动栏收纳状态记录
wasFloatingBarFoldedWhenEnterSlideShow = false;
// 重置PPT放映结束事件标志
isEnteredSlideShowEndEvent = false;
// 重置演示文稿黑边状态
isPresentationHaveBlackSpace = false;
// 重置上次播放位置相关字段
_lastPlaybackPage = 0;
_shouldNavigateToLastPage = false;
// 重置页面切换防抖机制
_lastSlideSwitchTime = DateTime.MinValue;
_pendingSlideIndex = -1;
LogHelper.WriteLogToFile("PPT状态变量已重置", LogHelper.LogType.Trace);
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"重置PPT状态变量失败: {ex.Message}", LogHelper.LogType.Error);
}
}
/// <summary>
/// 使用防抖机制处理页面切换
/// </summary>
+11
View File
@@ -1406,7 +1406,18 @@ namespace Ink_Canvas
private void ToggleSwitchAutoFoldInPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
// 记录设置变更前的状态
bool previousState = Settings.Automation.IsAutoFoldInPPTSlideShow;
Settings.Automation.IsAutoFoldInPPTSlideShow = ToggleSwitchAutoFoldInPPTSlideShow.IsOn;
// 如果设置状态发生变化,重置PPT相关状态变量
if (previousState != Settings.Automation.IsAutoFoldInPPTSlideShow)
{
ResetPPTStateVariables();
LogHelper.WriteLogToFile($"PPT自动收纳设置已变更: {Settings.Automation.IsAutoFoldInPPTSlideShow}, 已重置相关状态变量", LogHelper.LogType.Trace);
}
if (Settings.Automation.IsAutoFoldInPPTSlideShow)
{
SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Visible;