Skip to content

Add cursor style to Text - #1469

Merged
Saad Najmi (Saadnajmi) merged 5 commits into
microsoft:mainfrom
shwanton:text-view-cursor
Nov 16, 2022
Merged

Add cursor style to Text#1469
Saad Najmi (Saadnajmi) merged 5 commits into
microsoft:mainfrom
shwanton:text-view-cursor

Conversation

@shwanton

@shwantonShawn Dempsey (shwanton) commented Nov 4, 2022

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

#760 Added support for changing cursor styles for views.
#1346 changed RCTTextView to use NSTextView api's with support for customizing cursor.

Differential Revision: https://phabricator.intern.facebook.com/D28162138

Change-log

[macOS][Added] - Add cursor styles to Text View

Test Plan

CleanShot.2022-11-03.at.17.40.23.mp4

Summary: We need this for URLs to show a pointer cursor as we render URLs as Text in Messenger Desktop.
Test Plan:
RNTester > Text:
{F612914000}
Reviewers: skyle
Reviewed By: skyle
Subscribers: eliwhite
Differential Revision: https://phabricator.intern.facebook.com/D28162138
Tasks: T78743077
Signature: 28162138:1620330813:8d90a29258ff560df30403fda9ce04df430caee9
Comment threadLibraries/Text/Text/RCTTextView.m
Comment threadLibraries/Text/VirtualText/RCTVirtualTextViewManager.m
@Saadnajmi

Copy link
Copy Markdown
Collaborator

Any blocker for this one?

@shwanton

Copy link
Copy Markdown
Author

This is ready! Just had a lint fix.

@Saadnajmi

Copy link
Copy Markdown
Collaborator

This is ready! Just had a lint fix.

Can you mark it as not a draft so I can merge it? :)

@shwanton
Shawn Dempsey (shwanton) marked this pull request as ready for review November 16, 2022 17:56
@shwanton

Copy link
Copy Markdown
Author

Oops, my bad! 😅

@Saadnajmi
Saad Najmi (Saadnajmi) merged commit 6df7db1 into microsoft:mainNov 16, 2022
@christophpurrer

Copy link
Copy Markdown

Great to see this merged!

@shwanton
Shawn Dempsey (shwanton) deleted the text-view-cursor branch December 16, 2022 00:52
Facebook Community Bot (facebook-github-bot) pushed a commit to react/react-native that referenced this pull request Mar 5, 2024
Summary:
Implement the cursor style prop for iOS (and consequently, visionOS), as described in this RFC: react-native-community/discussions-and-proposals#750
See related PR in React Native macOS, where we target macOS and visionOS (not running in iPad compatibility mode) with the same change: microsoft#2080
Docs update: react/react-native-website#4033
## Changelog:
[IOS] [ADDED] - Implement cursor style prop
Pull Request resolved: #43078
Test Plan:
See the added example page, running on iOS with the new architecture enabled. This also runs the same on the old architecture.
https://github.com/facebook/react-native/assets/6722175/2af60a0c-1c1f-45c4-8d66-a20f6d5815df
See the example page running on all three apple platforms. The JS is slightly different because:
1. The "macOS Cursors" example is not part of this PR but the one in React Native macOS.
2. This PR (and exapmple) has went though a bunch of iterations and It got hard taking videos of every change 😅
https://github.com/facebook/react-native/assets/6722175/7775ba7c-8624-4873-a735-7665b94b7233
## Notes
- React Native macOS added the cursor prop to View with microsoft#760 and Text with microsoft#1469 . Much of the implementation comes from there.
- Due to an Apple bug, as of iOS 17.4 Beta 4, the shape of the iOS cursor hover effect doesn't render in the correct bounds (but it does on visionOS). I've worked around it with an ifdef. The result is that the hover effect will work on iOS and visionOS, but not iPad apps running in compatibility mode on visionOS.
Reviewed By: NickGerleman
Differential Revision: D54512945
Pulled By: vincentriemer
fbshipit-source-id: 699e3a01a901f55a466a2c1a19f667aede5aab80
Alex Hunt (huntie) pushed a commit to react/react-native that referenced this pull request Mar 11, 2024
Summary:
Implement the cursor style prop for iOS (and consequently, visionOS), as described in this RFC: react-native-community/discussions-and-proposals#750
See related PR in React Native macOS, where we target macOS and visionOS (not running in iPad compatibility mode) with the same change: microsoft#2080
Docs update: react/react-native-website#4033
## Changelog:
[IOS] [ADDED] - Implement cursor style prop
Pull Request resolved: #43078
Test Plan:
See the added example page, running on iOS with the new architecture enabled. This also runs the same on the old architecture.
https://github.com/facebook/react-native/assets/6722175/2af60a0c-1c1f-45c4-8d66-a20f6d5815df
See the example page running on all three apple platforms. The JS is slightly different because:
1. The "macOS Cursors" example is not part of this PR but the one in React Native macOS.
2. This PR (and exapmple) has went though a bunch of iterations and It got hard taking videos of every change 😅
https://github.com/facebook/react-native/assets/6722175/7775ba7c-8624-4873-a735-7665b94b7233
## Notes
- React Native macOS added the cursor prop to View with microsoft#760 and Text with microsoft#1469 . Much of the implementation comes from there.
- Due to an Apple bug, as of iOS 17.4 Beta 4, the shape of the iOS cursor hover effect doesn't render in the correct bounds (but it does on visionOS). I've worked around it with an ifdef. The result is that the hover effect will work on iOS and visionOS, but not iPad apps running in compatibility mode on visionOS.
Reviewed By: NickGerleman
Differential Revision: D54512945
Pulled By: vincentriemer
fbshipit-source-id: 699e3a01a901f55a466a2c1a19f667aede5aab80
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@shwanton@Saadnajmi@christophpurrer@lyahdav