diff --git a/src/api-wrappers/HelperExtensions.swift b/src/api-wrappers/HelperExtensions.swift index 2b758f85..33e359b4 100644 --- a/src/api-wrappers/HelperExtensions.swift +++ b/src/api-wrappers/HelperExtensions.swift @@ -21,6 +21,10 @@ extension Array where Element == Window { (1...neededRecycledViews).forEach { _ in ThumbnailsView.recycledViews.append(ThumbnailView()) } } } + + mutating func insertAndScaleRecycledPool(_ element: Element, at i: Int) { + insertAndScaleRecycledPool([element], at: i) + } } extension NSView { diff --git a/src/logic/events/AccessibilityEvents.swift b/src/logic/events/AccessibilityEvents.swift index df837b31..92f8914f 100644 --- a/src/logic/events/AccessibilityEvents.swift +++ b/src/logic/events/AccessibilityEvents.swift @@ -70,7 +70,7 @@ private func applicationActivated(_ element: AXUIElement) throws { let wid = try appFocusedWindow.cgWindowId() { DispatchQueue.main.async { guard let existingIndex = Windows.list.firstIndexThatMatches(appFocusedWindow, wid) else { return } - Windows.list.insert(Windows.list.remove(at: existingIndex), at: 0) + Windows.list.insertAndScaleRecycledPool(Windows.list.remove(at: existingIndex), at: 0) App.app.refreshOpenUi([Windows.list[0], Windows.list[existingIndex]]) } } @@ -102,7 +102,7 @@ private func windowCreated(_ element: AXUIElement, _ app: NSRunningApplication) if Windows.list.firstIndexThatMatches(element, wid) == nil, let app = (Applications.list.first { $0.runningApplication.processIdentifier == app.processIdentifier }) { let window = Window(element, app, wid, axTitle, isFullscreen, isMinimized, position) - Windows.list.insertAndScaleRecycledPool([window], at: 0) + Windows.list.insertAndScaleRecycledPool(window, at: 0) Windows.cycleFocusedWindowIndex(1) App.app.refreshOpenUi([window]) } @@ -119,11 +119,11 @@ private func focusedWindowChanged(_ element: AXUIElement, _ app: NSRunningApplic let position = try element.position() DispatchQueue.main.async { if let existingIndex = Windows.list.firstIndexThatMatches(element, wid) { - Windows.list.insert(Windows.list.remove(at: existingIndex), at: 0) + Windows.list.insertAndScaleRecycledPool(Windows.list.remove(at: existingIndex), at: 0) App.app.refreshOpenUi([Windows.list[0], Windows.list[existingIndex]]) } else if isActualWindow, let app = (Applications.list.first { $0.runningApplication.processIdentifier == app.processIdentifier }) { - Windows.list.insert(Window(element, app, wid, axTitle, isFullscreen, isMinimized, position), at: 0) + Windows.list.insertAndScaleRecycledPool(Window(element, app, wid, axTitle, isFullscreen, isMinimized, position), at: 0) App.app.refreshOpenUi([Windows.list[0]]) } }