1919
2020@interface FBTVNavigationItem : NSObject
2121@property (nonatomic , readonly ) NSUInteger uid;
22- @property (nonatomic , strong ) NSMutableSet <NSNumber *>* directions;
22+ @property (nonatomic , readonly ) NSMutableSet <NSNumber *>* directions;
2323
2424+ (instancetype )itemWithUid : (NSUInteger ) uid ;
2525@end
@@ -69,11 +69,11 @@ - (instancetype)initWithTargetElement:(id<FBElement>)targetElement
6969 return self;
7070}
7171
72- - (FBTVDirection)directionToMoveFocuse
72+ - (FBTVDirection)directionToFocusedElement
7373{
7474 id <FBElement> focused = self.focusedElement ;
7575 CGPoint focusedCenter = FBRectGetCenter (focused.wdFrame );
76- FBTVNavigationItem *item = [self navigationItemFromElement : focused];
76+ FBTVNavigationItem *item = [self navigationItemWithElement : focused];
7777 CGFloat yDelta = self.targetCenter .y - focusedCenter.y ;
7878 CGFloat xDelta = self.targetCenter .x - focusedCenter.x ;
7979 FBTVDirection direction;
@@ -98,7 +98,7 @@ - (FBTVDirection)directionToMoveFocuse
9898 return [FBApplication fb_activeApplication ].fb_focusedElement ;
9999}
100100
101- - (FBTVNavigationItem*) navigationItemFromElement : (id <FBElement>)element
101+ - (FBTVNavigationItem*)navigationItemWithElement : (id <FBElement>)element
102102{
103103 NSNumber *key = [NSNumber numberWithUnsignedInteger: element.wdUID];
104104 FBTVNavigationItem* item = [self .navigationItems objectForKey: key];
@@ -112,34 +112,32 @@ - (FBTVNavigationItem*) navigationItemFromElement:(id<FBElement>)element
112112
113113- (FBTVDirection)getHorizontalDirectionForItem : (FBTVNavigationItem *)item withDelta : (CGFloat)delta
114114{
115- if (delta > 0 ) {
116- if (![item.directions containsObject: [ NSNumber numberWithInteger: FBTVDirectionRight]]) {
117- [item.directions addObject : [NSNumber numberWithInteger: FBTVDirectionRight]];
118- return FBTVDirectionRight;
119- }
115+ // GCFloat is double in 64bit. tvOS is only for arm64
116+ if (delta > DBL_EPSILON &&
117+ ! [item.directions containsObject : [NSNumber numberWithInteger: FBTVDirectionRight]]) {
118+ [item.directions addObject: [ NSNumber numberWithInteger: FBTVDirectionRight]] ;
119+ return FBTVDirectionRight;
120120 }
121- if (delta < 0 ) {
122- if (![item.directions containsObject: [NSNumber numberWithInteger: FBTVDirectionLeft]]) {
123- [item.directions addObject: [NSNumber numberWithInteger: FBTVDirectionLeft]];
124- return FBTVDirectionLeft;
125- }
121+ if (delta < DBL_EPSILON &&
122+ ![item.directions containsObject: [NSNumber numberWithInteger: FBTVDirectionLeft]]) {
123+ [item.directions addObject: [NSNumber numberWithInteger: FBTVDirectionLeft]];
124+ return FBTVDirectionLeft;
126125 }
127126 return FBTVDirectionNone;
128127}
129128
130129- (FBTVDirection)getVerticalDirectionForItem : (FBTVNavigationItem *)item withDelta : (CGFloat)delta
131130{
132- if (delta > 0 ) {
133- if (![item.directions containsObject: [ NSNumber numberWithInteger: FBTVDirectionDown]]) {
134- [item.directions addObject : [NSNumber numberWithInteger: FBTVDirectionDown]];
135- return FBTVDirectionDown;
136- }
131+ // GCFloat is double in 64bit. tvOS is only for arm64
132+ if (delta > DBL_EPSILON &&
133+ ! [item.directions containsObject : [NSNumber numberWithInteger: FBTVDirectionDown]]) {
134+ [item.directions addObject: [ NSNumber numberWithInteger: FBTVDirectionDown]] ;
135+ return FBTVDirectionDown;
137136 }
138- if (delta < 0 ) {
139- if (![item.directions containsObject: [NSNumber numberWithInteger: FBTVDirectionUp]]) {
140- [item.directions addObject: [NSNumber numberWithInteger: FBTVDirectionUp]];
141- return FBTVDirectionUp;
142- }
137+ if (delta < DBL_EPSILON &&
138+ ![item.directions containsObject: [NSNumber numberWithInteger: FBTVDirectionUp]]) {
139+ [item.directions addObject: [NSNumber numberWithInteger: FBTVDirectionUp]];
140+ return FBTVDirectionUp;
143141 }
144142 return FBTVDirectionNone;
145143}
0 commit comments