Skip to content

Commit a244d79

Browse files
Nick LefeverSaadnajmi
authored andcommitted
[fabric] Add View focus/blur event emitting on first responder change
Summary: This diff overrides the first responder tracking methods to submit focus/blur events when the native view becomes the first responder (focus) and resigns the first responder state (blur). Test Plan: * Update a view to log to the console when it is focused/blurred * Run Zeratul with Fabric enabled * Focus/blur the view and check the logs to verify that the event handlers are being called https://pxl.cl/4n99N Reviewers: shawndempsey, #rn-desktop Reviewed By: shawndempsey Differential Revision: https://phabricator.intern.facebook.com/D53931157
1 parent 9669157 commit a244d79

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,6 +1510,38 @@ - (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)acti
15101510
}
15111511
}
15121512

1513+
#if TARGET_OS_OSX // [macOS
1514+
1515+
#pragma mark - Focus Events
1516+
1517+
- (BOOL)becomeFirstResponder
1518+
{
1519+
if (![super becomeFirstResponder]) {
1520+
return NO;
1521+
}
1522+
1523+
if (_eventEmitter) {
1524+
_eventEmitter->onFocus();
1525+
}
1526+
1527+
return YES;
1528+
}
1529+
1530+
- (BOOL)resignFirstResponder
1531+
{
1532+
if (![super resignFirstResponder]) {
1533+
return NO;
1534+
}
1535+
1536+
if (_eventEmitter) {
1537+
_eventEmitter->onBlur();
1538+
}
1539+
1540+
return YES;
1541+
}
1542+
1543+
#endif // macOS]
1544+
15131545
- (SharedTouchEventEmitter)touchEventEmitterAtPoint:(CGPoint)point
15141546
{
15151547
return _eventEmitter;

0 commit comments

Comments
 (0)