From 6f3ed4f3b8eb45734ca77916b4c96fab937cb2e2 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 31 May 2026 02:58:27 +0800
Subject: [PATCH] Prepare 7.8.7 dock policy release
---
Apptag/OverlayWindowController.swift | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/Apptag/OverlayWindowController.swift b/Apptag/OverlayWindowController.swift
index 03f74f2..1472d2e 100644
--- a/Apptag/OverlayWindowController.swift
+++ b/Apptag/OverlayWindowController.swift
@@ -2,8 +2,18 @@
import SwiftUI
final class OverlayPanel: NSPanel {
+ var handleOverlayKeyEvent: ((NSEvent) -> Bool)?
+
override var canBecomeKey: Bool { true }
override var canBecomeMain: Bool { true }
+
+ override func sendEvent(_ event: NSEvent) {
+ if event.type == .keyDown,
+ handleOverlayKeyEvent?(event) == true {
+ return
+ }
+ super.sendEvent(event)
+ }
override func constrainFrameRect(_ frameRect: NSRect, to screen: NSScreen?) -> NSRect {
frameRect
@@ -19,6 +29,7 @@
let currentOverlayLevel: () -> NSWindow.Level
let overlayLevel: (_ initialQuickSearchSource: String?) -> NSWindow.Level
let makeContentView: (_ initialQuickSearchSource: String?) -> NSView
+ let handleOverlayKeyEvent: (NSEvent) -> Bool
let installOverlayKeyMonitor: () -> Void
let removeOverlayKeyMonitor: () -> Void
let removeQuickSearchMouseMonitor: () -> Void
@@ -143,6 +154,14 @@
newWindow.setFrame(placementFrame, display: true)
self.orderFront(newWindow)
}
+ for delay in [0.2, 0.5] {
+ DispatchQueue.main.asyncAfter(deadline: .now() + delay) { [weak self, weak newWindow] in
+ guard let self, let newWindow, self.window === newWindow else { return }
+ guard newWindow.frame != placementFrame else { return }
+ newWindow.setFrame(placementFrame, display: true)
+ self.orderFront(newWindow)
+ }
+ }
if let settingsWindow = self.dependencies.settingsWindow(), settingsWindow.isVisible {
self.dependencies.prepareSettingsWindow(settingsWindow)
}
@@ -215,6 +234,7 @@
panel.titlebarAppearsTransparent = true
panel.titleVisibility = .hidden
panel.isReleasedWhenClosed = false
+ panel.handleOverlayKeyEvent = dependencies.handleOverlayKeyEvent
panel.contentView = dependencies.makeContentView(initialQuickSearchSource)
return panel
}
--
Gitblit v1.9.3