Repository navigation
fix(macos): invert inverted lists on the new architecture - #3148
Open
Bron Davies (brondavies) wants to merge 1 commit into
Open
Bron Davies (brondavies) wants to merge 1 commit into
Bron Davies (brondavies) wants to merge 1 commit into
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Fixes #3147. On the new architecture a macOS
ScrollViewhas noinvertedprop, andVirtualizedListleaves out its inversion style on macOS, so an inverted list isn't inverted.VirtualizedListuses the inversion style on macOS under the new architecture, as on iOS. Layout and measurement (measureInWindow) then match what's drawn.RCTScrollViewComponentViewturns a verticalscaleY(-1)into flipped coordinates rather than a layer transform:scaleY(-1)is left off.AppKit then hit-tests, tracks hover and scrolls with the wheel the right way. A content offset still counts from the first item.
Turning
invertedon or off re-sets the document view, because the clip view reads its document's flippedness only then. The view also sends the settled scroll offset afterwards.Horizontal inverted lists keep the layer transform.
Test Plan:
RNTester-macOS (Debug, arm64, Xcode 27.1, macOS 26.6.2). The Playground had an inverted
FlatListof 30Pressablerows, 40pt each, in a 300pt list, with theonScrolloffset shown above it.main, Item 0 is at the top.onScrollboth report offset 90.measureInWindowputs Item 5 returns Item 5's view, which is where it's drawn.It's the same in an app on 0.83.0, where the inverted list is a chat that switches
invertedon once its first messages arrive.