Skip to content

Commit e722e95

Browse files
committed
[fabric] Revert to Core Cursor implementation
1 parent b1010d3 commit e722e95

File tree

2 files changed

+56
-92
lines changed

2 files changed

+56
-92
lines changed

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

Lines changed: 38 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -32,71 +32,6 @@
3232

3333
using namespace facebook::react;
3434

35-
#if TARGET_OS_OSX // [macOS
36-
inline NSCursor* RCTNSCursorFromCursor(facebook::react::Cursor cursorValue) {
37-
NSCursor *cursor = nil;
38-
39-
switch (cursorValue) {
40-
case Cursor::Arrow:
41-
cursor = [NSCursor arrowCursor];
42-
break;
43-
case Cursor::ClosedHand:
44-
cursor = [NSCursor closedHandCursor];
45-
break;
46-
case Cursor::ContextualMenu:
47-
cursor = [NSCursor contextualMenuCursor];
48-
break;
49-
case Cursor::Crosshair:
50-
cursor = [NSCursor crosshairCursor];
51-
break;
52-
case Cursor::DisappearingItem:
53-
cursor = [NSCursor disappearingItemCursor];
54-
break;
55-
case Cursor::DragCopy:
56-
cursor = [NSCursor dragCopyCursor];
57-
break;
58-
case Cursor::DragLink:
59-
cursor = [NSCursor dragLinkCursor];
60-
break;
61-
case Cursor::IBeam:
62-
cursor = [NSCursor IBeamCursor];
63-
break;
64-
case Cursor::IBeamCursorForVerticalLayout:
65-
cursor = [NSCursor IBeamCursorForVerticalLayout];
66-
break;
67-
case Cursor::OpenHand:
68-
cursor = [NSCursor openHandCursor];
69-
break;
70-
case Cursor::OperationNotAllowed:
71-
cursor = [NSCursor operationNotAllowedCursor];
72-
break;
73-
case Cursor::PointingHand:
74-
cursor = [NSCursor pointingHandCursor];
75-
break;
76-
case Cursor::ResizeDown:
77-
cursor = [NSCursor resizeDownCursor];
78-
break;
79-
case Cursor::ResizeLeft:
80-
cursor = [NSCursor resizeLeftCursor];
81-
break;
82-
case Cursor::ResizeLeftRight:
83-
cursor = [NSCursor resizeLeftRightCursor];
84-
break;
85-
case Cursor::ResizeRight:
86-
cursor = [NSCursor resizeRightCursor];
87-
break;
88-
case Cursor::ResizeUp:
89-
cursor = [NSCursor resizeUpCursor];
90-
break;
91-
case Cursor::ResizeUpDown:
92-
cursor = [NSCursor resizeUpDownCursor];
93-
break;
94-
}
95-
96-
return cursor;
97-
}
98-
#endif // macOS]
99-
10035
@implementation RCTViewComponentView {
10136
RCTUIColor *_backgroundColor; // [macOS]
10237
CALayer *_borderLayer;
@@ -176,18 +111,6 @@ - (void)setBackgroundColor:(RCTUIColor *)backgroundColor // [macOS]
176111
_backgroundColor = backgroundColor;
177112
}
178113

179-
#if TARGET_OS_OSX // [macOS
180-
- (void)resetCursorRects
181-
{
182-
[self discardCursorRects];
183-
if (_props->cursor != Cursor::Auto)
184-
{
185-
NSCursor *cursor = NSCursorFromCursor(_props->cursor);
186-
[self addCursorRect:self.bounds cursor:cursor];
187-
}
188-
}
189-
#endif // macOS]
190-
191114
#pragma mark - RCTComponentViewProtocol
192115

193116
+ (ComponentDescriptorProvider)componentDescriptorProvider
@@ -347,7 +270,11 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &
347270

348271
// `cursor`
349272
if (oldViewProps.cursor != newViewProps.cursor) {
350-
needsInvalidateLayer = YES;
273+
#if !TARGET_OS_OSX // [macOS]
274+
needsInvalidateLayer = YES; // `cursor`
275+
#else // [macOS
276+
_cursor = NSCursorFromCursor(newViewProps.cursor);
277+
#endif // macOS]
351278
}
352279

353280
// `shouldRasterize`
@@ -544,13 +471,6 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &
544471
}
545472
}
546473

547-
// `cursor`
548-
if (oldViewProps.cursor != newViewProps.cursor) {
549-
_cursor = nil;
550-
if (newViewProps.cursor.has_value()) {
551-
_cursor = RCTNSCursorFromCursor(newViewProps.cursor.value());
552-
}
553-
}
554474
#endif // macOS]
555475

556476
_needsInvalidateLayer = _needsInvalidateLayer || needsInvalidateLayer;
@@ -753,13 +673,17 @@ static RCTBorderStyle RCTBorderStyleFromBorderStyle(BorderStyle borderStyle)
753673
}
754674

