From 95ecb066689c4078052fc362adc893836a61a4e9 Mon Sep 17 00:00:00 2001 From: lincube Date: Mon, 23 Mar 2026 21:13:08 +0800 Subject: [PATCH] 0.7.6.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在应用启动台上,也可以正常滑动 --- ...LanMountainDesktop.Shared.Contracts.csproj | 1 + .../Views/MainWindow.DesktopPaging.cs | 55 +++++++++++++++++-- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/LanMountainDesktop.Shared.Contracts/LanMountainDesktop.Shared.Contracts.csproj b/LanMountainDesktop.Shared.Contracts/LanMountainDesktop.Shared.Contracts.csproj index c44b5dd..81914dc 100644 --- a/LanMountainDesktop.Shared.Contracts/LanMountainDesktop.Shared.Contracts.csproj +++ b/LanMountainDesktop.Shared.Contracts/LanMountainDesktop.Shared.Contracts.csproj @@ -12,6 +12,7 @@ README.md https://github.com/wwiinnddyy/LanMountainDesktop git + true diff --git a/LanMountainDesktop/Views/MainWindow.DesktopPaging.cs b/LanMountainDesktop/Views/MainWindow.DesktopPaging.cs index b7a4519..825c608 100644 --- a/LanMountainDesktop/Views/MainWindow.DesktopPaging.cs +++ b/LanMountainDesktop/Views/MainWindow.DesktopPaging.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -552,7 +552,6 @@ public partial class MainWindow { if (node is Control control) { - // Avoid swiping pages when interacting with desktop components/widgets. if (control.Classes.Contains("desktop-component") || control.Classes.Contains("desktop-component-host")) { @@ -560,7 +559,31 @@ public partial class MainWindow } } - if (node is Button or TextBox or ComboBox or ListBoxItem or Slider or ToggleSwitch) + if (node is Button button && IsLauncherTileButton(button)) + { + continue; + } + + if (node is TextBox or ComboBox or ListBoxItem or Slider or ToggleSwitch) + { + return true; + } + } + + return false; + } + + private static bool IsLauncherTileButton(Button? button) + { + if (button is null) + { + return false; + } + + foreach (var node in button.GetSelfAndVisualAncestors()) + { + if (node is WrapPanel panel && + (panel.Name == "LauncherRootTilePanel" || panel.Name == "LauncherFolderTilePanel")) { return true; } @@ -611,7 +634,17 @@ public partial class MainWindow private static bool IsDesktopSwipeBlockingNode(object node) { - if (node is Button or TextBox or ComboBox or Slider or ToggleSwitch or ListBoxItem or ScrollViewer) + if (node is ScrollViewer scrollViewer && IsLauncherScrollViewer(scrollViewer)) + { + return false; + } + + if (node is Button button && IsLauncherTileButton(button)) + { + return false; + } + + if (node is TextBox or ComboBox or Slider or ToggleSwitch or ListBoxItem) { return true; } @@ -625,13 +658,23 @@ public partial class MainWindow } var typeName = node.GetType().Name; - return typeName.Contains("Button", StringComparison.OrdinalIgnoreCase) || - typeName.Contains("WebView", StringComparison.OrdinalIgnoreCase) || + return typeName.Contains("WebView", StringComparison.OrdinalIgnoreCase) || typeName.Contains("ScrollBar", StringComparison.OrdinalIgnoreCase) || typeName.Contains("NumericUpDown", StringComparison.OrdinalIgnoreCase) || typeName.Contains("TextPresenter", StringComparison.OrdinalIgnoreCase); } + private static bool IsLauncherScrollViewer(ScrollViewer? scrollViewer) + { + if (scrollViewer is null) + { + return false; + } + + return scrollViewer.Name == "LauncherRootScrollViewer" || + scrollViewer.Name == "LauncherFolderScrollViewer"; + } + private bool TryGetPointerPositionInDesktopViewport(PointerEventArgs e, out Point point) { point = default;