2121#if os(macOS)
2222
2323import Carbon
24+ import Combine
2425import SwiftUI
2526
2627import SelectableCollectionViewMacResources
@@ -83,6 +84,7 @@ public class CollectionViewContainer<Element: Hashable, Content: View>: NSView,
8384 private let scrollView : CustomScrollView
8485 private let collectionView : InteractiveCollectionView
8586 private var dataSource : DataSource ? = nil
87+ private var cancellables : Set < AnyCancellable > = [ ]
8688
8789 var provider : ( ( Element ) -> Content ? ) ? = nil
8890
@@ -105,7 +107,9 @@ public class CollectionViewContainer<Element: Hashable, Content: View>: NSView,
105107 else {
106108 return ShortcutItemView ( )
107109 }
108- view. configure ( AnyView ( content) , parentHasFocus: collectionView. isFirstResponder)
110+ view. configure ( AnyView ( content) ,
111+ parentHasFocus: collectionView. isFirstResponder,
112+ parentIsKey: collectionView. window? . isKeyWindow ?? false )
109113 view. element = item
110114 return view
111115 }
@@ -129,6 +133,18 @@ public class CollectionViewContainer<Element: Hashable, Content: View>: NSView,
129133
130134 collectionView. isSelectable = true
131135 collectionView. allowsMultipleSelection = true
136+
137+ // Observe application activity notifications to allow us to update the selection color.
138+ let notificationCenter = NotificationCenter . default
139+ notificationCenter
140+ . publisher ( for: NSApplication . didBecomeActiveNotification)
141+ . combineLatest ( notificationCenter
142+ . publisher ( for: NSApplication . didResignActiveNotification) )
143+ . receive ( on: DispatchQueue . main)
144+ . sink { [ weak self] _ in
145+ self ? . updateSelection ( )
146+ }
147+ . store ( in: & cancellables)
132148 }
133149
134150 required init ? ( coder: NSCoder ) {
@@ -150,7 +166,9 @@ public class CollectionViewContainer<Element: Hashable, Content: View>: NSView,
150166 continue
151167 }
152168 let content = self . delegate? . collectionViewContainer ( self , contentForElement: element)
153- item. configure ( AnyView ( content) , parentHasFocus: collectionView. isFirstResponder)
169+ item. configure ( AnyView ( content) ,
170+ parentHasFocus: collectionView. isFirstResponder,
171+ parentIsKey: collectionView. window? . isKeyWindow ?? false )
154172 }
155173
156174 // Update the selection
0 commit comments