755675
#if TARGET_OS_OSX // [macOS
756-
static NSCursor *NSCursorFromCursor(Cursor cursor)
676+
static NSCursor *NSCursorFromCursor(Cursor cursor)
757677
{
758678
switch (cursor) {
759-
case Cursor::Auto:
760-
return [NSCursor arrowCursor];
761679
case Cursor::Alias:
762680
return [NSCursor dragLinkCursor];
681+
case Cursor::Arrow:
682+
return [NSCursor arrowCursor];
683+
case Cursor::Auto:
684+
return [NSCursor arrowCursor];
685+
case Cursor::ClosedHand:
686+
return [NSCursor closedHandCursor];
763687
case Cursor::ColumnResize:
764688
return [NSCursor resizeLeftRightCursor];
765689
case Cursor::ContextualMenu:
@@ -772,20 +696,34 @@ static RCTBorderStyle RCTBorderStyleFromBorderStyle(BorderStyle borderStyle)
772696
return [NSCursor arrowCursor];
773697
case Cursor::DisappearingItem:
774698
return [NSCursor disappearingItemCursor];
699+
case Cursor::DragCopy:
700+
return [NSCursor dragCopyCursor];
701+
case Cursor::DragLink:
702+
return [NSCursor dragLinkCursor];
775703
case Cursor::EastResize:
776704
return [NSCursor resizeRightCursor];
777705
case Cursor::Grab:
778706
return [NSCursor openHandCursor];
779707
case Cursor::Grabbing:
780708
return [NSCursor closedHandCursor];
709+
case Cursor::IBeam:
710+
return [NSCursor IBeamCursor];
711+
case Cursor::IBeamCursorForVerticalLayout:
712+
return [NSCursor IBeamCursorForVerticalLayout];
781713
case Cursor::NorthResize:
782714
return [NSCursor resizeUpCursor];
783715
case Cursor::NoDrop:
784716
return [NSCursor operationNotAllowedCursor];
785717
case Cursor::NotAllowed:
786718
return [NSCursor operationNotAllowedCursor];
719+
case Cursor::OpenHand:
720+
return [NSCursor openHandCursor];
721+
case Cursor::OperationNotAllowed:
722+
return [NSCursor operationNotAllowedCursor];
787723
case Cursor::Pointer:
788724
return [NSCursor pointingHandCursor];
725+
case Cursor::PointingHand:
726+
return [NSCursor pointingHandCursor];
789727
case Cursor::RowResize:
790728
return [NSCursor resizeUpDownCursor];
791729
case Cursor::SouthResize:
@@ -796,11 +734,22 @@ static RCTBorderStyle RCTBorderStyleFromBorderStyle(BorderStyle borderStyle)
796734
return [NSCursor IBeamCursorForVerticalLayout];
797735
case Cursor::WestResize:
798736
return [NSCursor resizeLeftCursor];
737+
case Cursor::ResizeDown:
738+
return [NSCursor resizeDownCursor];
739+
case Cursor::ResizeLeft:
740+
return [NSCursor resizeLeftCursor];
741+
case Cursor::ResizeLeftRight:
742+
return [NSCursor resizeLeftRightCursor];
743+
case Cursor::ResizeRight:
744+
return [NSCursor resizeRightCursor];
745+
case Cursor::ResizeUp:
746+
return [NSCursor resizeUpCursor];
747+
case Cursor::ResizeUpDown:
748+
return [NSCursor resizeDownCursor];
799749
}
800750
}
801751
#endif // macOS]
802752

803-
804753
- (void)invalidateLayer
805754
{
806755
CALayer *layer = self.layer;

packages/react-native/ReactCommon/react/renderer/components/view/primitives.h

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,22 +92,37 @@ enum class BorderCurve : uint8_t { Circular, Continuous };
9292
enum class BorderStyle : uint8_t { Solid, Dotted, Dashed };
9393

9494
// [macOS [visionOS]
95-
enum class Cursor : uint8_t {
96-
Auto,
95+
enum class Cursor : uint8_t {
9796
Alias,
97+
Arrow,
98+
Auto,
99+
ClosedHand,
98100
ColumnResize,
99101
ContextualMenu,
100102
Copy,
101103
Crosshair,
102104
Default,
103105
DisappearingItem,
106+
DragCopy,
107+
DragLink,
104108
EastResize,
105109
Grab,
106110
Grabbing,
107-
NorthResize,
111+
IBeam,
112+
IBeamCursorForVerticalLayout,
108113
NoDrop,
114+
NorthResize,
109115
NotAllowed,
116+
OpenHand,
117+
OperationNotAllowed,
110118
Pointer,
119+
PointingHand,
120+
ResizeDown,
121+
ResizeLeft,
122+
ResizeLeftRight,
123+
ResizeRight,
124+
ResizeUp,
125+
ResizeUpDown,
111126
RowResize,
112127
SouthResize,
113128
Text,

0 commit comments

Comments
 (0)