From 5f1f190613ee701c3cf4ef81fc680aff1dfda7f7 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 2 May 2026 12:07:32 +0800 Subject: [PATCH] =?UTF-8?q?improve:PPT=E5=A2=9E=E5=BC=BA=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow_cs/MW_PPT.cs | 45 ++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index e2e9e1a3..ac91c1cd 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -2269,9 +2269,15 @@ namespace Ink_Canvas if (Settings.PowerPointSettings.EnablePPTButtonEnhancedPreview && bar != null) { - if (bar.IsPreviewExpanded) + // 侧边条点击时,把增强预览重定向到同侧的底部条上展开 + var targetBar = ResolvePreviewTargetBar(bar); + if (targetBar == null) { - bar.IsPreviewExpanded = false; + _pptManager.TryShowSlideNavigation(); + } + else if (targetBar.IsPreviewExpanded) + { + targetBar.IsPreviewExpanded = false; } else { @@ -2292,9 +2298,9 @@ namespace Ink_Canvas Thumbnail = s.Thumbnail }); } - bar.PreviewItems = items; - bar.CurrentSlide = _pptManager?.GetCurrentSlideNumber() ?? 0; - bar.IsPreviewExpanded = true; + targetBar.PreviewItems = items; + targetBar.CurrentSlide = _pptManager?.GetCurrentSlideNumber() ?? 0; + targetBar.IsPreviewExpanded = true; } } } @@ -2332,6 +2338,35 @@ namespace Ink_Canvas finally { if (bar != null) bar.IsPreviewExpanded = false; } } + /// + /// 选择承载增强预览的底部条: + /// - 来自侧边条的点击重定向到同侧底部条; + /// - 若同侧底部条不可用,退化到任意可用的底部条; + /// - 来自底部条的点击保持原行为。 + /// + private Controls.PptNavBar ResolvePreviewTargetBar(Controls.PptNavBar source) + { + if (source == null) return null; + switch (source.Direction) + { + case Controls.PptNavBar.NavDirection.LeftSide: + return PickVisibleBar(LeftBottomPanelForPPTNavigation, RightBottomPanelForPPTNavigation) ?? source; + case Controls.PptNavBar.NavDirection.RightSide: + return PickVisibleBar(RightBottomPanelForPPTNavigation, LeftBottomPanelForPPTNavigation) ?? source; + default: + return source; + } + } + + private static Controls.PptNavBar PickVisibleBar(params Controls.PptNavBar[] candidates) + { + foreach (var c in candidates) + { + if (c != null && c.Visibility == Visibility.Visible) return c; + } + return null; + } + private sealed class PptEnhancedPreviewItem { public int SlideNumber { get; set; }