Open task views in a sheet over the left pane
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user