From be83948fab7b643634ede2403abdca27e6b45f29 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 04 Jun 2026 01:09:14 +0800
Subject: [PATCH] Fix quick search early mouse dismiss

---
 Apptag/ApptagApp.swift |   36 ++++++++++++++++++++++++++++++------
 1 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/Apptag/ApptagApp.swift b/Apptag/ApptagApp.swift
index c35007f..a70b9e2 100644
--- a/Apptag/ApptagApp.swift
+++ b/Apptag/ApptagApp.swift
@@ -430,7 +430,11 @@
         }
 
         if isQuickSearchOpen {
-            NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+            NotificationCenter.default.post(
+                name: .tagLauncherQuickSearchDismissRequested,
+                object: nil,
+                userInfo: ["source": QuickSearchDismissSource.programmatic]
+            )
         }
 
         if !requiresForegroundOwnership {
@@ -987,7 +991,11 @@
         isQuickSearchOpen = false
         removeQuickSearchExternalMouseMonitor()
         updateOverlayLevelForTextInput()
-        NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+        NotificationCenter.default.post(
+            name: .tagLauncherQuickSearchDismissRequested,
+            object: nil,
+            userInfo: ["source": QuickSearchDismissSource.keyboard]
+        )
         if shouldHideOverlayAfterDismiss {
             quickSearchShouldHideOverlayOnClose = false
             quickSearchOnlyOverlaySession = false
@@ -1526,7 +1534,11 @@
         ) { [weak self] _ in
             DispatchQueue.main.async {
                 guard self?.isQuickSearchOpen == true else { return }
-                NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+                NotificationCenter.default.post(
+                    name: .tagLauncherQuickSearchDismissRequested,
+                    object: nil,
+                    userInfo: ["source": QuickSearchDismissSource.mouse]
+                )
             }
         }
     }
@@ -1538,7 +1550,11 @@
         ) { [weak self] event in
             guard let self, self.isQuickSearchOpen else { return event }
             if event.window === self.overlayWindow {
-                NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+                NotificationCenter.default.post(
+                    name: .tagLauncherQuickSearchDismissRequested,
+                    object: nil,
+                    userInfo: ["source": QuickSearchDismissSource.mouse]
+                )
                 return nil
             }
             return event
@@ -1633,7 +1649,11 @@
         updateOverlayLevelForTextInput()
         quickSearchShouldHideOverlayOnClose = false
         quickSearchOnlyOverlaySession = false
-        NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+        NotificationCenter.default.post(
+            name: .tagLauncherQuickSearchDismissRequested,
+            object: nil,
+            userInfo: ["source": QuickSearchDismissSource.programmatic]
+        )
     }
 
     @objc private func switchLanguage(_ sender: NSMenuItem) {
@@ -1695,7 +1715,11 @@
         }
         if hit == self {
             if quickSearchSuppressesBackdropDismiss {
-                NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+                NotificationCenter.default.post(
+                    name: .tagLauncherQuickSearchDismissRequested,
+                    object: nil,
+                    userInfo: ["source": QuickSearchDismissSource.backdrop]
+                )
                 return
             }
             if suppressBackdropDismiss {

--
Gitblit v1.9.3