Open task views in a sheet over the left pane

This commit is contained in:
Ian Gulliver
2026-10-21 17:00:07 -07:00
parent ccb08ab6ec
commit 193401021a
22 changed files with 698 additions and 546 deletions
+16 -2
View File
@@ -7,6 +7,8 @@ final class PaneFocus {
private let api: API
private weak var window: NSWindow?
private var paneFrame: CGRect = .zero
private var taskSheetFrame: CGRect = .zero
private var leadSheetFrame: CGRect = .zero
private var drafts: Set<String> = []
private var inside = false
private var focused = false
@@ -80,6 +82,18 @@ final class PaneFocus {
paneFrame = frame
}
func setSheetFrame(_ frame: CGRect, lead: Bool) {
if lead {
leadSheetFrame = frame
} else {
taskSheetFrame = frame
}
}
private func inTask(_ p: CGPoint) -> Bool {
(paneFrame.contains(p) || taskSheetFrame.contains(p)) && !leadSheetFrame.contains(p)
}
func setDraft(_ id: String, _ nonEmpty: Bool) {
if nonEmpty {
drafts.insert(id)
@@ -128,7 +142,7 @@ final class PaneFocus {
return
}
if let p = contentPoint(view.visibleRect, in: view) {
inside = paneFrame.contains(p)
inside = inTask(p)
}
update()
}
@@ -138,7 +152,7 @@ final class PaneFocus {
return
}
let p = content.convert(location, from: nil)
inside = paneFrame.contains(CGPoint(x: p.x, y: content.isFlipped ? p.y : content.bounds.height - p.y))
inside = inTask(CGPoint(x: p.x, y: content.isFlipped ? p.y : content.bounds.height - p.y))
DispatchQueue.main.async { [weak self] in
self?.responderChanged()
}