From 9f76adb1fbe03ec5df6f0bfbb9b798eca243c22b Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Tue, 3 Dec 2024 12:08:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8F=8C=E5=87=BB=E6=89=98=E7=9B=98?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E4=BD=8D=E7=BD=AE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix #11274 --- src/MaaWpfGui/Views/UI/NotifyIcon.xaml.cs | 31 ++++++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/MaaWpfGui/Views/UI/NotifyIcon.xaml.cs b/src/MaaWpfGui/Views/UI/NotifyIcon.xaml.cs index 1568681e76..764acb8a77 100644 --- a/src/MaaWpfGui/Views/UI/NotifyIcon.xaml.cs +++ b/src/MaaWpfGui/Views/UI/NotifyIcon.xaml.cs @@ -12,13 +12,14 @@ // using System; +using System.Runtime.InteropServices; +using System.Timers; using System.Windows; using System.Windows.Controls; using MaaWpfGui.Constants; using MaaWpfGui.Helper; using MaaWpfGui.Main; using MaaWpfGui.ViewModels.UI; -using MaaWpfGui.ViewModels.UserControl.Settings; using Serilog; namespace MaaWpfGui.Views.UI @@ -30,10 +31,24 @@ namespace MaaWpfGui.Views.UI { private static readonly ILogger _logger = Log.ForContext(); private readonly int _menuItemNum; + private static Timer _clickTimer; + private static bool _canClick = true; + + [DllImport("user32.dll")] + private static extern uint GetDoubleClickTime(); public NotifyIcon() { InitializeComponent(); + + uint doubleClickTime = GetDoubleClickTime(); + _clickTimer = new(doubleClickTime); + _clickTimer.AutoReset = false; + _clickTimer.Elapsed += (s, e) => + { + _canClick = true; + }; + InitIcon(); if (notifyIcon.ContextMenu is not null) { @@ -47,7 +62,7 @@ namespace MaaWpfGui.Views.UI notifyIcon.Visibility = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.UseTray, bool.TrueString)) ? Visibility.Visible : Visibility.Collapsed; notifyIcon.Click += NotifyIcon_MouseClick; - notifyIcon.MouseDoubleClick += OnNotifyIconDoubleClick; + notifyIcon.MouseDoubleClick += NotifyIcon_MouseClick; startMenu.Click += StartTask; stopMenu.Click += StopTask; @@ -96,6 +111,13 @@ namespace MaaWpfGui.Views.UI private static void NotifyIcon_MouseClick(object sender, RoutedEventArgs e) { + if (!_canClick) + { + return; + } + + _clickTimer.Start(); + _canClick = false; Instances.MainWindowManager?.SwitchWindowState(); } @@ -147,10 +169,5 @@ namespace MaaWpfGui.Views.UI { Instances.MainWindowManager?.Show(); } - - private static void OnNotifyIconDoubleClick(object sender, RoutedEventArgs e) - { - App_show(sender, e); - } } }