The empty provider was never load-bearing — the dragless layer frees the rubber band
Measured on real events 2026-08-07, correcting the 2026-08-06 hosted finding: a bare count-1 tap on LaneView's empty-space layer fires in ~1-3 ms with no drag source at all — the hold that made the empty .onDrag look necessary was the sterile NSApp.postEvent stream over-disambiguating. And the provider was actively harmful: even an empty drag source claims the mouse-drag at threshold, starving the marquee's simultaneous DragGesture after one sample — the band froze and the mouseUp never arrived. The layer goes dragless; drags from empty space belong wholly to MarqueeControl. PointerClick's and the layer's comments retell the corrected story. Alongside: openCard is typed @MainActor throughout, which makes the closure Sendable and lets CardFaceRole carry it under CardFaceView's nonisolated ==. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -100,7 +100,7 @@ private struct ZoomedBoard: View {
|
||||
let store: BoardStore
|
||||
let window: @MainActor () -> NSWindow?
|
||||
let confirmations: TrashConfirmations
|
||||
let openCard: (ItemID) -> Void
|
||||
let openCard: @MainActor (ItemID) -> Void
|
||||
let search: BoardSearchPresentation
|
||||
|
||||
@Environment(AppModel.self) private var appModel
|
||||
|
||||
@@ -71,7 +71,7 @@ private struct ZoomedBoard: View {
|
||||
let store: BoardStore
|
||||
let window: @MainActor () -> NSWindow?
|
||||
let confirmations: TrashConfirmations
|
||||
let openCard: (ItemID) -> Void
|
||||
let openCard: @MainActor (ItemID) -> Void
|
||||
let search: BoardSearchPresentation
|
||||
|
||||
@Environment(AppModel.self) private var appModel
|
||||
|
||||
@@ -69,7 +69,7 @@ private func makeLane(
|
||||
slotWidth: CGFloat = 260,
|
||||
drops: BoardDropContext,
|
||||
marquee: MarqueeControl,
|
||||
openCard: @escaping (ItemID) -> Void = { _ in }
|
||||
openCard: @escaping @MainActor (ItemID) -> Void = { _ in }
|
||||
) -> LaneView {
|
||||
LaneView(
|
||||
store: store,
|
||||
|
||||
Reference in New Issue
Block a user