@@ -69,21 +69,21 @@ class ThumbnailsView {
6969 }
7070
7171 func navigateUpOrDown( _ direction: Direction , allowWrap: Bool = true ) {
72+ guard Windows . focusedWindowIndex < ThumbnailsView . recycledViews. count else { return }
7273 let focusedViewFrame = ThumbnailsView . recycledViews [ Windows . focusedWindowIndex] . frame
7374 let originCenter = NSMidX ( focusedViewFrame)
74- if let targetRow = nextRow ( direction, allowWrap: allowWrap) {
75- let leftSide = originCenter < NSMidX ( contentView. frame)
76- let leadingSide = App . shared. userInterfaceLayoutDirection == . leftToRight ? leftSide : !leftSide
77- let iterable = leadingSide ? targetRow : targetRow. reversed ( )
78- let targetView = iterable. first {
79- if App . shared. userInterfaceLayoutDirection == . leftToRight {
80- return leadingSide ? NSMaxX ( $0. frame) > originCenter : NSMinX ( $0. frame) < originCenter
81- }
82- return leadingSide ? NSMinX ( $0. frame) < originCenter : NSMaxX ( $0. frame) > originCenter
83- } ?? iterable. last!
84- let targetIndex = ThumbnailsView . recycledViews. firstIndex ( of: targetView) !
85- Windows . updateFocusedAndHoveredWindowIndex ( targetIndex)
86- }
75+ guard let targetRow = nextRow ( direction, allowWrap: allowWrap) , !targetRow. isEmpty else { return }
76+ let leftSide = originCenter < NSMidX ( contentView. frame)
77+ let leadingSide = App . shared. userInterfaceLayoutDirection == . leftToRight ? leftSide : !leftSide
78+ let iterable = leadingSide ? targetRow : targetRow. reversed ( )
79+ guard let targetView = iterable. first ( where: {
80+ if App . shared. userInterfaceLayoutDirection == . leftToRight {
81+ return leadingSide ? NSMaxX ( $0. frame) > originCenter : NSMinX ( $0. frame) < originCenter
82+ }
83+ return leadingSide ? NSMinX ( $0. frame) < originCenter : NSMaxX ( $0. frame) > originCenter
84+ } ) ?? iterable. last else { return }
85+ guard let targetIndex = ThumbnailsView . recycledViews. firstIndex ( of: targetView) else { return }
86+ Windows . updateFocusedAndHoveredWindowIndex ( targetIndex)
8787 }
8888
8989 func updateItemsAndLayout( ) {
0 commit comments