From a7f2f5f48368c92bf135a64b8c31fe2d389a672f Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 03 Jun 2026 21:52:55 +0800
Subject: [PATCH] Prepare 7.8.11 quick search release

---
 Apptag/AppGridCollectionView.swift |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/Apptag/AppGridCollectionView.swift b/Apptag/AppGridCollectionView.swift
index 013e915..54a218b 100644
--- a/Apptag/AppGridCollectionView.swift
+++ b/Apptag/AppGridCollectionView.swift
@@ -252,9 +252,19 @@
     }
 }
 
+private final class AppGridScrollView: NSScrollView {
+    override var acceptsFirstResponder: Bool { true }
+
+    override func scrollWheel(with event: NSEvent) {
+        window?.makeKeyAndOrderFront(nil)
+        window?.orderFrontRegardless()
+        super.scrollWheel(with: event)
+    }
+}
+
 final class AppGridCollectionHostView: NSView, AppEmptyDropReceivingView {
     private let emptyDropTargetID = UUID()
-    private let scrollView = NSScrollView()
+    private let scrollView = AppGridScrollView()
     private let collectionView = NSCollectionView()
     private let gridLayout = AppGridContainerCollectionLayout()
     private weak var coordinator: AppGridCollectionView.Coordinator?
@@ -262,6 +272,7 @@
     private var lastLayoutSize: NSSize = .zero
     private var lastReportedBoundsOrigin: NSPoint?
     private var scrollUnfreezeWorkItem: DispatchWorkItem?
+    private var scrollActivityIsActive = false
 
     override var isFlipped: Bool { true }
 
@@ -375,14 +386,18 @@
     }
 
     private func handleScrollActivity() {
-        if coordinator?.setScrollBubbleDisabled(true) == true {
-            refreshVisibleRuntimeState()
+        if !scrollActivityIsActive {
+            scrollActivityIsActive = true
+            if coordinator?.setScrollBubbleDisabled(true) == true {
+                refreshVisibleRuntimeState()
+            }
+            coordinator?.onScrollActivity()
         }
-        coordinator?.onScrollActivity()
 
         scrollUnfreezeWorkItem?.cancel()
         let workItem = DispatchWorkItem { [weak self] in
             guard let self else { return }
+            self.scrollActivityIsActive = false
             self.replayPointerHover()
             if self.coordinator?.setScrollBubbleDisabled(false) == true {
                 self.refreshVisibleRuntimeState()

--
Gitblit v1.9.3