Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e465acba12 |
@@ -141,6 +141,9 @@ preferred position controls where the hidden/kept boundary lands:
|
||||
(`kAXPressAction`, then `kAXShowMenuAction`), and `resume()`s ~0.1s later. The
|
||||
menu is its own window anchored at the item's on-screen spot, so it survives
|
||||
re-hiding.
|
||||
- `press` first calls `onWillPress`, which `AppDelegate` wires to close the
|
||||
popover. Without it the panel stays open on top of the menu that opens and can
|
||||
leave menus (e.g. Spotlight) stranded behind it.
|
||||
- **Cannot reveal a single icon.** The spacer hides a contiguous block to its
|
||||
left, so a press can only reveal the whole block. Isolating one item would
|
||||
need either per-item ordering control (not available) or covering the icons
|
||||
|
||||
@@ -132,6 +132,14 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
)
|
||||
)
|
||||
self.popover = popover
|
||||
|
||||
// Selecting a tray item must dismiss our panel, otherwise it stays on
|
||||
// top of the menu that opens (and can strand menus behind it).
|
||||
Task { @MainActor [weak self] in
|
||||
MenuBarItemManager.shared.onWillPress = {
|
||||
self?.popover?.performClose(nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func togglePopover() {
|
||||
|
||||
@@ -30,6 +30,9 @@ final class MenuBarItemManager: ObservableObject {
|
||||
|
||||
private var observers: [NSObjectProtocol] = []
|
||||
|
||||
/// Called just before pressing an item so the owner can close its panel.
|
||||
var onWillPress: (() -> Void)?
|
||||
|
||||
private init() {}
|
||||
|
||||
func start() {
|
||||
@@ -113,6 +116,10 @@ final class MenuBarItemManager: ObservableObject {
|
||||
/// hide again shortly after. The reveal is momentary rather than lasting the
|
||||
/// whole time the panel is open.
|
||||
func press(_ item: MenuBarItem) {
|
||||
// Close our own panel first, otherwise it stays open on top of the
|
||||
// menu that is about to appear (and can leave menus behind it).
|
||||
onWillPress?()
|
||||
|
||||
let hider = MenuBarHider.shared
|
||||
let needsReveal = hider.isHiding
|
||||
guard needsReveal else {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
VERSION="${1:-0.4.2}"
|
||||
VERSION="${1:-0.4.3}"
|
||||
|
||||
swift build -c release
|
||||
|
||||
|
||||
Reference in New Issue
Block a user