fix:进入PPT自动收纳
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user