fix: keep alignment guides continuous behind launcher

This commit is contained in:
2026-10-12 13:05:58 +02:00
parent 54a7d8f494
commit ec30ceb8ee
2 changed files with 2 additions and 5 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ Open `Package.swift` in Xcode to edit the project. Use the bundled app above to
- Standard macOS text-editing shortcuts work in the search field.
- Command-comma opens the native Settings window.
- Right-click the launcher background for Settings and Quit.
- Drag the panel background to move it freely. Three stippled guides mark the target left, right, and top edges: the launcher is horizontally centered, its top edge sits one-fifth down the current display's usable area, and the side guides are exactly one launcher-width apart. Each axis brightens within its 12-point snap range, but the window snaps only when the mouse button is released. Releasing outside the range leaves that axis untouched; dismissal cancels without snapping. Guides disappear on release or dismissal and do not intercept input.
- Drag the panel background to move it freely. Three stippled guides mark the target left, right, and top edges: the launcher is horizontally centered, its top edge sits one-fifth down the current display's usable area, and the side guides are exactly one launcher-width apart. Each axis brightens within its 12-point snap range, but the window snaps only when the mouse button is released. Releasing outside the range leaves that axis untouched; dismissal cancels without snapping. Guides remain continuous underneath the frosted launcher rather than being cut out around it. They disappear on release or dismissal and do not intercept input.
Conjure runs as a native accessory app: no Dock icon, app-switcher entry, or menu-bar menus. Keyboard menu shortcuts remain available while its window is focused.
@@ -34,7 +34,6 @@ final class LauncherAlignmentGuides {
overlay.setFrame(frame, display: false)
}
view.targetFrame = alignment.targetFrame.offsetBy(dx: -frame.minX, dy: -frame.minY)
view.launcherFrame = window.frame.offsetBy(dx: -frame.minX, dy: -frame.minY)
view.snapsHorizontally = alignment.snappedOrigin.x == alignment.targetFrame.minX
view.snapsVertically = alignment.snappedOrigin.y == alignment.targetFrame.minY
view.needsDisplay = true
@@ -55,7 +54,6 @@ final class LauncherAlignmentGuides {
@MainActor
private final class AlignmentGuideView: NSView {
var launcherFrame = NSRect.zero
var targetFrame = NSRect.zero
var snapsHorizontally = false
var snapsVertically = false
@@ -71,8 +69,7 @@ private final class AlignmentGuideView: NSView {
context.saveGState()
defer { context.restoreGState() }
context.addRect(bounds)
context.addRect(launcherFrame.insetBy(dx: 0.75, dy: 0.75))
context.clip(using: .evenOdd)
context.clip()
context.setLineWidth(1.5)
context.setLineCap(.round)
context.setLineDash(phase: 0, lengths: Self.dash)