From d717f5a0badf062d1f169d7b0147cc4500293dee Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Sat, 27 Jun 2026 18:46:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E5=85=B3=E9=97=AD=20=E2=80=9C?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E9=BC=A0=E6=A0=87=E7=82=B9=E5=87=BB=E7=89=B9?= =?UTF-8?q?=E6=95=88=E2=80=9D=20=E6=97=B6=E6=97=A0=E6=B3=95=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=B8=B8=E9=A9=BB=E6=8B=96=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ConfigManager.cs | 6 ++++++ src/OverlayManager.cs | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/ConfigManager.cs b/src/ConfigManager.cs index 3e07275..0ad44a5 100644 --- a/src/ConfigManager.cs +++ b/src/ConfigManager.cs @@ -94,6 +94,12 @@ public static class ConfigManager public static string TelemetryClientId { get; set; } = ""; public static string LastTelemetrySentUtc { get; set; } = ""; + /// 点击特效是否处于激活状态(点击特效开关) + public static bool IsClickEffectActive => IsEffectEnabled; + + /// 拖尾效果是否处于激活状态(点击特效或常驻拖尾任意一个开启) + public static bool IsTrailEffectActive => IsEffectEnabled || EnableAlwaysTrailEffect; + private static List _profiles = new List(); public static void Load() diff --git a/src/OverlayManager.cs b/src/OverlayManager.cs index 5662819..2f4e38b 100644 --- a/src/OverlayManager.cs +++ b/src/OverlayManager.cs @@ -489,6 +489,8 @@ private void CancelScreenshotFailsafeTimer() private void OnMouseDownExt(object? sender, MouseEventExtArgs e) { + // 点击特效开关 + if (!ConfigManager.IsClickEffectActive) return; if (!CanRenderEffects()) return; bool isLeft = e.Button == MouseButtons.Left; @@ -527,6 +529,8 @@ private void OnMouseDownExt(object? sender, MouseEventExtArgs e) private void OnMouseMoveExt(object? sender, MouseEventExtArgs e) { + // 拖尾仅在点击特效开启或常驻拖尾开启时渲染 + if (!ConfigManager.IsTrailEffectActive) return; if (!CanRenderEffects()) return; bool cursorVisible = CursorIsVisible(); @@ -561,9 +565,13 @@ private void OnMouseUpExt(object? sender, MouseEventExtArgs e) _activePointerOverlay = null; } + /// + /// 检查渲染环境条件(覆盖窗口存在性、环境过滤、光标可见性)。 + /// 业务开关(点击特效、常驻拖尾)由各调用点自行判断。 + /// private bool CanRenderEffects() { - if (!ConfigManager.IsEffectEnabled || _overlays.Count == 0) + if (_overlays.Count == 0) { ReleasePointerState(); return false; From 530845f53256d2331c593ce421202dea7356f3f6 Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Sat, 27 Jun 2026 18:46:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E5=8F=96=E6=B6=88=E5=8B=BE?= =?UTF-8?q?=E9=80=89=E2=80=9D=E5=90=AF=E7=94=A8=E9=BC=A0=E6=A0=87=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E7=89=B9=E6=95=88=E2=80=9C=E6=97=B6=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E5=AD=90=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ControlPanelWindow.xaml | 4 ++-- src/ControlPanelWindow.xaml.cs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/ControlPanelWindow.xaml b/src/ControlPanelWindow.xaml index 06c72d9..04b316b 100644 --- a/src/ControlPanelWindow.xaml +++ b/src/ControlPanelWindow.xaml @@ -437,9 +437,9 @@ - - + + diff --git a/src/ControlPanelWindow.xaml.cs b/src/ControlPanelWindow.xaml.cs index dbbaafc..ad4933a 100644 --- a/src/ControlPanelWindow.xaml.cs +++ b/src/ControlPanelWindow.xaml.cs @@ -579,6 +579,7 @@ private void LoadSettingsCore() UpdateColorPreview(ConfigManager.ParticleColor); UpdateStartSilentInterlock(); + UpdateClickEffectPanelVisibility(); UpdateEnvironmentFilterInterlock(); SliderScale.Value = ConfigManager.EffectScale; @@ -773,6 +774,18 @@ private void CheckAutoStart_Changed(object sender, RoutedEventArgs e) UpdateStartSilentInterlock(); } + private void CheckMasterSwitch_Changed(object sender, RoutedEventArgs e) + { + if (!IsLoaded) return; + UpdateClickEffectPanelVisibility(); + } + + private void UpdateClickEffectPanelVisibility() + { + bool enabled = CheckMasterSwitch.IsChecked == true; + PanelClickEffectOptions.Visibility = enabled ? Visibility.Visible : Visibility.Collapsed; + } + private void CheckRunAsAdmin_Changed(object sender, RoutedEventArgs e) { if (!IsLoaded) return;