diff --git a/Sources/AppBundle/tree/MacWindow.swift b/Sources/AppBundle/tree/MacWindow.swift index 31bd79d6..321fa2b9 100644 --- a/Sources/AppBundle/tree/MacWindow.swift +++ b/Sources/AppBundle/tree/MacWindow.swift @@ -37,7 +37,9 @@ final class MacWindow: Window, CustomStringConvertible { { allWindowsMap[id] = window debugWindowsIfRecording(window) - tryOnWindowDetected(window, startup: startup) + if !restoreClosedWindowsCacheIfNeeded(newlyDetectedWindow: window) { + tryOnWindowDetected(window, startup: startup) + } return window } else { window.garbageCollect(skipClosedWindowsCache: true) diff --git a/Sources/AppBundle/tree/frozen/FrozenTree.swift b/Sources/AppBundle/tree/frozen/FrozenTree.swift index 0a5a7c5c..dd3d8ca7 100644 --- a/Sources/AppBundle/tree/frozen/FrozenTree.swift +++ b/Sources/AppBundle/tree/frozen/FrozenTree.swift @@ -89,7 +89,10 @@ func cacheClosedWindowIfNeeded(window: Window) { ) } -func restoreWindowsFromClosedWindowsCache() { +func restoreClosedWindowsCacheIfNeeded(newlyDetectedWindow: Window) -> Bool { + if !closedWindowsCache.windowIds.contains(newlyDetectedWindow.windowId) { + return false + } let monitors = monitors let topLeftCornerToMonitor = monitors.grouped { $0.rect.topLeftCorner } @@ -117,6 +120,7 @@ func restoreWindowsFromClosedWindowsCache() { .singleOrNil()? .setActiveWorkspace(Workspace.get(byName: monitor.visibleWorkspace)) } + return true } private func restoreTreeRecursive(frozenContainer: FrozenContainer, parent: NonLeafTreeNodeObject, index: Int) {